Selenium创建Chrome驱动配置代理时出现AttributeError的解决方法咨询
Selenium创建Chrome驱动配置代理时出现AttributeError的解决方法咨询
嗨,这个问题我之前也碰到过,原因是Selenium 4.x版本对代理配置的API做了重大调整——原来的Proxy.add_to_capabilities()方法被移除了,而且DesiredCapabilities也不再是推荐的配置方式啦。下面给你两种可行的解决方案,根据你的需求选就行:
方案一:直接用ChromeOptions配置基础代理(最简单)
如果你的需求只是设置统一的HTTP/HTTPS代理,直接通过Options添加启动参数是最直接的方式,代码如下:
from selenium import webdriver from selenium.webdriver.chrome.options import Options from selenium.webdriver.chrome.service import Service # 其他你需要的导入(比如等待、异常类)可以保留 HOSTNAME = "109.175.226.252" PORT = "12345" options = Options() # 核心:添加代理服务器参数 options.add_argument(f'--proxy-server=http://{HOSTNAME}:{PORT}') # 初始化Service(记得替换成你本地chromedriver的路径) srv = Service('C:/path/to/your/chromedriver.exe') # 初始化驱动,现在只需要传service和options就行 driver = webdriver.Chrome(service=srv, options=options)
方案二:用Proxy类配置复杂代理规则(适合进阶需求)
如果你需要更精细的代理设置——比如区分HTTP/HTTPS代理、绕过特定域名(如本地地址),可以用Proxy类生成配置字典,再通过Options的实验性选项传入:
from selenium import webdriver from selenium.webdriver.chrome.options import Options from selenium.webdriver.chrome.service import Service from selenium.webdriver.common.proxy import Proxy, ProxyType # 其他必要导入保留 HOSTNAME = "109.175.226.252" PORT = "12345" prox = Proxy() prox.proxy_type = ProxyType.MANUAL prox.http_proxy = f"{HOSTNAME}:{PORT}" prox.ssl_proxy = f"{HOSTNAME}:{PORT}" # 示例:添加不需要走代理的地址(逗号分隔) prox.no_proxy = "localhost,127.0.0.1,*.your-local-domain.com" options = Options() # 将Proxy对象转为字典,传入experimental_options options.add_experimental_option('proxy', prox.to_dict()) srv = Service('C:/path/to/your/chromedriver.exe') driver = webdriver.Chrome(service=srv, options=options)
额外提醒
- 确保你的Selenium版本是4.x及以上,旧版本的API已经被废弃;
- chromedriver的版本必须和你本地Chrome浏览器的版本匹配,不然可能出现兼容性问题;
- 如果你的代理需要用户名密码验证,还需要额外添加对应的参数或者使用扩展来处理(不过你没提这个需求,暂时就不说啦)。
备注:内容来源于stack exchange,提问作者Rapid1898
相关产品推荐
相关产品推荐

