Реферальный спам и защита от него на nginx
Начиная с конца 2014 года в статистике на многих сайтах стали появляться переходы с реферальными ссылками и 100% отказами.
Стоит отметить, что представители поисковиков заверяют, что поисковые системы научились распознавать подобный спам и он не влияет на показатели сайтов.
Хочется в это верить, но как говорится, «береженого Бог бережет». С помощью простой настройки сервера можно избавиться от подобного спама в статистике.
Если вы используете nginx, то для борьбы со спамом выполните следующее:
-
В блок http в основном конфиге nginx –
/etc/nginx/nginx.confдобавьте директиву map:
http {
map $http_referer $bad_referer {
default 0;
include /etc/nginx/bad_referer.map;
}
}
-
Создайте в каталоге
/etc/nginxфайл для хранения плохих сайтов, назовите егоbad_referer.map, добавьте в файл правила для блокировки, мой список такой:
"~*get-your-social-buttons.com" 1;
"~*snip.to" 1;
"~*semalt.com" 1;
"~*copyrightclaims.org" 1;
Домены для бана я смотрел в Google Analytics, пример на картинке ниже.

-
В конфиге для сайта добавьте правило для блокировки, у меня конфиг хранится в файле
/etc/nginx/sites-available/myitstuff.ru, правило следующее:
if ($bad_referer) {
return 444;
}
- Перезагрузите nginx:
$/etc/init.d/nginx restart
- Проверьте, работает правило или нет, для этого в консоли выполните команду:
$curl -e "http://www.copyrightclaims.org" "https://myitstuff.ru"
Первый домен должен быть из списка блокируемых, а второй – вашего сайта. Если вы увидите не html код своего сайта, а сообщение:
curl: (52) Empty reply from server
значит защита сработала.

Для выполнения команды проверки нужен cURL, если он не установлен, то установите его:
$apt-get install curl
В итоге при запросе с рефсайтами nginx выдаст 444 ошибку, статистика метрик не сработает, следовательно, подобные ссылки не попадут в статистику. Использование ответа 444, а не более традиционного 301, обусловлено большей скоростью выполнения первого.
Комментарии 0
Написать комментарий