Создание собственных Chrome Extensions для ZennoBrowser и интеграция с ZennoPoster через ZennoBrowser API: единая архитектура для обхода антибот-защит

vicos

Client
Регистрация
06.02.2017
Сообщения
158
Благодарностей
472
Баллы
63
138459


В данной статье мы рассмотрим полный цикл создания собственного расширения для Chrome — от разработки логики скрипта до его практического применения в системе автоматизации.
Я опишу, как собрать скрипт, преобразовать его в расширение, упаковать, подключить к ZennoBrowser и управлять его запуском с помощью ZennoPoster.


Основная цель — добиться максимально нативной автоматизации, при которой выполнение логики происходит непосредственно внутри браузера и визуально не отличается от действий реального пользователя.
Использование скриптов в виде расширения браузера — это более безопасный и устойчивый подход к автоматизации по сравнению с классическими шаблонами ZennoPoster.
Он позволяет минимизировать следы автоматизации, обходить поведенческие и fingerprint-фильтры, выстраивать сложную логику внутри браузера, использовать ZennoPoster как управляющий центр, а не источник действий.
К этой идее я пришёл достаточно давно, но практическая возможность реализовать её появилась лишь в ходе последних разработок и обновлений ZennoBrowser и ZennoPoster.

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


Суть подхода заключается в следующем: мы создаём расширение для Chrome и подключаем его к профилям ZennoBrowser через систему пресетов.
В само расширение закладывается вся логика и алгоритмы, которые ранее использовались в шаблонах ZennoPoster.
При этом возможны два сценария — либо изначально разрабатывать алгоритм в виде полноценного шаблона, а затем конвертировать его в расширение, либо сразу проектировать логику с прицелом на работу внутри браузера.


1. Создание Chrome Extension.
Для примера я взял самый простой шаблон для фарминга аккаунтов X.COM(TWITTER).
Расширение автоматически запускается при запуске профиля как непосредственно из ZennoBrowser так и командами по API из Zennoposter.
Весь цикл запуска и работы расширения более подробно показан в видео.

138448


Создание расширения начинается с шаблона, предварительно собранного в Project Maker.
На этом этапе вся логика реализуется либо сразу на C#, либо с использованием стандартных кубиков с последующей конвертацией в C#.
Далее наша задача — объединить весь шаблон в единый скрипт, тщательно его протестировать и отработать как штатные, так и не штатные сценарии, чтобы на этапе сборки расширения не возвращаться к доработкам.

138449


Поскольку у меня уже был опыт разработки расширений, я изначально пытался реализовать универсальный конвертер из C# в JavaScript непосредственно внутри Project Maker.
Однако на практике стало понятно, что сделать такое решение универсальным не получается — под каждый проект и под каждую логику требуется отдельная реализация.
Поэтому, не усложняя процесс, я решил воспользоваться ChatGPT.
Нужный результат был получен не сразу — потребовалось время, чтобы «натренировать» модель и добиться корректной генерации кода.
Тем не менее, в конечном итоге задача была решена, и результат полностью оправдал ожидания.
Вот собственно те 4 файла необходимые нам для сборки собственного расширения.

138452


Коротко про файлы - для чего нужны и их содержание.
manifest.json - это основной конфигурационный файл расширения.
В нём описывается структура расширения, указываются его имя, версия, разрешения, а также какие скрипты и файлы используются.
Именно манифест сообщает браузеру, какие компоненты нужно загрузить, какие API разрешены и как расширение должно себя вести.
Именно здесь - "js": ["utils.js", "content.js"] записывается последовательность запуска скриптов в расширении.

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

content.js - скрипт отвечает за прямое взаимодействие со страницей.
Он выполняется в контексте сайта, имеет доступ к DOM-дереву, может отслеживать события, эмулировать действия пользователя и работать с элементами интерфейса.
Именно в этом файле, как правило, реализуется основная логика автоматизации и поведения на целевом ресурсе.

