@Realno_chel регуляркой получить все цифры,4 в списке ваша
Как держать и обновлять пул открытых и настроенных браузеров, ожидающих задание.
-
Всем привет.
У меня реализован проект, состоящий из трех функций:
Функция #1 — Main: поднимает Express-сервер на выделенном порту (API). Принимает входящие запросы (задания) и при их поступлении инициирует выполнение функции #2.
Функция #2 — Worker: получает параметры из задания (прокси, URL, ID). На основе этих параметров выполняется настройка прокси, подбор отпечатка браузера (fingerprint) и запуск браузера, в котором открывается целевая ссылка.
Функция #3 — Callback: получает данные, обработанные функцией #2, и возвращает результат клиенту.
Проект работает стабильно, однако есть узкое место: проверка прокси, получение отпечатка и запуск браузера занимают значительно больше времени, чем непосредственное открытие страницы и сбор данных.
Задача: хотелось бы реализовать пул предварительно запущенных браузеров с настроенными прокси и отпечатками, которые находятся в режиме ожидания. При поступлении задания браузер из пула получает URL, открывает его, выполняет необходимые действия и завершает сессию. После завершения браузер закрывается, а на его место автоматически запускается новый экземпляр с обновленными параметрами (прокси/fingerprint), который снова переходит в режим ожидания.
Вопрос: реализуемо ли подобное решение в принципе? Т.е. часть функционала из функции #2 перенести в новую функцию, которая будет отвечать за предварительную настройку браузера и его запуск. Так же мониторить и поддерживать кол-во запущенных браузеров. Функцию #2 оставить только для открытия ссылки и получения данных со страницы.
Нужны именно свежие браузеры, иначе бы создал профили и привязал к каждому заданию свой профиль индивидуальный.
-
@Automator у бас есть библиотеки для работы с браузером напрямую в nodes, python,c# . Там это не составит проблем, у меня такое работает. Если писать в самом БАС наверное тоже можно придумать какие-то костыли но я отошёл от этого )
-
@Automator said in Как держать и обновлять пул открытых и настроенных браузеров, ожидающих задание.:
@usertrue, благодарю за отклик. Библиотеки - это py-bas-automation / bas-remote-node / bas-remote-python / basremote net?)
Да
-
@Automator said in Как держать и обновлять пул открытых и настроенных браузеров, ожидающих задание.:
@usertrue, еще раз спасибо. По кастомизации явно на голову выше при работе с библиотеками, а в плане анонимности/безопасности не будет уступать работе через BAS?
Так это и есть бас. Единственное там браузер плохо обновляют. Лично я сдлал fork и сам обновляю
-
@FastSpace, буду признателен за любые подсказки. В рамках BAS пока удалось реализовать только подобный костыльный подход))
Ранее я уже реализовывал аналогичное самописное решение на стеке Octo + Playwright + Docker + CDP, но для текущей задачи это избыточно как с точки зрения инфраструктуры, так и по затратам. Поэтому начал изучать альтернативные варианты. Текущий проект на BAS уже закрывает 80% требуемого функционала. Осталось реализовать механизм "горячих" профилей и будет хорошо) -
@Automator said in Как держать и обновлять пул открытых и настроенных браузеров, ожидающих задание.:
буду признателен за любые подсказки
Посмотри как сделан под капотом https://github.com/bablosoft/browser-with-fingerprints/blob/master/project.xml.
Программа на BAS следит в цикле за файликами в папке, как только они появляются, скрипт(на BAS) их парсит и выполняет. Это очень простая и надежная логика.
Можно ее перенести и на твой скрипт, не надо "мудрить" с запуском Node.js локально c API, особенно если это сделано во внутри BAS.
Если уже очень хочется иметь API, то лучше делать его рядом на чем угодно, а этот API будет складывать файлики в заданиями в папочку, а скрипт на BAS оттуда их брать.
-
@Automator said in Как держать и обновлять пул открытых и настроенных браузеров, ожидающих задание.:
И за либу (py-bas-automation)
Это НЕ production ready проект, а демонстрация pof.
-
@Automator проблема
проверка прокси, получение отпечатка и запуск браузера- Проверку проксю можно ускорить, там не сложно. Поковырять немного type script
- Отпечатки можно выкачать заранее. Я из своей базы их получаю за 0.1 сек.
- С запуск браузера надо городить, но тоже решается.
-
Всем кто откликнулся большое спасибо.
Удалось добить эти недостающие 20% в проекте BASa. Теперь задача выполняется ~5 секунд (было ~30 секунд).
Но действительно проще кодом сразу начинать... Все равно большая часть функционала через кубик - кастом код.@FastSpace said in Как держать и обновлять пул открытых и настроенных браузеров, ожидающих задание.:
Отпечатки можно выкачать заранее. Я из своей базы их получаю за 0.1 сек.
Добавил такое) Все задачи которые прошли валидацию сохраняют отпечатки в файл. Позже добавлю отправку в supabase а не файл и уже буду их использовать.