Я запускаю сценарии автоматизации Selenium, используя Python3, Linux и undetected_chrome.
Я также использую прокси.
Когда я запускаю только один экземпляр, он работает нормально и выполняет свою работу, однако в момент запуска второго экземпляра я получаю эту ошибку:
2024-04-30 00:09:28 - ERROR - HTTPConnectionPool(host='localhost',
port=44073): Max retries exceeded with url:
/session/2488e939aa54121cb42b165948495489/actions (Caused by
NewConnectionError('<urllib3.connection.HTTPConnection object at
0x7debd7c86fb0>: Failed to establish a new connection: [Errno 111]
Connection refused'))
Несмотря на то, что прокси меняются с каждым драйвером.
Я пробовал всевозможные решения, которые только мог придумать.
Возможно, полезно или похоже MaxRetryError Selenium
В этом решении используется SeleniumBase UC Mode вместо undetected-chromedriver
для скрытного запуска нескольких одновременных веб-браузеров: (pip install seleniumbase
)
import sys
from concurrent.futures import ThreadPoolExecutor
from seleniumbase import Driver
sys.argv.append("-n") # Activate SB thread-locking as needed
def launch_driver(url):
driver = Driver(uc=True)
try:
driver.uc_open_with_reconnect(url, 4)
driver.sleep(2)
finally:
driver.quit()
urls = ['https://gitlab.com/users/sign_in' for i in range(3)]
with ThreadPoolExecutor(max_workers=len(urls)) as executor:
for url in urls:
executor.submit(launch_driver, url)
Обязательно замените пример URL-адреса (в котором используется программное обеспечение для обнаружения ботов) на нужный вам URL-адрес.
Это действительно была проблема с undetected-chrome, поскольку в тот момент, когда я изменил драйвер на использование seleniumbase, он работал очень хорошо и правильно обрабатывал тайм-ауты, не вызывая эту ошибку снова. Хотя я не использовал именно тот сценарий, который вы предоставили, но предложение seleniumbase изменило правила игры и заставило код снова работать.
Предоставьте достаточно кода, чтобы другие могли лучше понять или воспроизвести проблему.