Читать книгу Налог на глупость (Дмитрий Котовский) онлайн бесплатно на Bookz (5-ая страница книги)
bannerbanner
Налог на глупость
Налог на глупостьПолная версия
Оценить:
Налог на глупость

5

Полная версия:

Налог на глупость

Здравый смысл подсказывал о неразумности продолжать попытки обыграть ОД только лишь при помощи поиска и эксплуатации подобных технических уязвимостей. Так или иначе, я был один, а мой противник располагал целым штатом специалистов – очевидно, что расстановка сил на этом поле явно не в мою пользу. Поэтому было решено направить усилия на поиск легитимных, но логически невыгодных для администрации ОД вариантов работы – когда игра ведётся в рамках правил социальной сети, но нюансы позволяют использовать их себе на пользу. Мой любимый серый цвет.

То есть, если Одноклассники выпускали пользователей без показа окна предупреждения на такие крупные ресурсы как Яндекс или Google, значит надо было этой возможностью пользоваться и без технических хитростей вроде подмены запросов найти способ размещать на них свои редиректы.

Первым вариантом такого решения стала платформа Google Sites – бесплатный сервис создания сайтов. Во-первых, сайты здесь имели адрес вида sites.google.com/ваше_название/, что в глазах ОД было равнозначно нахождению просто на домене google.com – ресурсе с максимальным уровнем доверия. Во-вторых, создавать сайты на этом сервисе можно было бесплатно и в большом количестве.

Какое-то время этот вариант работал безупречно. До тех пор, пока ОД не решились на отчаянные меры и не заблокировали весь поддомен sites.google.com – если в строке ссылки присутствовал этот адрес, её размещение запрещалось. Теперь владелец какого-нибудь посвященного породам собак или старинным монетам любительского сайта, имевшего неосторожность быть созданным на платформе Google Sites, не мог поделиться ссылкой на него. Гражданские жертвы.

Периодически ОД доставали этот адрес из бана, чтобы через несколько дней загнать его туда обратно, как будто по-женски никак не могли определиться, что же им со всем этим делать. Душа тем временем стала требовать большего – сделать такой редирект, домен которого у ОД точно не хватило бы духу забанить. Например, прямо на втором уровне сайта google.com.

И вскоре такое решение было найдено.

Если заглянуть под капот страницы выдачи Google, то можно заметить, что ссылки в списке найденных сайтов не ведут на эти ресурсы напрямую (несмотря на старания вёрстки создать такое ощущение), а представляют собой внутренние запросы к серверу с длинным хвостом параметров. Можно сказать, что страница выдачи является ничем иным, как списком редиректов на доменном имени максимального уровня доверия в ОД – google.com.

Самое же интересное скрывалось в наследии поисковой системы Google, а именно – в архаической кнопке «Мне повезёт!». Если вы не знали, при помощи неё можно сразу попасть на сайт первого найденного результата вашего поискового запроса, минуя этап созерцания всей выдачи (и соответствующие муки выбора). В настоящее время ценность данной функции весьма сомнительна, но, как говорили, среди пользователей Google всё ещё оставался какой-то маленький процент любителей понадеяться на удачу, и вот специально ради них компания до сих пор хранит эту возможность.

Поисковый запрос в виде имени домена нужного сайта с высокой долей вероятности сформирует выдачу с этим сайтом на первом месте, поэтому мне оставалось лишь загнать свой сайт в индекс Google и начать пользоваться кнопкой «Мне повезёт!» с запросом в виде домена этого сайта.

Бонусом можно было бы добавить на свои сайты уникальные наборы случайных символов, сделав по которым запрос в поисковике, пользователь получал бы страницу выдачи с одним-единственным вариантом – моим сайтом, потому что больше нигде в интернете подобный набор случайно сгенерированных бессмысленных символов просто не встречался. Подобные схемы я встречал в разводе на деньги в секс-знакомствах с девушками в интернете – типа «введи вот этот набор_символов в Яндекс (или Google) и найдёшь там мою развратную анкету».

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


***

Всё это выглядело прямо очень хорошо. Однако эксперименты выявили некоторую странность в поведении кнопки «Мне повезёт!» – на одни сайты она пропускала без проблем, а на другие реагировала отображением поисковой выдачи (пусть даже и с твоим сайтом на первом месте). Оказалось, что в этом механизме Google руководствуется значениями PR (PageRank) – показателя авторитетности вашего сайта по сравнению с остальными ресурсами сети. Это параметр из мира поискового продвижения и, если вкратце, чем больше других сайтов в интернете ссылается на ваш и чем они качественнее, тем выше PR ресурса. Аналог подобного показателя у Яндекса называется тИЦ – индекс цитирования. В народе эти параметры ласково называют «пузомерками».

