Великие кормчие ТрафикСтора
Как-то поступила вроде бы простая задача с возможность подработать - нужно было крутить счётчики посещаемости (счётчик был убог до нельзя и простое F5 инкрементировало его значение). Накрутка должна была вестись с различной интенсивностью, плюс возможность быстро изменять нужные параметры (глубина переходов, время на сайте и так далее). Пару дней ушло на обмозговывание того, как лучше сделать. Одно из условий написания программы было влияние на счётчик яндекс.метрики, а так же, чтобы люди, которые просматривают данные не сразу догадались, что это боты.
Поскольку каждый компьютер обладает своими специфическими данными:
- разрешение экрана
- операционная система
- браузер
- куки
- движения мышкой, скроллинг
- наличие флэша
то нужно как-то независимо на всех ботах менять эти параметры, что позволило бы спокойно масштабировать решение.
Реализовать все данные вещи можно достаточно просто, если применить виртуализацию и тогда каждая из машин будет независима, что позволит нам играться как угодно с различными параметрами.
Поскольку я лучше всего разбираюсь в ОС Linux, то был взят дистрибутив Debian и виртуализация с помощью kvm (в то время он только развивался(5-6 лет назад), но был уже лучше всех других решений, типа виртуалбокса, vmware или xen). Скрипты генерации задач для Фаерфокса были расшарены с хостноды через sshfs, что позволяло быстро вносить изменения сразу на все виртуалки.
Но на обычном писюке не получится поднять больше четырех виртуальных машин, которые активно запускают FF из-за нагрузки на оперативную память и диск.
Пришло время координальной оптимизации ботов. Чтобы избавиться от лишних библиотек, файлов и прочей чепухи, а также уменьшить размер виртуального диска, с которым работает ОС нашего бота. За основу был взят дистибутив Gentoo, который полность перекомпилировался с отключением всем не нужных флагов и зависимотей, а так же перекомпиляцией ядра, что дало более оптимизированную ОС для ботов, а значит возможность запустить на одном писюке больше наших работяг.
Но как известно, самым медленным в по времени доступа в компе является жёсткий диск, а значит нам надо избавиться от него, что даст нам ещё более легковесное решение. Тут мы включаем все наши знание по линухам, динамическим библиотекам, компиляции, оптимизации и на выходе получаем полноценный дистрибутив, который имеет на своём борту всё, начиная от ядра и заканчивая полноценный браузер+flash+средства разработки скриптов по программированию ботов. Размер всего этого чуда составляет 110 Мб, работает в оперативной памяти и потребляет минимум ресурсов.
В итоге оптимизированная версия позволяет нам на одном сервере с 32Гб оперативки запускать до 60-ти инстансов. Все боты является полностью независимыми друг от друга.
Вот так из маленькой подработки получась фирма, которая теперь является одним из лидеров в своей нише рынка.
Данный подход позволил решать почти любую задачу нашего клиента при работе с любым сайтом, даже если там надо авторизовываться.
В следующих статьях мы затронем такие вопросы, как управление всеми нашими ботами, а их порядка 15-ти тысяч, способы постановки задачи, биллинг, обновление скриптов и самих ботов, мониторинг, планирование задач и многое другое.
ps Чего скрывать там, данный цикл статей ставит задачу привлечения внимания к нашему решению, что позволит меньшими потерями не используя убогие консольные решения или что-то селениума писать скрипты для наших ботов и исполнять их, получая при этом полезную информацию или автоматизируя что-то.