Реферальный спам и защита от него на nginx

Серверы Зотиков Сергей

Начиная с конца 2014 года в статистике на многих сайтах стали появляться переходы с реферальными ссылками и 100% отказами.

Стоит отметить, что представители поисковиков заверяют, что поисковые системы научились распознавать подобный спам и он не влияет на показатели сайтов.

Хочется в это верить, но как говорится, «береженого Бог бережет». С помощью простой настройки сервера можно избавиться от подобного спама в статистике.

Если вы используете nginx, то для борьбы со спамом выполните следующее:

  1. В блок http в основном конфиге nginx – /etc/nginx/nginx.conf добавьте директиву map:
nginx
http {
    map $http_referer $bad_referer {
        default 0;
        include /etc/nginx/bad_referer.map;
    }
}
  1. Создайте в каталоге /etc/nginx файл для хранения плохих сайтов, назовите его bad_referer.map, добавьте в файл правила для блокировки, мой список такой:
nginx
"~*get-your-social-buttons.com" 1;
"~*snip.to" 1;
"~*semalt.com" 1;
"~*copyrightclaims.org" 1;

Домены для бана я смотрел в Google Analytics, пример на картинке ниже.

google analytics referral spam
google analytics referral spam
  1. В конфиге для сайта добавьте правило для блокировки, у меня конфиг хранится в файле /etc/nginx/sites-available/myitstuff.ru, правило следующее:
nginx
if ($bad_referer) {
    return 444;
}
  1. Перезагрузите nginx:
$/etc/init.d/nginx restart
  1. Проверьте, работает правило или нет, для этого в консоли выполните команду:
$curl -e "http://www.copyrightclaims.org" "https://myitstuff.ru"

Первый домен должен быть из списка блокируемых, а второй – вашего сайта. Если вы увидите не html код своего сайта, а сообщение:

curl: (52) Empty reply from server

значит защита сработала.

referral spam protection
referral spam protection

Для выполнения команды проверки нужен cURL, если он не установлен, то установите его:

$apt-get install curl

В итоге при запросе с рефсайтами nginx выдаст 444 ошибку, статистика метрик не сработает, следовательно, подобные ссылки не попадут в статистику. Использование ответа 444, а не более традиционного 301, обусловлено большей скоростью выполнения первого.

Комментарии

Поддерживаются `код`, **жирный**, *курсив* и блоки кода

Как оформить
ПишетеПолучится
`npm install`код в строке: npm install
```bash
npm install
npm run build
```
блок кода: три обратные кавычки — отдельной строкой до и после кода; язык подсветки (bash, php, sql) — по желанию, сразу после первых кавычек
**важно**важно
*термин*термин
https://example.comссылка: адрес достаточно вставить как есть
Наверх