Так вот, при использовании редиректа на базе кнопки «Мне повезёт!» везти начинало для находящихся на первом месте выдачи сайтов, домены которых имели значение PR 4 или больше, что соответствует уровню довольно-таки раскрученного и авторитетного сайта. Учитывая мои отношения с поисковым продвижением, желания создавать, ждать и выращивать свои домены вручную с нуля у меня не было. Нужен был вариант найти уже готовые.

Доменные имена при регистрации и продлении оплачиваются на год вперёд и, если владелец домена по какой-то причине не продлит его, то имя сайта становится свободным, и кто угодно может зарегистрировать его на себя. Таким образом новому расторопному хозяину в распоряжение может достаться домен с уже готовой историей, хорошими показателями тИЦ и PR и, соответственно, доверием со стороны поисковых систем.

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

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

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

Технический прогресс

У меня было 2 языка программирования, более 1000 строк функционального кода, охапка самописных библиотек, десяток скриптов и целое множество подключаемых модулей всех сортов и расцветок, пара виртуальных серверов, а также консоль, командная строка, текстовый редактор, платформа симуляции браузера и 2 дюжины скоростных VDS-прокси. Не то чтобы это был необходимый запас для создания ботов в социальной сети, но, когда начинаешь слышать звон выплат на кошельке, становится трудно остановиться. Единственное, что вызывало у меня опасение – реализация многопоточности. Нет ничего в мире более беспомощного, отвратительного и порочного, чем отладка багов конкурирующих потоков. Я знал, что рано или поздно вляпаюсь и в эту дрянь.


Несмотря на ожидания, реализовать долгожданную многопоточность оказалось, хоть и муторно, но не невозможно. Интернет был не особо щедр на предоставление нужной информации по грамотной реализации многопоточности в Python, поэтому пришлось потратить время на то, чтобы досконально отследить, какой поток чем занимается, и где между ними могут протекать и перемешиваться данные. Ведь с точки зрения ОД, все потоки должны были представлять полностью разных изолированных пользователей со своими наборами индивидуальных параметров (cookie, user agent, прокси), но с общей очередью забора свежих пользователей и единым списком отработанных Одноклассников.

Достигнутый результат даровал мне потенциал колоссальной мощности – теперь на своём компьютере с совсем невыдающимися характеристиками я легко мог запускать несколько десятков потоков. Максимальным числом работающих параллельно экземпляров было 70, в основном же их количество держалось в районе 30-50.

Проблема с участившимися удалениями групп была решена полной автоматизацией их создания и подготовки – скрипт сам создавал группу, выставлял нужные настройки, загружал аватарку, прописывал тексты с заданными параметрами рандомизации и размещал нужным образом ссылку. Когда группа удалялась, софт фиксировал это событие, останавливал потоки, создавал новую группу и перезапускался. Всё работало на автопилоте. Таким образом, группы из штучного товара ручной работы превратились в создаваемый на ходу расходный материал.

Программный комплекс рос не по дням, а по часам – из скромного скрипта инвайтер превратился в большой полнофункциональный многопоточный комбайн со сложной логикой. Объём кода перевалил за 1000 строк. Теперь это была уже не просто забавная игрушка, а полноценное орудие массового поражения. И с каждым днём оно становилось надёжнее – все нестандартные и неожиданные ситуации записывались и сохранялись, чтобы позже я мог добавить в код конкретные инструкции на случай их повторения.

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

Отключение электричества, к счастью, было событием редким, а с его кратковременными перебоями справлялся источник бесперебойного питания.

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

Молчание этого телефона буквально являлось аналогом настоящего золота.

Большой брат

На заре своих интернет-заработков одним зимним вечером, уже при свете ночи после обычного рабочего дня в офисе я шёл домой мимо пустой автобусной остановки. Звук телефона оповестил о прибытии романтичного супружеского сообщения – списка продуктов для покупки в магазине по пути. Оценив пустоту своего бумажника, я ответил, что с удовлетворением просьбы придётся немного повременить.

Неприятная привычка сутулиться и смотреть во время ходьбы себе под ноги на этот раз приятно удивила – на тротуаре в снегу я разглядел фигуру Петра Первого на фоне 500-рублёвой купюры. Не растерявшись, я быстро сделал вид, что у меня на сапоге развязались шнурки, присел и забрал бесхозную бумажку. Подняв взгляд, я удивился ещё больше – на расстоянии метра от Петра Великого в снегу подмерзали его исторические коллеги, итоговой суммой на, ни много ни мало, 5000 рублей.

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

