如何为Python环境下的Chrome WebDriver 2.36版本设置代理?(报错求助)
解决Selenium 2.36 ChromeDriver代理设置报错ERR_NO_SUPPORTED_PROXIES的问题
你遇到的核心问题是代理参数格式错误,再加上2.36版本ChromeDriver对代理配置有更严格的要求,咱们一步步来搞定:
问题根源
你直接把proxies字典传给了--proxy-server参数,但ChromeDriver的这个参数只接受字符串格式的代理地址,完全不支持字典类型。而且你同时指定了不同的http和https代理,2.36版本的ChromeDriver无法识别这种拆分配置,这才抛出了ERR_NO_SUPPORTED_PROXIES错误。
解决方案
1. 统一代理地址格式(优先推荐)
如果你的代理同时支持http和https协议,直接用一个代理地址即可,格式为http://ip:port(注意即使是https请求,也用http开头的代理地址,Chrome会自动适配协议):
from selenium import webdriver # 统一使用支持双协议的代理地址 proxy = "http://210.213.90.61:80" chrome_options = webdriver.ChromeOptions() chrome_options.add_argument('--proxy-server=%s' % proxy) # 2.36版本的参数写法是正确的,注意路径用r前缀避免转义问题 driver = webdriver.Chrome(executable_path=r"C:\Users\Andrei\Downloads\webdriver2\chromedriver.exe", chrome_options=chrome_options) driver.get('https://www.amazon.com/Nokia-Body-Composition-Wi-Fi-Scale/dp/B071XW4C5Q/ref=sr_1_1/138-3260504-2979110?s=bedbath&ie=UTF8&qid=1520585204&sr=1-1&keywords=-sdfg')
2. 若必须区分http/https代理(复杂方案)
如果你的http和https代理确实是两个不同的地址,2.36版本的ChromeDriver需要通过Chrome扩展或者配置PAC文件来实现,但这种方式操作繁琐。更务实的建议是先确认你的代理是否支持双协议,优先用统一代理方案。
3. 验证代理有效性
报错也可能是代理本身不可用,你可以先在Chrome浏览器手动设置这个代理,看看能不能正常访问亚马逊页面,排除代理本身的问题。
额外提醒
因为你是为了解决send_keys问题降到2.36版本,记得确认这个版本的ChromeDriver和你本地安装的Chrome浏览器版本是否兼容,版本不匹配也会导致各种奇怪的问题。
内容的提问来源于stack exchange,提问作者ryy77
相关产品推荐
相关产品推荐

