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

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

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

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

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

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

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

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

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