background.js -скрипт отвечает за фоновую логику расширения.
Он управляет состоянием расширения, обрабатывает события браузера, взаимодействует с API Chrome и координирует работу между различными частями расширения.
В нашем случае бэкграунд используется для переходов по ссылкам и управления навигацией, поскольку при попытке выполнять такие действия напрямую из контент-скрипта страница не загружается корректно, а лишь «мигает».
Бэкграунд позволяет выполнять навигацию корректно, без нарушения загрузки страницы и без конфликтов с контекстом сайта.

Для того чтобы запаковать в расширение мы используем следующий скрипт:
Скрипт создания расширения Chrome:
string chromePath = @"C:\Program Files\Google\Chrome\Application\chrome.exe";
string extPath = @"C:\Users\Ваша директория проекта\Extension";

var psi = new System.Diagnostics.ProcessStartInfo();
psi.FileName = chromePath;
psi.Arguments = $"--pack-extension=\"{extPath}\"";
psi.CreateNoWindow = true;
psi.UseShellExecute = false;

var proc = System.Diagnostics.Process.Start(psi);
proc.WaitForExit();
Этот скрипт создаст два файла:
1. Extension.crx - непосредственно само расширение, которое мы и загружаем в наш браузер.
2. Extension.pem - приватный ключ разработчика.

Вот так выглядит работа нашего расширения консоли разработчика и результат в окне браузера.

138454


2. Интеграция с Zennoposter.

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

138455


Кроме того, не стоит забывать и про использование расширения CapMonster Cloud.
Оно пригодится в тех случаях, когда браузер всё-таки попадает под дополнительные проверки и появляются капчи.
В такой связке мы закрываем ещё один потенциальный риск и делаем автоматизацию более устойчивой к защитам целевых ресурсов.


3.Заключение.

В результате мы выстроили полноценный и гибкий подход к автоматизации, в котором основная логика перенесена непосредственно внутрь браузера — в виде расширения для Chrome.
Это позволяет максимально приблизить поведение автоматизации к действиям реального пользователя и существенно снизить вероятность обнаружения со стороны целевых ресурсов.
ZennoPoster в данной архитектуре используется как управляющий инструмент: он отвечает за подготовку окружения, создание и клонирование профилей, их запуск и остановку через API ZennoBrowser.
Вся же критически важная логика взаимодействия с сайтами выполняется внутри браузера — через скрипты расширения.
Дополнительно мы используем готовые решения, такие как CapMonster Cloud, которые легко интегрируются через пресеты и помогают обрабатывать сложные сценарии с капчами, если браузер всё же попадает под дополнительную проверку.
Такой подход открывает широкие возможности для масштабирования, упрощает сопровождение проектов и позволяет гибко адаптироваться к усложняющимся защитам.
По мере развития API ZennoBrowser и появления новых функций, эту архитектуру можно и нужно развивать дальше, постепенно вынося всё больше логики за пределы классических шаблонов ZennoPoster.

 
Последнее редактирование модератором:

ShikoFess

Client
Регистрация
21.12.2017
Сообщения
161
Благодарностей
128
Баллы
43
Может есть какие то файлы прикрепленные для примера? Например тестовый шаблон или расширение? Видео кстати я не нашел, о котором речь в статье)
 

vicos

Client
Регистрация
06.02.2017
Сообщения
158
Благодарностей
472
Баллы
63
Может есть какие то файлы прикрепленные для примера? Например тестовый шаблон или расширение? Видео кстати я не нашел, о котором речь в статье)
Видео я отправил со статьей. Уточню у админов почему не выложили.
 

vicos

Client
Регистрация
06.02.2017
Сообщения
158
Благодарностей
472
Баллы
63
Может есть какие то файлы прикрепленные для примера? Например тестовый шаблон или расширение? Видео кстати я не нашел, о котором речь в статье)
Админ ответил что видео зальют сегодня завтра
 

Dr.Pipetka

