Всем привет.
У меня реализован проект, состоящий из трех функций:
Функция #1 — Main: поднимает Express-сервер на выделенном порту (API). Принимает входящие запросы (задания) и при их поступлении инициирует выполнение функции #2.
Функция #2 — Worker: получает параметры из задания (прокси, URL, ID). На основе этих параметров выполняется настройка прокси, подбор отпечатка браузера (fingerprint) и запуск браузера, в котором открывается целевая ссылка.
Функция #3 — Callback: получает данные, обработанные функцией #2, и возвращает результат клиенту.
Проект работает стабильно, однако есть узкое место: проверка прокси, получение отпечатка и запуск браузера занимают значительно больше времени, чем непосредственное открытие страницы и сбор данных.
Задача: хотелось бы реализовать пул предварительно запущенных браузеров с настроенными прокси и отпечатками, которые находятся в режиме ожидания. При поступлении задания браузер из пула получает URL, открывает его, выполняет необходимые действия и завершает сессию. После завершения браузер закрывается, а на его место автоматически запускается новый экземпляр с обновленными параметрами (прокси/fingerprint), который снова переходит в режим ожидания.
Вопрос: реализуемо ли подобное решение в принципе? Т.е. часть функционала из функции #2 перенести в новую функцию, которая будет отвечать за предварительную настройку браузера и его запуск. Так же мониторить и поддерживать кол-во запущенных браузеров. Функцию #2 оставить только для открытия ссылки и получения данных со страницы.
Нужны именно свежие браузеры, иначе бы создал профили и привязал к каждому заданию свой профиль индивидуальный.