Надо сказать, что это была самая крупная находка денежных средств в моей жизни. Радость от неё была намного большей по сравнению с предыдущей, когда мне посчастливилось найти вмерзшую в лёд лужи пятирублевую монету на школьном дворе своей небогатой юности.

А на следующий день мне позвонили со скрытого номера. Голос в трубке представился лейтенантом Федеральной службы безопасности и вежливо поинтересовался, не желаю ли я сегодня вечером после работы заглянуть к ним в гости на дружескую беседу. Я уже был готов услышать фразу «Мальчик, верни деньги», однако мои робкие попытки узнать тему грядущей встречи остались корректно неудовлетворенными – уж кто-кто, а они умеют это делать.

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

Однако истина оказалась более приземлённой – вечером выяснилось, что стоящие на страже государства товарищи просто собирали данные с основных ВУЗов города о выпускниках, закончивших обучение с красным дипломом. Их обзванивали и приглашали прийти на встречу, чтобы предложить работу в своей структуре, только и всего.

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

«Введите код с картинки», сцена B

Несмотря на более-менее налаженный механизм борьбы с капчей, ежедневно уходящая в фонд поддержки ручного труда Индии сумма в $1000 волей-неволей побуждала искать другие способы решения этого вопроса.

Надежду подавали высоты, достигнутые в области OCR – алгоритмов оптического распознавания символов. Подобным решением для ВК-капчи я успел попользоваться в последние пару недель своей работы в этой социальной сети. Как вы помните, стоило оно немало ($300) и имело не прямо чтобы блестящую 50%-ную эффективность, но работало исправно и, кроме ресурсов процессора компьютера, больше ничего не просило. Однако общение с разработчиками этого модуля выявило отсутствие интереса у них создавать подобное решение для капчи из ОД (видимо, вследствие невысокой популярности Одноклассников).

Разработчики ZennoPoster (известного конструктора для автоматизации действий в интернете) в то время анонсировали свой новый инструмент автоматического распознавания капч – CapMonster. Проведенные мною тесты подтвердили честные предупреждения создателей о том, что на данном этапе развития программы стоит ожидать от неё верного разгадывания разве что самых простых капч, кривые символы из ОД к которым, конечно же, не относились.

Как-то на Хабре я прочел статью о серьёзных победах алгоритмов OCR над первыми версиями ReCaptcha – одним из самых лютых проявлений капч в интернете. Известия пришли с западных спам-фронтов, однако, как это часто бывает, без участия наших соотечественников тут не обошлось (чему, собственно, статья и была посвящена). Попытки связаться с упоминаемыми персонажами ни к чему не привели – мне ответили, что ничем помочь не могут. Даже несмотря на то, что я готов был предложить очень хорошее вознаграждение за решение больного вопроса тому, кто избавит меня от необходимости расходовать по $1000 на капчу каждый день. В месяц это экономило бы мне порядка $30 000, большей частью которых я был готов поделиться со светлыми OCR-умами.

Но, как говорится, что ни делается – всё к лучшему. В чём я вскоре смог убедиться, потому что до разработчиков ОД наконец-то стало доходить, что требовать от своих пользователей бесплатно работать индусом-разгадывателем капчи при каждом приглашении человека в группу – это далеко не образец лучших практик построения дружественных интерфейсов.

И в один (действительно прекрасный) день здравый смысл восторжествовал, и капча с приглашений была убрана. Однако сделано это было только в полной версии сайта, а я ведь тогда работал исключительно через мобильную. Здесь надо отметить, что полная и мобильная версии одной и той же социальной сети ОД – это, несмотря на внешнюю схожесть, два совершенно разных мира, два различных сайта. И, как это хорошо видно на примере с отменой капчи, в первую очередь цивилизация приходила именно в версию настольную.

Главной сложностью работы одновременно с обеими версиями ОД были динамические идентификаторы всего, что только можно: профилей, групп, записей и прочего – все они заново генерировались для каждой сессии и, соответственно, всегда были разными. Поначалу этот зоопарк порождал проблемы разве что в вопросе создания точного списка отработанных пользователей. Теперь было необходимо научиться отыскивать одни и те же объекты в двух разных мирах постоянно меняющихся указателей.

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

Так как теперь часть работы софту приходилось проделывать, находясь в полной (вечно тормозящей) версии ОД, значительно, просто в разы, вырос объём трафика, и теперь слабым местом системы стала пропускная способность моего интернет-провайдера. Тут я впервые увидел причину реальной необходимости покупки самого дорогого тарифа – в те времена это была скорость в 40 Мбит/с за пару тысяч рублей в месяц. Совсем небольшая цена по сравнению с былыми тратами на капчу в Антигейте.