Client
Регистрация
12.12.2017
Сообщения
1 415
Благодарностей
957
Баллы
113
Еще можно использовать готовое расширения для выполнения скриптов "Tampermonkey". Активно использую его для "прокачки функционала" нужных мне сайтов. ЧатГПТ отлично справляется с написанием скриптов под него.
Пример: На ресурсе есть статьи, просматривать их могут только друзья автора. Скрипт подсвечивает доступные стати, статьи где запрос уже отправлен, и автоматом отправляет новые запросы дружбы с проверками ответов(200\503 и тд) и тд. Короче действительно мощно можно прокачивать рутину.
 

vicos

Client
Регистрация
06.02.2017
Сообщения
158
Благодарностей
472
Баллы
63
Еще можно использовать готовое расширения для выполнения скриптов "Tampermonkey". Активно использую его для "прокачки функционала" нужных мне сайтов. ЧатГПТ отлично справляется с написанием скриптов под него.
Пример: На ресурсе есть статьи, просматривать их могут только друзья автора. Скрипт подсвечивает доступные стати, статьи где запрос уже отправлен, и автоматом отправляет новые запросы дружбы с проверками ответов(200\503 и тд) и тд. Короче действительно мощно можно прокачивать рутину.
Я считаю с пресетами есть где разгуляться
 
  • Спасибо
Реакции: Dmitriy_Zenno

Dr.Pipetka

Client
Регистрация
12.12.2017
Сообщения
1 415
Благодарностей
957
Баллы
113
Я считаю с пресетами есть где разгуляться
Да это я больше как просто инфу написал, вдруг кому в быту пригодится. В обычном браузере немного автоматизации тоже не мешает)
 

zinger

Client
Регистрация
29.03.2016
Сообщения
25
Благодарностей
5
Баллы
3
Это позволяет максимально приблизить поведение автоматизации к действиям реального пользователя и существенно снизить вероятность обнаружения со стороны целевых ресурсов.
Почему вы решили именно так? Каким образом перенос работы на странице в плагин скажется на уменьшении вероятности обнаружения автоматизации? И кубики стандартные используются.
 

web3grep

Client
Регистрация
27.11.2023
Сообщения
83
Благодарностей
167
Баллы
33
а пример расширения будет?
 
Регистрация
19.10.2018
Сообщения
205
Благодарностей
64
Баллы
28
С Canvas можно работать? Поиск по изображениям доступен если это использовать?
 

vicos

Client
Регистрация
06.02.2017
Сообщения
158
Благодарностей
472
Баллы
63
Почему вы решили именно так? Каким образом перенос работы на странице в плагин скажется на уменьшении вероятности обнаружения автоматизации? И кубики стандартные используются.
Это в двух словах не объяснишь.
Если коротко: представим магазин (то есть сайт), где охранник сидит за монитором и наблюдает, кто заходит в зал и что он делает. Все автоматизаторы, включая наш любимый ZennoPoster, выполняют примерно одни и те же действия — клики, ввод, переходы — и в этом случае охранник видит нас и фиксирует наше поведение. В случае же с браузерным расширением ситуация меняется: охранник видит, что товары перемещаются по магазину, кнопки нажимаются, формы становятся доступными, но он не видит, кто именно их перемещает и за счёт какого механизма. Это происходит потому что расширение выполняет логику вне зала магазина — в служебной зоне браузера, куда охраннику (JS сайта) нет доступа.
Насчет использования кубиков - они используются только для создания расширения и взаимодействия с ZennoBrowser исключительно запустить - остановить профиль и алгоритмы запуска
 

vicos

Client
Регистрация
06.02.2017
Сообщения
158
Благодарностей
472
Баллы
63
  • Спасибо
Реакции: Dmitriy_Zenno

vicos

Client
Регистрация
06.02.2017
Сообщения
158
Благодарностей
472
Баллы
63
С Canvas можно работать? Поиск по изображениям доступен если это использовать?
Можно посмотреть на расширения в Chrome store и подобрать подходящее. Любое из них можно написать самому под свои потребности, включая работу с изображениями.
 
  • Спасибо
