Недавно обратился ко мне радостный клиент с вопросом, говорит, на сайте, который только-только запустился, начал появляться траффик от реферреров, только вот непонятно что за сайты такие, прошёл по ним, а там — El Zilcho.
Оказывается, это такой новый молодёжно-современный вид спама — «Referrer Spam».
Осторожно, под катом картинки, google analytics и немного быдлокода на php.
Такой вид спама актуален, конечно же, не только для гугловой аналитики, просто привожу её как пример. Итак, что это такое:
Все эти рефереры не настоящие, китайская подделка. Мешают статистике и дают ложную надежду честным людям.
Можно их забанить где-нибудь на сервере, в коде, фаерволе или в конфигах веб-сервера.
В nginx это делается очень просто, в документации есть: wiki.nginx.org/Referrer_Spam_Blocking
Остаётся дописать наших плохих рефереров и готово. Красиво, но скучно, мы лёгких путей не ищем, да и потом тяжело будет клиенту это самому менять.
GA позволяет фильтровать аналитику по различным параметрам, руками это можно сделать следующим образом:
Руками тоже скучно. Проделывать это придётся для всех клиентов, для всех сайтов. Ударим автоматизацией по разгильдяйству, напишем скриптик, который будет это делать.
Для начала надо зарегистрировать проект в консоли у гугла по адресу: console.developers.google.com/project.
Далее включаем Analytics API
Нам понадобится разрешение пользователя, потому идём в consent screen, выбираем имейл и пишем название. Важно чтобы этот шаг был сделан до генерирования ид и секрета. Далее генерируем Client ID:
Ну и наконец-то можно добраться до кода. Накопипастим кусков из демонстраций и манулалов, самое важное:
$details = new Google_Service_Analytics_FilterExpression();
$details->setField('CAMPAIGN_SOURCE');
$details->setMatchType('MATCHES');
$details->setExpressionValue('регекс с доменами, которые надо заигнорить');
$details->setCaseSensitive(false);
$filter->setExcludeDetails($details);
$analytics->management_filters->insert($accountId, $filter);
Занятная особенность GA в том, что регекс с доменами не может быть длиннее 255 символов, потому, если вдруг он длиннее, то нужно разбивать на несколько.
Полный код на гитхабе, вписываем свои ключики, авторизуем гугловым акаунтом и готово.
Всё, что нам остаётся сделать, это выбрать в каких представлениях будем фильтровать (я фильтрую везде, хоть некоторые и не рекомендуют). Для этого заходим в google analytics, выбираем аккаунт, Admin -> All filters -> Exclude Referrer Spam #… -> Apply Filter to Views -> выбираем необходимые вью, которые хотим отфильтровать и ждём, к сожалению фильтры сразу не применяются, но в будущем они появляться не будут.
Комментарии (23)
dmitryrublev
12.05.2015 17:15Кстати, есть ещё один вид спама, который на уровне сервера нет смысла банить — реального захода на сайт вообще не делают.
Спам идёт на уровне гуглового аналитикса. Злоумышленник генерирует случайные айдишники аналитики, и скриптом шлёт информацию о переходе на ваш с сайт, подставляя поддельный реферер. Можно почитать по этой теме, загуглив «Ghost spam». Проблеме уже около полугода.
В большинстве случаев, всплывает «iLoveVitaly prOject», и связанные с ним сайты. К нему же относятся рефереры с поддельным поисковым запросом приблизительно такого вида: «vitaly rules google?*:.?.????(^?^)????.?.:*? ?_(?)/?(•?•?)(???)(???)(???)?(?_??)( ?° ?? ?°)?(?д?)??•??•?? ????(=^. .^=)oo»
Не то, чтобы что-то грандиозное, но временами бесит — как один человек может засрать кучу статистики своими говносайтами.
waleks
12.05.2015 17:56+3По идее эту проблему должна решать Google, у них есть все данные, чтобы хотя бы частично фильтровать подобный спам.
iliasm Автор
12.05.2015 21:50Они похоже это и пытаются сделать, во view settings конкретного property есть такая вот галочка:
по моей логике она и должна была бы их отфильтровать, но вот не получилось.
Subudayj
12.05.2015 18:41+1Проблема может быть решена полностью только на стороне Google, ничто не мешает спамерам менять рекламируемые домены хоть по 100 раз в день.
Если хотите чуть-чуть усложнить жизнь реф-спамерам Google Analytics, то сделайте следующее:
1) Модификация js-кода вызова GA, которая не влияет на функционал. Например, вместо идентификатора 'UA-1234567-1' можно написать 'UA-123' + '4567-1'. Если реф-спамеры парсят главные страницы веб-сайтов, то я на 99% уверен что они не смогут автоматически распарсить что-либо подобное
2) Код GA можно получить простым перебором значений, поэтому можно попробовать добавить несколько Properties в GA, чтобы порядковый номер нужного Properties был больше 1 (например, 'UA-1234567-2'). Спамерам придется перебирать x2 (в самом простом варианте) раза больше значений для охвата всех возможных значений id GAbarabanus
13.05.2015 12:39+1Эти спаммеры, как правило, никакие сайты не парсят, а просто перебирают коды. Причем в ссылку реферрера они могут вставлять уникальные идентификаторы, по которым можно вычислить, откуда на них зашли.
bstnd
12.05.2015 23:52+1А что дает спамерам такой трафик?
iliasm Автор
13.05.2015 09:50Единственное что мне приходит в голову — это спам веб-мастерам, при чём частенько отчаянным и новичкам, которые сильно концентрируются на таких вещах, идея что кто-то из них зайдёт, а там им можно будет что-нибудь около-сеошнео продать за небывало низкую цену. низко, но на то он и спам
ozgg
14.05.2015 15:01Некоторое время назад при заходе на эти сайты была переадресация на Ali Express с реферальной ссылкой. Не знаю, насколько удачным был этот «эксперимент», но дискомфорта вся эта фигня доставляет много.
Я уже даже боюсь предположить, сколько человек хотят найти этого Виталия и нанести ему телесные повреждения.
VDG
13.05.2015 02:33+2| В nginx это делается очень просто
Просто, но бестолку, потому что каждый день приходят новые боты с новыми рефами. Да, они не зайдут уже второй раз, но достаточно и одной пачки с одного рефа в 10 отказов, чтобы тот же Яндекс резко понизил молодой сайт в выдаче. Так случилось у меня. Автоматическая фильтрация ботов в Метрике работает плохо. Боты и этот м/чудак виталя заваливали статистику отказами. ПФ просели, трафик прекратился.
После чего написал js-фильтр для любых ботов (которые выполняют js): github.com/T-igra/ItSALive Вот только с фильтром сейчас восстанавливается ПФ и возвращается трафик с поиска.iliasm Автор
13.05.2015 10:02мм, не думал об этом с такой точки зрения. если гугел и яндекс мало того что не фильтруют таких ботов, так ещё и выдачу из-за них понижают, то да, совсем беда, фильтровать в таком случае их в GA совсем-совсем плохая идея.
я вот не совсем понимаю ваш код, если спамоброузеры js выполняют, почему они не смогут выполнить этот код и загрузить метрику? ну, так же они конечно же могут подменить юзер-агент на «YandexBot» и проскочить проверку.
а новые боты с новыми рефами — может быть, но это хотя бы что-то им стоит, ну хотя бы домены регистрировать, мелочь, конечно, но всё же не бесплатноVDG
13.05.2015 21:41Посмотрите код, он элементарный. Бот просто загружает весь JS и выполняет его, но для активации счётчиков необходимо, чтобы была сдвинута мышка, а боты таким не заморачиваются.
Могут подменить юзер-агент, но ни один пока это не делает и скорее всего не будет делать, так как его цель прикинуться человеком, чтобы метрика восприняла его как человека, а не как YandexBot-а и зафиксировала в статистике.
В обсуждении Яндекса clubs.ya.ru/metrika/replies.xml?item_no=12395 вся горячка именно из-за убийства сайтов от проседания ПФ. И Яндекс уже полгода ничего не может поделать.
danikp
13.05.2015 10:13Для того чтобы засчитать хит в GA, как в общем то и в любой другой статистике, не обязательно посещать сайт, достаточно выполнить запрос к серверу учета статистики. Есть некоторые ограничения, но пытливый мозг их легко обойдет. Так что блокировка на уровне сервера — не панацея.
В любом случае, в том же GA, есть более правильная опция «Referral Exclusion List», которая находится в настройках счетчика. Добавляем туда домен и он перестает учитываться как реферрер. Тоже надо делать руками, но возможно тоже есть API для автоматизации. Из опыта, после бана первого десятка спамеров, спам спадает в 0.
Для чего такое делают? Продажа СЕО штучек новичкам (ибо кто еще будет на такое клевать) или прописывание своей реферальной куки в какой нибудь программе, например aliexperess, так как там принцип — кто первый, того и тапки. И видимо это выгодно, раз продолжают таким заниматься.
TheVS
14.05.2015 12:07+1Смотря в метрику уже обрадовался, что ко мне трафик с хабра пошёл, а тут такое. Злые вы :(
McBernar
14.05.2015 13:03Кстати, а откуда у меня в метрике трафик с этой статьи?
Что-то я совсем не пони.ozgg
14.05.2015 15:06Там на три статьи ссылки идут. Эта, собственно, третья. Первая — на searchengines.guru (или как там оно зовётся) с темой автора поделки, вторая — обсуждение в Яндекс.метрике. Ну, просто как издевательство, что никто с этим ничего не может поделать.
То есть на самом деле трафика-то и нет, просто подстановка реферера.
exelens
Спасибо, если дальше будете развивать отписывайтесь =)