Запуск нескольких экземпляров селена приводит к ошибке соединения

Я запускаю сценарии автоматизации 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'))

Несмотря на то, что прокси меняются с каждым драйвером.

Я пробовал всевозможные решения, которые только мог придумать.

  • Я перешел на разные сценарии и запускал их с разных терминалов.
  • Я запустил один экземпляр с прокси и один раз без прокси.
  • Я запустил автоматизацию для сайта Scrapeme, чтобы узнать, не блокирует ли меня сайт, но произошло то же самое.
    Это все, о чем я мог подумать, но ничего не добился. Меня действительно прослушивают, и я не знаю, где на самом деле ошибка.
    Можете ли вы помочь мне с этим?

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

Community 30.04.2024 03:42

Возможно, полезно или похоже MaxRetryError Selenium

chickity china chinese chicken 30.04.2024 03:47
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
2
62
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В этом решении используется 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 изменило правила игры и заставило код снова работать.

Wajih Wanis 03.05.2024 10:13

Другие вопросы по теме