Реакции: 6585_Лягуша

web3grep

Client
Регистрация
27.11.2023
Сообщения
83
Благодарностей
167
Баллы
33
расширение надо писать под свои задачи, поэтому смысла нет его выкладывать. Я показал технологию создания.
Это с чьей сторны оценивать - мне было бы интересно бы посмотрел как лайкер-репостер работает, который вы демонстрируете на видео - в деле.
И отталкиваться от готовой работы многим проще, чем от инструкции, в которой предлагается порешать каждую задачу по переносу функционала в js индивидуально с ГПТ. ИИ в зависимости от начального промпта может часами водить за нос вокруг одного пня если не понимать какого - нибудь нюанаса. Вам может как человеку у которого "уже был опыт разработки расширений" - смысла и нет. А вот остальным - вполне себе есть
 

vicos

Client
Регистрация
06.02.2017
Сообщения
158
Благодарностей
472
Баллы
63
Это с чьей сторны оценивать - мне было бы интересно бы посмотрел как лайкер-репостер работает, который вы демонстрируете на видео - в деле.
И отталкиваться от готовой работы многим проще, чем от инструкции, в которой предлагается порешать каждую задачу по переносу функционала в js индивидуально с ГПТ. ИИ в зависимости от начального промпта может часами водить за нос вокруг одного пня если не понимать какого - нибудь нюанаса. Вам может как человеку у которого "уже был опыт разработки расширений" - смысла и нет. А вот остальным - вполне себе есть
Проблема в том что файлы формата .crx(само расширение) и .js(исходные файлы) проблематично прикрепить и отправить(здесь на форуме не поддерживаются данные форматы), поскольку они исполняемые и мало ли что я туда мог запихнуть(теоретически). Там ведь ничего сложного нет, я показал на самом простом примере как сделать.
 

Вложения

Dr.Pipetka

Client
Регистрация
12.12.2017
Сообщения
1 415
Благодарностей
957
Баллы
113
  • Спасибо
Реакции: Dmitriy_Zenno и web3grep

vicos

Client
Регистрация
06.02.2017
Сообщения
158
Благодарностей
472
Баллы
63

web3grep

Client
Регистрация
27.11.2023
Сообщения
83
Благодарностей
167
Баллы
33
надеюсь ты не решил приколоться. вообще то .crx это тоже архвив .js файлов. и при передаче либо заблокируется либо сламается.
чем заблокируется? запакуйте все в зип и выложите - нет никаких проблем с этим. что не так с архивом в архиве почему это не работает у вас?
я прикладывал к своим постам и cs и dll другие "запрещенные файлы " - в архивах. Они и сейчас там куда были приложены
 

ShikoFess

Client
Регистрация
21.12.2017
Сообщения
161
Благодарностей
128
Баллы
43
Тоже подумал, что без готово примера по которому можно ориентироваться статья будто бы неполная. Вначале обрадывался интересным решением, потом разачоравался что нет даже базового примера по запаковке с си шарп на js. Этот же пример гораздо проще скормить ИИ чтобы он по аналогии делал другие расширения. И да любые файлы если в зип архив кинуть, то дает грузить. И да я знаю, что crx этот тот же архив. Будьте добры если не сложно скинуть пример расширения и js кода в архиве, заранее спасибо
 

vicos

Client
Регистрация
06.02.2017
Сообщения
158
Благодарностей
472
Баллы
63
чем заблокируется? запакуйте все в зип и выложите - нет никаких проблем с этим. что не так с архивом в архиве почему это не работает у вас?
я прикладывал к своим постам и cs и dll другие "запрещенные файлы " - в архивах. Они и сейчас там куда были приложены
Дико извиняюсь. Два дня не было доступа к компьютеру. Файлы прикрепил.
 

Вложения

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)