BugTraq.Ru
Русский BugTraq
https://bugtraq.ru/review/selecta/banners.html

Кручу, верчу, накрутить хочу...
#64
Опубликовано: dl, 02.03.99 21:37

Проблемам баннерных сетей, счетчиков, рейтингов и т.п. явно суждено находиться в центре внимания. Сегодня мы рассмотрим программу, занимающуюся их накруткой - имитацией значительного количества показов счетчиков, баннеров и т.п. Создание массы виртуальных посетителей имеет прямую выгоду - рост в строчках рейтингов, приносящий вполне реальных посетителей, баннеры, полученные по обмену, наконец, деньги, полученные в обмен на виртуальные клики.

Экземпляр программы переправил мне Alex Ustas, за что ему отдельное спасибо, иначе бы разговор носил чисто умозрительный характер.

Борьба с накруткой - едва ли не основная головная боль баннерных сетей. Это же, впрочем, относится и ко всевозможным рейтингам, голосованиям и т.п. Вы будет смеяться, но все опять упирается в идентификацию пользователя, о которой я тут распинался три последних выпуска. Правда тогда она рассматривалась под другим углом зрения: речь шла о ситуации, когда пользователю выгодно быть правильно идентифицированным - тогда ему не понадобится повторно вводить пароль, заполнять анкету и т.п. В случае с накруткой игра идет в разные ворота. Сеть стремится отслеживать ситуацию значительного количества показов счетчика, баннера и т.п. одним и тем же пользователем в течение ограниченного промежутка времени, накрутчик стремится ее скрыть.

Основная информация, которую пользователь оставляет о себе на web, сводится к следующему.

Если что-то из перечисленного покажется вам до боли знакомым, к примеру, если вы обнаружили там свой ip-адрес, не переживайте и не бросайтесь писать мне гневное письмо с требованием немедленно его заменить. Каждый посетитель видит тут свою и только свою информацию - просто мне показалось, что такая демонстрация будет наглядней, чем пример какого-то абстрактного пользователя.

Вся эта информация, кроме REMOTE_ADDR и REMOTE_HOST, передается клиентом непосредственно в заголовке http-запроса, а следовательно, может быть подделана. Подделка же обратного адреса - штука более сложная, а в Win-системах - гораздо более сложная из-за особенностей реализации winsock, не допускающей непосредственной модификации заголовков пакетов. Однако существует второй, гораздо более легкий путь - воспользоваться proxy-сервером, адрес которого и получит сервер в качестве обратного адреса. Однако далеко не все прокси позволяют так просто скрыть адрес клиента - в конце концов, их основная задача - вовсе не обеспечение анонимности. Они честно передают адрес клиента с заголовком X-Forwarded-For, что дает возможность cgi-приложению получить его из переменной окружения HTTP_X_FORWARDED_FOR, что вы и могли наблюдать в приведенном примере.

