Как избавиться от реферального и поискового спама

Автор: Александр Лощев 816
Как избавиться от реферального и поискового спама

Мы спасли клиента от реферального и поискового спама. Спасением занимались 10 дней. За это время успели забанить 31 адрес, разработать формулу блокировки спам-трафика, чуть не поссориться с Яндексом и найти верное решение.

От атак в наше время не застрахован никто. Интернет теперь доступен не только «технической интеллигенции», но и любой «золотой» молодежи с района.

Расскажем о своем опыте отражении атаки на сайт с помощью реферального спама.

Даже не так. Не просто реферального спама, а спама запросами с поисковых систем!

Предыстория

Мы постоянно следим за клиентскими сайтами с помощью Яндекс.Метрики и Google Analytics, поэтому выросший в четыре раза трафик заметили в тот же день.

Всплеск трафика от ботов

Дело было 11 января, сразу после праздников. Так как сайт промышленный и ориентированный на 2b2, то можете видеть на графике почти нулевую посещаемость в праздники.

После анализа лог-файлов сервера мы выяснили, что трафик идет с десятка ip-адресов и успешно их забанили:

Deny from 93.185.29.200
Deny from 94.188.33.45
Deny from 178.141.11.102
Deny from 188.168.27.190

Deny from 83.69.0.51
Deny from 2.62.175.83
Deny from 188.186.51.237

12 января трафик пришел в норму. «Ура!» — подумали мы. Но, как вы уже догадались, рано радоваться:)

О трафике

Прежде чем продолжить, хочу рассказать о самом трафике. Очень интересный момент.

С первого взгляда такой трафик выглядит, как рефспам.
Реферальный спам — это негативный трафик, созданный ботами, которые подменяют HTTP_REFERER (источник). Системы аналитики интерпретируют этого бота, как человека, который перешел с определенного сайта. На графике ниже это желтая линия.

Распределение трафика

Но если посмотреть внимательнее, то увидим, что трафик делится на 4 относительно равных части. На реферальные переходы с других сайтов, на трафик с Яндекса, на трафик и Google и не поверите с Rambler 😀

Будем называть это поисковым спамом.

Самое интересное, с поисковиков идут не просто переходы, а определенные запросы:

Спам запросы с Гугла Спам запросы с Яндекса

Первая мысль: «Геи с трубами?! Серьезно!?». Вторая: «Нас же сейчас поисковики забанят за ужасные поведенческие факторы!»

В темпе написали в Яндекс.Вебмастер и Метрику, на что получили стандартную отписку:

Ответ поддержки Яндекс Вебмастера Ответ поддержки Яндекс Метрики

Успокаивает? Нас нет. Кстати, после строгой фильтрации роботов ситуация не поменялась никак в Метрике. Одним словом Яндекс решения никакого не имеет на такой случай.

Продолжение истории

Проанализировав еще раз логи, мы поняли, что банить по ip — дело неблагодарное, так как теперь айпишники не повторяются вовсе. Решили банить по доменам, составили список самых популярных источников и забанили. Но ситуацию это не не изменило — **ведь у нас 3\4 трафика это трафик с поисковых систем!**

Начали писать правила для .htaccess
Начали с

RewriteCond %{HTTP_REFERER} «viagra|gemorroy|pohudenie|sex|porn» [NC, OR]
RewriteCond %{HTTP_REFERER} dota2\.ru|porn0sex\.net|ria\.ru|theporndude\.com|yaporn\.tv|porno-720hd\.online|audiosex18\.ru|treasureinlove\.com|timelady\.ru|theporndude\.com [NC]
RewriteRule ^(.*)$ — [F]

Пришли к промежуточному решению:

RewriteEngine On
RewriteCond %{HTTP_REFERER} ^(.*)(<|>|’|%0A|%0D|%27|%3C|%3E|%00).* [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://(www\.)?.*(-|.)?porn(-|.).*$ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://(www\.)?.*(-|.)?sex(-|.).*$ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://(www\.)?.*(-|.)?drugs(-|.).*$ [NC]
RewriteRule ^(.*)$ — [F,L]

Но кириллические запросы все равно не фильтровало.
Можете даже не пробовать писать вместо «sex» слово «секс» — не работает.

Избавляемся от нежелательно трафика с поисковых систем

От поисковиков шли вот такие запросы:

http://www.google.ru/url?sa=t&rct=j&q=%D0%BF%D0%BE%D1%80%D0%BD%D0%BE+
%D1%84%D0%B8%D0%BB%D1%8C%D0%BC%D1%8B&esrc=s&source=web и дальше адрес сайта, куда идет редирект.

Тут нас интересует то, что написано после &q=

Если расшифровать это с помощью http://planetcalc.ru/2135/ — то получим q=порно+фильмы

Пробуем теперь это знание применить в htaccess:

RewriteCond %{HTTP_REFERER} ^http://(www\.)?.*(-|.)?%D0%BF%D0%BE%D1%80%D0%BD%D0%BE(-|.)?.*$ [NC,OR]

Работает!

Теперь сканируем все запросы, расшифровываем их, и создаем фильтр. Итоговый результат вот такой:

Настроенный на фильтрацию спама htaccess

После наших действий почти всему спам-трафику сервер стал отдавать 443 ответ (доступ запрещен). Вскоре атака прекратилась.

Хоть поддержка Яндекса и написала нам, что на результаты поиска это не повлияет, но сидеть сложа руки мы не смогли.

Вывод: важно следить за сайтом и вовремя предпринимать действия.

Сталкивались ли вы с такой ситуацией? Как боролись?