首页 > 解决方案 > 如何使用 chromedriver 和 python 修复 selenium 代理

问题描述

代理使用 requests 库但不使用 selenium,但是 selenium 在不使用代理时功能齐全。

我已经尝试了许多来自 stackoverflow 的关于如何使用 selenium 代理的建议。最常见的是我粘贴在代码片段中的内容。但是,每次我使用它时,请求都会失败。

代理绝对可以通过请求库进行操作。

当我从 chrome 选项中删除代理参数时,它可以正常工作,但不能与代理参数一起使用。

任何人都可以推荐一些帮助

proxy = 'MY_PROXY_GOES_HERE'
url = 'https://google.co.uk/'

# Try with selenium 

driver_path = "chromedriver"
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument(f'--proxy-server={proxy}')
driver = webdriver.Chrome(executable_path=driver_path, chrome_options=chrome_options)
driver.implicitly_wait(30)  # seconds
driver.get(url=url)

# Try with requests

proxies = {'https': proxy}
response = requests.get(url, proxies=proxies)

标签: pythonseleniumpython-requests

解决方案


我试过你的代码,它可以工作,见下文。我只添加了一个随机代理服务器。根据您得到的异常,可能的猜测是隐式等待导致超时。所以我从下面的代码中删除了它。如果您(仍然?)超时尝试将默认页面超时(driver.set_page_load_timeout(xxx))更改为更高的值,chromedriver 的默认值为 60 秒。

from selenium import webdriver

proxy = 'http://202.60.227.65:57887'
url = 'https://google.co.uk/'

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument(f'--proxy-server={proxy}')
driver = webdriver.Chrome(options=chrome_options)
driver.get(url=url)

推荐阅读