Итак, алгоритм понятен. Собираем список прокси и пишем программу, позволяющую формировать заголовки запроса вручную (несколько строчек на Perl'е), и начинаем работать через каждый раз случайно выбираемый прокси.

А дальше начинается шаманство, то есть статистика. К примеру, суточный график посещаемости российских сайтов носит, как правило, вполне определенный характер - ночной спад, дневной подъем, падение посещаемости по выходным и т.п. Для ресурсов, носящих более интернациональный характер, разница сглажена, но постоянство графика все равно имеет место быть. Впрочем, можно попробовать изобразить и такое поведение. Далее, необходимо учитывать активность посетителей разных регионов - такая статистика ведется, по крайней мере, баннерными сетями, и всплеск посещаемости с какого-то тьмутараканского прокси не может не привлечь внимания. Наконец, в случае баннерных сетей придется имитировать и клики по баннерам - иначе привлечет внимание резко упавший CTR сайта (отношение количества кликов на баннерах к количеству показов). Тут мы упираемся в cookie, которые, как правило, выставляют сети, используя модель идентификации cookie+IP. Придется заниматься и ими. Далее нам придется имитировать статистику возвратов одних и тех же посетителей, потом - имитировать их прогулки по другим сайтам, потому как сложно объяснить внезапный всплеск интереса нескольких сотен посетителей к одному-единственному ресурсу, и т.п. В итоге мы получаем, что создание идеального накрутчика - задача весьма нетривиальная и требующая значительных усилий.

До сих пор была теория, теперь переходим к практике - к нашей конкретной программе-накрутчице. Документация к ней достаточно подробная, демонстрируются примеры накрутки Rambler'а, баннерных показов и кликов, приводится рекомендация придерживаться естественного графика суточной посещаемости. Единственное, с чем не могу согласиться, так это с утверждением, что "все знаменитые сервера Рунета начинали путь к известности с использования этого или такого же способа". По крайней мере, один сервер, этим не занимавшийся, я знаю :) То же можно сказать и о большинстве крупных серверов - уж поверьте, разработка интересной идеи гораздо плодотворее эпизодической накрутки и гораздо интереснее накрутки постоянной.

Что касается реализации, чуда не произошло. Программа действительно использует прокси (причем этот режим по умолчанию отключен), коих в комплекте предлагается 787 штук. Большинство честно возвращает HTTP_X_FORWARDED_FOR. Правда для заметания следов используется любопытный трюк - программа формирует и свой левый X-Forwarded-For (из еще одного списка на тысячу адресов), так что реальный адрес в этом случае (на Apache, по крайне мере) приходит в HTTP_X_FORWARDED_FOR вторым, после запятой. С куками программа не работает, плюс всегда формируется HTTP_CACHE_CONTROL: max-age=2592000 - насколько я понимаю, обычно прокси пишут там на один ноль меньше. Это значение прописано в файле настроек и легко меняется, но это еще надо проделать. Таким образом, ее использование можно отловить, даже не особенно занимаясь статистическими исследованиями. Но если этим не заниматься, Рунет ждут веселые деньки.

P.S. от 2003 года.

Как вы заметили, этот текст писался еще в 1999 году, когда волна накруток еще только поднималась. С тех пор классические технические накрутки понегу теряли свою популярность - число анонимных прокси все же довольно ограничено, и их списки, как правило, есть у большинства участников этих игр - с обеих сторон. Да и статистика зачастую получается слишком неправдоподобная. Гораздо более популярным, эффективным и трудно отлавливаемым оказался спосооб, условно называемый "порнотрафик". Рецепт простой. Берем сервер с большой посещаемостью и вставляем где-то в уголок страницы скромный незаметный iframe минимальных размеров, в котором открываем накручиваемую страницу. Получаем массу вполне нормальных заходов от разных людей и отсутствие головной боли по имитации IP, разных броузеров и т.п. В роли серверов-доноров очень часто выступают многочисленные порносайты, поскольку и раскрутить их просто, и найти страницу-донора среди их огромной массы можно разве что случайно.

Частично с этим научились бороться, используя баннеры с яваскриптом, позволяющим вытащить адрес страницы верхнего уровня. Но и это не столь непреодолимое препятствие. Константин Тимашков прислал пример кода, успешно преодолеваюшего эту защиту. Ключевым моментом является то, что во многих случаях IE не отдает адрес предыдущей страницы (referer), если переход осуществлялся с помощью яваскрипта. Т.е. элементарное открытие popup-окна очень часто приводит к утере реферера. Минимальный размер этого попапа, отсутствие возможности сменить размер, позиционирование где-нибудь за границами монитора - это уже дело техники.

Однако остается еще как-то справиться с клиентами, честно отдающими реферер даже при использовании яваскрипта - потому как начилие даже нескольких ссылок в статистике, засвечивающих донорскую страницу, сведет на нет все усилия. Справиться с этим помогает пока не опровергнутое рассуждение: если клиент обманывает с реферером при использовании яваскрипта один раз, то он будет делать это всегда. Таким образом, остается вставить в нашу схему еще один шаг с проверкой: донорская страница открывает попап, в котором открывается скрипт, проверяющий значение реферера. Если он пустой, то нам попался подходящий клиент, и уже со спокойной совестью редиректим на накручиваемую страницу. Если же он заполнен, то пропускаем его.

Проверить, что происходит с реферером в вашем броузере, можно на этой странице.

обсудить  |  все отзывы (0)  

[31607; 12; 6.16]


  Copyright © 2001-2021 Dmitry Leonov Design: Vadim Derkach