当我这样设置代理时:
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 上的所有网站上工作?
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 文档中。)