Иногда я пересматривал свой код перекрёстных запросов и сам уже не понимал, как он работает. Определённо, эта технически сложная победа была одной из выдающихся на фронте моей деятельности, достижение которой при использовании принципа «Сэкономил – значит заработал» позволило при прочих равных практически удвоить чистую прибыль.

Таланты дальнего плавания

В моменте обновления статистики партнёрской программы есть нечто одновременно как и приятное, так и тревожащее. Первое, разумеется, связано с ожидаемым увеличением суммы заработка в графе «Итого», второе – с боязнью увидеть на экране без изменений замершие цифры.

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

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

Довольно часто так и происходило. Но не на сей раз.

Проверка техпроцесса не обнаружила признаков аварии – софт крутился, приглашения рассылались, серверы работали, сайты и ссылки исправно открывались. Всё выглядело находящимся в полном порядке, но статистика по-прежнему не хотела обновляться.

Через пару минут собственный прямой заход по партнёрской ссылке сдвинул-таки в честь меня число уникальных посетителей на единицу, ознаменовав тем самым столкновение с достойной имени Шрёдингера неопределённостью – всё вроде работает, но в то же время как бы и нет. От недоумения я полез проверять всё, что мог подсказать проверить здравый смысл, в том числе и HTML-код своих промежуточных сайтов.

За время работы с мобильной партнёрской программой я настолько часто видел свою партнёрскую ссылку, что, несмотря на короткую память, даже запомнил номер её параметра-идентификатора. По этому параметру ПП понимает, что пользователь пришёл именно от вас, а не от кого-то ещё, и что именно вам надо зачислить прибыль от их смс. И поэтому довольно быстро я заметил, что в коде моего сайта на моём сервере находится чужая ссылка той же самой ПП!

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

Когда я начал понемногу приходить в себя, и градус здравомыслия поднялся чуть выше уровня передач про пришельцев на РенТВ, стала заметна ещё одна странность произошедшего – с точки зрения человека, обладающего умением незаметно поедать бутерброды на девятом этаже запертой квартиры, было как-то неразумно оставлять свою партнёрскую ссылку той же самой ПП в таком явном виде.

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

Чуть успокоившись, я поинтересовался, не оставлял ли владелец этого аккаунта свой номер ICQ, что, как правило, было обязательным для заполнения полем в форме регистрации в ПП. Спустя минуту номер был у меня. Конечно же, ничто не мешало человеку при регистрации указать любые пришедшие в голову цифры вместо настоящего номера аськи, так что убедиться в его актуальности можно было лишь одним способом.

Я забил номер в поиск аськи, и аккаунт на удивление нашёлся. Более того, он даже был в онлайне. Недолго думая, я написал ему:


– Привет. Я смотрю ты неплохо разбираешься в вопросах информационной безопасности, не так ли?


Ответ не заставил себя долго ждать, несколько меня удивив… Передо мной вежливо извинились за вторжение на сервер и сопутствующие неудобства. Дальше последовала переписка, из которой выяснилось, что интервентом моей цифровой территории явился… моряк дальнего плавания.

На несколько месяцев он уходил на корабле в дальнее плавание, оставаясь вдали от интернета и высоких технологий. А по возвращении, во время отпуска он развлекал своё любопытство самой разной деятельностью, в том числе связанной с информационной безопасностью в сети.

Путь к нашей встрече начался с того, что мой собеседник, любопытства ради зарегистрировавшись в партнёрке, заприметил в топе мой ник. В те времена имя моего присутствия в интернете было уникально и весьма опрометчиво совпадало с логином как в ПП, так ещё и на куче сайтов, где я имел неосторожность ввиду своей забывчивости и лени использовать одно и то же наименование учётной записи. Но это ещё полбеды… Как вы уже догадались, пароль на большинстве этих сайтов тоже был одинаков. В том числе и на хостинге.

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

Узнав пароль, он получил доступ к моему серверу. А также, благодаря информации на нём, к резервной почте, аккаунту ПП, ВК и даже ICQ. В последние два, говорит, не заходил, просто проверил пароль на валидность, хотя легко мог бы сильно усложнить мне жизнь просто потому, что мог. Но не стал.

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

Так или иначе, у этого человека не было намерений воровать мои деньги, он делал всё это из любопытства, эксперимента ради. Сказал, что если бы я ничего так и не заметил, то рано или поздно сообщил бы мне о взломе сам. И я даже склонен ему верить.

bannerbanner