Выбрав blogspot.com для хостинга и ключевые слова «buy Viagra» и «buy Viagra online», хорошенько их проспамив хрумером, мы смогли вывести эти доры на первые позиции поисковика MSN. Конечно, это был не гугл. Но пару продаж «Виагры» в день MSN приносил. Пока наши доры на blogspot.com не украли.
Для генерации дорвеев я написал небольшую программку DoorIt!. Она создавала страницы по заданому шаблону с заданной плотностью ключевых слов, перелинковывала их. Умела автоматически заливать полученный дорвей по FTP. А также умела парсить Overture — популярный тогда сервис по поиску ключевых слов.
DoorIt! мы с братом продавали по SEO-форумам за $50. Продали всего три-четыре копии, но это был первый софт, который сделали мы сами и смогли продать.
Дорами я занимался параллельно основной работе в «Адаманте» прямо за рабочим компьютером, а также вечерами.
Мой ник[18] на всех форумах тогда был Engel, по названию песни Rammstein, моей любимой со школы группы. Мы, как и любая молодежь, отрицали тогда попсу, которую слушали наши родители. И пытались выделяться тем, что слушаем немецкий рок. Но Rammstein так и остался моей любимой группой на всю жизнь. В одно время я даже покупал плакаты с изображением участников группы и обклеил ими все стены у себя в комнате. А также хотел носить зачесанные назад синие волосы, как Тиль Линдеман. До покраски в синий цвет я так и не дошел, зато отрастил хвостик и проходил с ним пару лет.
Интересно, что следствие ФСБ и многие журналисты, в том числе Брайан Кребс, приписывают ник Engel моему брату, хотя изначально это был мой никнейм.
Занимаясь поиском возможностей заработать в онлайне, я попал на форум спамеров — Spamdot. Форум был всегда закрытым, но тогда для регистрации было достаточно написать админу в аську (ICQ)[19], тебе задавали пару вопросов: откуда ты узнал о форуме и чем занимаешься. Я честно ответил: «Пишу софт». Так, на форуме Spamdot появился новый участник Engel с забавной аватаркой черного ангела.
На Spamdot для меня открылась новая вселенная. Одни делали почтовые рассылки за деньги (например, 1 млн адресов по России стоил $100), другие — продавали ту же «Виагру» через спам, третьи — писали софт для спама.
На форуме было представлено несколько категорий продавцов.
Ботнеты для рассылки писем. Ботнеты — это боты, которых грузят на машины пользователей, естественно, без их разрешения, и серверная часть, которая умеет управлять этими ботами. Рассылка писем через ботнеты намного эффективней спама через прокси. Так как каждому боту достаточно взять только шаблон письма и адресную базу, далее он работает автономно. Когда при рассылке через прокси, вся нагрузка ложится на шлющий сервер.
Загрузчики — люди, продающие загрузки. Те самые установки ботов на компьютеры пользователей.
Продавцы email-баз. Их было один-два человека всего.
Спонсоры — партнерские программы.
И мы решили: если идти в спам, то первое, что нужно, — это почтовые базы. Покупать смысла не имело — непонятно, какого качества окажется база. По хорошим email-базам рассылают, а не продают.
Нужно было собрать свежую почтовую базу, арендовать ботнет, прогрузить его и попробовать разослать рекламу таблеток.
Для сбора почтовых адресов мы решили написать веб-паука, который максимально использовал бы ресурсы сервера и мог бы парсить сайты, полностью загружая канал. То есть требовалось написать эффективное (скорость работы и расход оперативной памяти) многопоточное приложение для обхода сайтов. Тут-то мне и пригодился весь опыт оптимизации, полученный в «Адаманте».
Писал веб-паука я около двух месяцев. Мой рабочий день выглядел так: подъем в 11 утра, сбор за 15 минут, выдвижение к метро, сон, стоя в метро полчаса, по выходе на Сенной площади баночка энергетика, перезарядка, баночка энергетика в обед, 9 часов на работе, метро, поездка домой, баночка энергетика, работа над пауком полночи, сон 4–5 часов. И все повторяется снова. Только на выходных я мог выспаться.
Зато у меня скопилась огромная гора пустых банок из-под энергетика.
Поскольку времени было в обрез, я пристрастился ужинать в KFC. Ох, как глуп я был! На курочке, бургерах и коле я набрал вес — с 77 кг до 110! Весь мой, некогда красивый, рельф покрыл толстый слой жира.
Возвращаемся к пауку. Я реализовал свой парсер HTML для экономии памяти, ведь приложение работало в несколько сотен потоков. Тот же libxml был непозволителен, поскольку делал слишком много динамических аллокаций памяти, а это дорого по производительности. И еще он съедал память. Много бессонных ночей я провел в отлаживании многопоточной работы. Например, крашился[20] один поток, а ошибка вылезала совсем в другом.
Распределение нагрузки между несколькими рабочими серверами выглядело так: брались домены, которые нужно обойти, и делились по количеству серверов. Сам парсер не выходил за пределы изначального домена и его уровня, то есть, если он бегал по домену второго уровня, он не переходил на субдомены. А результаты своей работы парсер клал в два больших файла: