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

07fb3901c0414462ba3c0926487fadf5.jpgНедавно обратился ко мне радостный клиент с вопросом, говорит, на сайте, который только-только запустился, начал появляться траффик от реферреров, только вот непонятно что за сайты такие, прошёл по ним, а там — El Zilcho.Оказывается, это такой новый молодёжно-современный вид спама — «Referrer Spam».Осторожно, под катом картинки, google analytics и немного быдлокода на php.Такой вид спама актуален, конечно же, не только для гугловой аналитики, просто привожу её как пример. Итак, что это такое:

292be4fcdda941fdb3309dbe364bd74f.jpg

Все эти рефереры не настоящие, китайская подделка. Мешают статистике и дают ложную надежду честным людям.Можно их забанить где-нибудь на сервере, в коде, фаерволе или в конфигах веб-сервера.В nginx это делается очень просто, в документации есть: wiki.nginx.org/Referrer_Spam_BlockingОстаётся дописать наших плохих рефереров и готово. Красиво, но скучно, мы лёгких путей не ищем, да и потом тяжело будет клиенту это самому менять.GA позволяет фильтровать аналитику по различным параметрам, руками это можно сделать следующим образом:

a484c9e3596640429bc66cbe7024f1da.jpg

Руками тоже скучно. Проделывать это придётся для всех клиентов, для всех сайтов. Ударим автоматизацией по разгильдяйству, напишем скриптик, который будет это делать.Для начала надо зарегистрировать проект в консоли у гугла по адресу: console.developers.google.com/project.

2204915fb4104503954fcc4d375db727.jpg

49425b4943f346c0aeb9c831c958d35a.jpg

Далее включаем Analytics API

9f70f5a45f3e47a88a8a5858732b57e2.jpg

60c87d161bd249faaa00a205d0666083.jpg

Нам понадобится разрешение пользователя, потому идём в consent screen, выбираем имейл и пишем название. Важно чтобы этот шаг был сделан до генерирования ид и секрета. Далее генерируем Client ID:

6c1a0cc457ff4196b1983334c65d8571.jpg

52966bcf26b748ff8a361448c4ad00e7.jpg

2ac1cf3801ee44f4b28544228c304c00.jpg

Ну и наконец-то можно добраться до кода. Накопипастим кусков из демонстраций и манулалов, самое важное:

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

© Habrahabr.ru