Для блокировки по гео-данным можно использовать много разных механизмов, библиотек и сервисов, в зависимости от нагрузки на ваш сайт, какие модули включены у вас на хостинге, и на каком языке программирования работает ваше веб-приложение (ваш сайт). Чтобы подобрать подходящее для вас, можно поискать в гугле поисковым запросом «[ваш язык программирования] geoip github».
Ну по факту-то скручивать ПФ ходят из местных сетей - "метрополитен", tele2 и ещё парочка. Заблочить бурж - толку не будет.
Мы вообще проводили эксперимент: откровенно ботовые сетки выводили на поддомен. Потом выяснилось, что людей туда многовато залетало, а толку для ПФ не оказалось от слова совсем. Это всё равно что воду решетом носить.
Проблема в том, что нормальную накрутку не выкупишь, нет пока ни единого алгоритма.
С моей точки зрения единственный способ - периодически обнулять ПФ, если они совсем свалились в негатив. Да, криво и коряво, да, ущерб для Гугла - некоторый. Но если нужны позиции в Яндекс - я других вариантов не вижу.
И каким образом обнуляете пф ?
Лично мне кажется, что даже 30-100 переходов в месяц, с нулевым пребыванием на сайте, они докинут в копилку отрицательного ПФ. Потому от него лучше избавиться. Это, хоть чуть, но может помочь. Каждый день, один два робота заходят к вам из других стран. Известны ли они яше и гуглу как роботы, хрен их знает, как они учитываются тоже не известно.
Если модуль GeoIP установлен на сервере, то тогда можно блокировать и перенаправлять пользователей из других стран с помощью файла .htaccess:
GeoIPEnable On
GeoIPDBFile (Путь к файлу: GeoIP.dat)
SetEnvIf GEOIP_COUNTRY_CODE AS BlockCountry
SetEnvIf GEOIP_COUNTRY_CODE US BlockCountry
Deny from env=BlockCountry
Ну, а если на сервере не установлен GeoIP, то тогда можно воспользоваться API сервиса Sypex Geo. Потом просто можно делать GET-запросы и перенаправлять или блокировать пользователей из других стран.
Для тех, у кого не установлен GeoIP на сервере, пользователей из других стран можно блокировать следующим образом:
<?php
$is_bot = preg_match(
"~(Google|Yahoo|Rambler|Bot|Yandex|Spider|Snoopy|Crawler|Finder|Mail|curl)~i",
$_SERVER['HTTP_USER_AGENT']
);
$geo = !$is_bot ? json_decode(file_get_contents('http://api.sypexgeo.net/json/'), true) : [];
switch ($geo['country']['name_en']) {
case 'Germany':
header('Location: https://yandex.ru/');
break;
case 'Poland':
header('Location: https://yandex.ru/');
break;
default:
echo 'Все, ништяк!';
break;
}
?>
Google|Yahoo|Rambler|Bot|Yandex|Spider|Snoopy|Crawler|Finder|Mail|curl - это боты, которых данный скрипт будет пропускать независимо от страны.
Там, где Germany и Poland - вы можете написать любую страну. Добавлять страны тоже можно сколько угодно. Ну, а вместо редиректа на Yandex можно создать страницу с информацией об ограничение доступа и уже туда редиректить всех зарубежных пользователей.
Здесь получился хороший гайд собрался )
на сайт диснейленда чтобы переправляло надо еще написать ))
Можно никого и никуда не перенаправлять. Например, с тем кодом, что написал - можно вообще, как угодно играться:
<?php
$is_bot = preg_match(
"~(Google|Yahoo|Rambler|Bot|Yandex|Spider|Snoopy|Crawler|Finder|Mail|curl)~i",
$_SERVER['HTTP_USER_AGENT']
);
$geo = !$is_bot ? json_decode(file_get_contents('http://api.sypexgeo.net/json/'), true) : [];
switch ($geo['country']['name_en']) {
case 'Russia':
print "IP-адрес: {$geo['ip']}";
print "Страна: {$geo['country']['name_ru']}";
print "Регион: {$geo['region']['name_ru']}";
print "Город: {$geo['city']['name_ru']}";
break;
default:
header('HTTP/1.0 404 Forbidden');
break;
}
?>
Теперь вместо редиректа для всех пользователей, кто не из России - скрипт будет отдавать 403 ошибку (доступ запрещен).