Referrer spam в google analytics и как с ним бороться

от автора

Недавно обратился ко мне радостный клиент с вопросом, говорит, на сайте, который только-только запустился, начал появляться траффик от реферреров, только вот непонятно что за сайты такие, прошёл по ним, а там — 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 -> выбираем необходимые вью, которые хотим отфильтровать и ждём, к сожалению фильтры сразу не применяются, но в будущем они появляться не будут.

ссылка на оригинал статьи http://habrahabr.ru/post/257767/