使用Selenium与Docker配置代理遇到问题求助
问题解决:Chrome忽略代理设置的原因及修复
你的代码里有个关键错误:配置好代理的chrome_options变量根本没传给webdriver.Remote,反而在参数里重新创建了一个空的webdriver.ChromeOptions(),导致所有代理、无头模式这些配置完全没生效。
修正后的代码
def get_chrome_driver(proxy): proxy = str(proxy) chrome_options = webdriver.ChromeOptions() chrome_options.add_argument(f'--proxy-server={proxy}') # 注意参数名是--proxy-server,不是--proxy chrome_options.add_argument("--no-sandbox") chrome_options.add_argument("--headless=new") # 新版Chrome推荐用该参数,旧--headless存在兼容性问题 chrome_options.add_argument("--disable-gpu") driver = webdriver.Remote( command_executor='http://chrome:4444/wd/hub', options=chrome_options # 传入配置好的chrome_options,而非新建空对象 ) return driver
额外排查点
- 代理格式要正确:必须带上协议前缀,比如
http://192.168.1.1:8080或socks5://10.0.0.2:1080,不能只传ip:port - 检查Docker网络:确保Python爬虫容器、selenium-chrome容器、代理服务器在同一个Docker网络内,否则容器间无法通信
- 若代理需用户名密码认证,需额外添加
--proxy-auth=用户名:密码参数,或配置对应Chrome扩展
内容的提问来源于stack exchange,提问作者tjwnuk
相关产品推荐
相关产品推荐

