Как избавиться от реферального и поискового спама
Мы спасли клиента от реферального и поискового спама. Спасением занимались 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]
…
Работает!
Теперь сканируем все запросы, расшифровываем их, и создаем фильтр. Итоговый результат вот такой:
После наших действий почти всему спам-трафику сервер стал отдавать 443 ответ (доступ запрещен). Вскоре атака прекратилась.
Хоть поддержка Яндекса и написала нам, что на результаты поиска это не повлияет, но сидеть сложа руки мы не смогли.
Вывод: важно следить за сайтом и вовремя предпринимать действия.
Сталкивались ли вы с такой ситуацией? Как боролись?