在未检测到的 chromedriver 中使用代理时出现 ERR_TUNNEL_CONNECTION_FAILED

问题描述 投票:0回答:1

当我这样设置代理时:

options = uc.ChromeOptions()
options.add_argument(f'--proxy-server={host}:{port}')

我在许多网站上收到 ERR_TUNNEL_CONNECTION_FAILED 错误。

当我按照建议here使用desired_capability设置代理时,我遇到了困难,因为我无法使所需的功能与未检测到的chromedriver一起使用

我试过这个:

import random
import time
from selenium.webdriver import DesiredCapabilities
from undetected_chromedriver import Chrome, ChromeOptions

# Read user agents from file
with open("user-agents.txt", "r") as file:
    user_agents = file.readlines()

# Choose a random user agent
random_user_agent = random.choice(user_agents).strip()

# Generate a random number between 0 and 9
random_number = random.randint(0, 9)

# Define proxy settings
proxy_host = "gate.smartproxy.com"
proxy_port = 10000 + random_number
proxy = f"{proxy_host}:{proxy_port}"

# Set up Chrome options
options = ChromeOptions()

# Set user agent
options.add_argument(f"user-agent={random_user_agent}")

capabilities = DesiredCapabilities.CHROME.copy()
capabilities.CHROME['proxy'] = {
    "httpProxy": proxy,
    "ftpProxy": proxy,
    "sslProxy": proxy,
    "proxyType": "MANUAL",

}

# Add proxy configuration to Chrome options
options.add_argument("--disable-blink-features=AutomationControlled")

# Create the Undetected Chrome driver instance with configured options
driver = Chrome(options=options, desired_capabilities=capabilities)

# Navigate to a website to check the IP address
driver.get("https://www.whatismyip.com/")
time.sleep(10)  # Allow time for the page to load

# Keep the browser open for a long time for testing purposes
time.sleep(3000000)

谁有解决这个问题的方法?如何配置代理以在未检测到的 chromedriver 上的所有网站上工作?

python selenium-webdriver proxy undetected-chromedriver
1个回答
0
投票

SeleniumBase 具有 UC 模式,带有

undetected-chromedriver
的代理选项:

pip install seleniumbase
之后,您可以在设置代理详细信息后运行这些:

未经授权:

from seleniumbase import Driver
driver = Driver(uc=True, proxy="IP:PORT")

经过授权:

from seleniumbase import Driver
driver = Driver(uc=True, proxy="USER:PASS@IP:PORT")

适用于标准

driver
命令,还添加了一些新命令。

driver.get("https://www.whatismyip.com/")

为了更好地控制驱动程序与 Chrome 断开连接的时间以防止检测,您可以执行以下操作:

driver.uc_open_with_reconnect("https://top.gg/", 5)

最重要的是,请确保使用

uc=True
在 SeleniumBase 中激活 UC 模式。 (默认情况下不启用该模式。)还有其他方法可以激活它,例如使用
SB(uc=True)
上下文管理器。 (它位于 SeleniumBase 文档中。)

© www.soinside.com 2019 - 2024. All rights reserved.