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 -> выбираем необходимые вью, которые хотим отфильтровать и ждём, к сожалению фильтры сразу не применяются, но в будущем они появляться не будут.
    Share post
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 24

      0
      Спасибо, если дальше будете развивать отписывайтесь =)
        0
        Кстати, есть ещё один вид спама, который на уровне сервера нет смысла банить — реального захода на сайт вообще не делают.
        Спам идёт на уровне гуглового аналитикса. Злоумышленник генерирует случайные айдишники аналитики, и скриптом шлёт информацию о переходе на ваш с сайт, подставляя поддельный реферер. Можно почитать по этой теме, загуглив «Ghost spam». Проблеме уже около полугода.

        В большинстве случаев, всплывает «iLoveVitaly prOject», и связанные с ним сайты. К нему же относятся рефереры с поддельным поисковым запросом приблизительно такого вида: «vitaly rules google☆*:.。.゚゚・ヽ(^ᴗ^)丿・゚゚.。.:*☆ ¯_(ツ)/¯(•ิ•ิ)(ಠ益ಠ)(ಥ‿ಥ)(ʘ‿ʘ)ლ(ಠ_ಠლ)( ͡° ͜ʖ ͡°)ヽ(゚д゚)ノʕ•̫͡•ʔᶘ ᵒᴥᵒᶅ(=^. .^=)oo»

        Не то, чтобы что-то грандиозное, но временами бесит — как один человек может засрать кучу статистики своими говносайтами.
          0
          да, вот как раз сегодня пока писал увидел эту штуку на одном из сайтов, добавлю что-нибудь такое в фильтр
            +1
            С автором можно пообщаться тут
              0
              Мда, не удивлён. Спасибо за ссылку.
          +3
          По идее эту проблему должна решать Google, у них есть все данные, чтобы хотя бы частично фильтровать подобный спам.
            0
            Они похоже это и пытаются сделать, во view settings конкретного property есть такая вот галочка:

            по моей логике она и должна была бы их отфильтровать, но вот не получилось.
            +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 GA
              +1
              Эти спаммеры, как правило, никакие сайты не парсят, а просто перебирают коды. Причем в ссылку реферрера они могут вставлять уникальные идентификаторы, по которым можно вычислить, откуда на них зашли.
              +1
              А что дает спамерам такой трафик?
                0
                Единственное что мне приходит в голову — это спам веб-мастерам, при чём частенько отчаянным и новичкам, которые сильно концентрируются на таких вещах, идея что кто-то из них зайдёт, а там им можно будет что-нибудь около-сеошнео продать за небывало низкую цену. низко, но на то он и спам
                  0
                  Некоторое время назад при заходе на эти сайты была переадресация на Ali Express с реферальной ссылкой. Не знаю, насколько удачным был этот «эксперимент», но дискомфорта вся эта фигня доставляет много.

                  Я уже даже боюсь предположить, сколько человек хотят найти этого Виталия и нанести ему телесные повреждения.
                  +2
                  | В nginx это делается очень просто

                  Просто, но бестолку, потому что каждый день приходят новые боты с новыми рефами. Да, они не зайдут уже второй раз, но достаточно и одной пачки с одного рефа в 10 отказов, чтобы тот же Яндекс резко понизил молодой сайт в выдаче. Так случилось у меня. Автоматическая фильтрация ботов в Метрике работает плохо. Боты и этот м/чудак виталя заваливали статистику отказами. ПФ просели, трафик прекратился.

                  После чего написал js-фильтр для любых ботов (которые выполняют js): github.com/T-igra/ItSALive Вот только с фильтром сейчас восстанавливается ПФ и возвращается трафик с поиска.
                    0
                    мм, не думал об этом с такой точки зрения. если гугел и яндекс мало того что не фильтруют таких ботов, так ещё и выдачу из-за них понижают, то да, совсем беда, фильтровать в таком случае их в GA совсем-совсем плохая идея.

                    я вот не совсем понимаю ваш код, если спамоброузеры js выполняют, почему они не смогут выполнить этот код и загрузить метрику? ну, так же они конечно же могут подменить юзер-агент на «YandexBot» и проскочить проверку.

                    а новые боты с новыми рефами — может быть, но это хотя бы что-то им стоит, ну хотя бы домены регистрировать, мелочь, конечно, но всё же не бесплатно
                      0
                      Посмотрите код, он элементарный. Бот просто загружает весь JS и выполняет его, но для активации счётчиков необходимо, чтобы была сдвинута мышка, а боты таким не заморачиваются.

                      Могут подменить юзер-агент, но ни один пока это не делает и скорее всего не будет делать, так как его цель прикинуться человеком, чтобы метрика восприняла его как человека, а не как YandexBot-а и зафиксировала в статистике.

                      В обсуждении Яндекса clubs.ya.ru/metrika/replies.xml?item_no=12395 вся горячка именно из-за убийства сайтов от проседания ПФ. И Яндекс уже полгода ничего не может поделать.
                    0
                    Для того чтобы засчитать хит в GA, как в общем то и в любой другой статистике, не обязательно посещать сайт, достаточно выполнить запрос к серверу учета статистики. Есть некоторые ограничения, но пытливый мозг их легко обойдет. Так что блокировка на уровне сервера — не панацея.

                    В любом случае, в том же GA, есть более правильная опция «Referral Exclusion List», которая находится в настройках счетчика. Добавляем туда домен и он перестает учитываться как реферрер. Тоже надо делать руками, но возможно тоже есть API для автоматизации. Из опыта, после бана первого десятка спамеров, спам спадает в 0.

                    Для чего такое делают? Продажа СЕО штучек новичкам (ибо кто еще будет на такое клевать) или прописывание своей реферальной куки в какой нибудь программе, например aliexperess, так как там принцип — кто первый, того и тапки. И видимо это выгодно, раз продолжают таким заниматься.
                      +1
                      Смотря в метрику уже обрадовался, что ко мне трафик с хабра пошёл, а тут такое. Злые вы :(
                        0
                        Кстати, а откуда у меня в метрике трафик с этой статьи?
                        Что-то я совсем не пони.
                          0
                          у меня тоже кстати, кто то балуется и типа стебется по жесткому
                            0
                            А у меня трафик почему-то пошел на старый домен, на котором сейчас стоит перенаправление. Пришлось включить фильтрацию ботов по поведению на фактически неактивном счетчике.
                            0
                            Там на три статьи ссылки идут. Эта, собственно, третья. Первая — на searchengines.guru (или как там оно зовётся) с темой автора поделки, вторая — обсуждение в Яндекс.метрике. Ну, просто как издевательство, что никто с этим ничего не может поделать.

                            То есть на самом деле трафика-то и нет, просто подстановка реферера.
                            0
                            Я заметил интересную особенность, что у меня данная беда только на русскоязычных проектах, а на англоязычных нет. Так ли это у всех?
                              0
                              у меня есть и на англо и франкоязычных
                              0
                              Люди, такой способ ещё актуален? Можно смело пробовать или уже есть что-то более совершенное?

                              Only users with full accounts can post comments. Log in, please.