You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Selenium中代理未生效问题排查求助

问题排查与修正方案

你的代码存在几个关键问题,导致代理无法生效,逐一说明并修正:

错误点分析

  • 未启动浏览器实例:你只修改了webdriver.DesiredCapabilities.CHROME的配置,但从未用这个配置初始化Chrome浏览器,代理设置根本没被应用到实际的浏览器会话中。
  • 代理格式错误:
    • 读取代理时没有去除换行符(\n),从文件读取的每一行代理末尾都带有换行符,直接使用会导致代理地址无效。
    • 错误地给代理添加了<>包裹,这完全不符合Selenium代理配置的格式要求,代理地址应该直接用IP:端口的纯文本格式。
  • 无法动态切换代理:Selenium的浏览器实例启动后,无法通过修改DesiredCapabilities来动态切换代理,必须为每个代理重新创建新的浏览器实例。
  • 文件资源未正确管理:直接用open()打开文件后没有关闭,容易引发资源泄漏,建议使用with语句自动管理文件。

修正后的代码

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from time import sleep

# 输入代理列表文件路径
print("=======================================")
proxy_file_path = input("*\n-- please enter PROXY LIST: ")
print("*\n=======================================")

# 使用with语句自动管理文件
with open(proxy_file_path, "r") as file_proxy:
    # 遍历每一行代理,去除换行符
    for proxy in file_proxy:
        proxy = proxy.strip()  # 去掉换行符和首尾空白
        if not proxy:  # 跳过空行
            continue
            
        # 配置Chrome选项
        chrome_options = Options()
        # 添加代理配置
        chrome_options.add_argument(f'--proxy-server=http://{proxy}')
        
        # 用新的配置启动浏览器
        driver = webdriver.Chrome(options=chrome_options)
        
        # 可以添加验证代理的操作,比如访问查询IP的页面
        driver.get("https://icanhazip.com")
        
        # 停留20秒后关闭浏览器
        sleep(20)
        driver.quit()

关键说明

  • 使用ChromeOptions来配置代理是当前Selenium 4+版本的推荐方式,比修改DesiredCapabilities更直观可靠。
  • 每次循环都创建新的driver实例并在结束后调用quit()关闭,确保每个代理对应独立的浏览器会话,实现代理切换。
  • proxy.strip()去除了每行末尾的换行符,避免代理地址包含无效字符。
  • 添加了空行判断,防止文件中的空行导致错误。

内容的提问来源于stack exchange,提问作者emanuel victor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 03:25:23