【发布时间】:2022-08-23 17:15:21
【问题描述】:
概述
我正在使用代理网络,并希望在 Python 上使用 Selenium 对其进行配置。我见过很多帖子使用HOST:PORT 方法,但代理网络使用\"URL 方法\" 的http://USER:PASSWORD@PROXY:PORT
硒线
我发现SeleniumWire 是一种连接“URL 方法”的方法Selenium Scraper 的代理网络。请参阅基本的 SeleniumWire 配置:
from seleniumwire import webdriver
options = {
\'proxy\':
{
\'http\': \'http://USER:PASSWORD@PROXY:PORT\',
\'https\': \'http://USER:PASSWORD@PROXY:PORT\'
},
}
driver = webdriver.Chrome(seleniumwire_options=options)
driver.get(\"https://some_url.com\")
这个正确地向驱动程序添加和循环代理,然而在许多网站上刮板很快被堵住通过 CloudFlare。这种阻塞是在本地 IP 上运行时不会发生的事情。搜索 SeleniumWire 的 GitHub RepositoryIssues 后,发现这是 TLS 指纹识别造成的,并且有目前没有解决方案到这个问题。
硒选项
我尝试以传统的 selenium 方式配置代理:
from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument(\"--proxy-server=http://USER:PASSWORD@PROXY:PORT\")
driver = webdriver.Chrome(options=options)
driver.get(\"https://some_url.com\")
浏览器实例确实打开但由于网络错误而失败.浏览器实例才不是加载已建立的 URL。
码头工人配置
此配置的最终结果将是运行 python 代码在 docker 容器内那是在 Lambda 函数中.不知道这是否引入了新的抽象级别。
概括
我可以使用哪些其他资源来正确配置我的 Selenium 刮刀以使用 IP 循环的“URL 方法”?
版本
- 蟒蛇3.9
- 硒 3.141.0
- 码头工人 20.10.11
支持票
Github:https://github.com/SeleniumHQ/selenium/issues/10605
铬驱动程序:https://bugs.chromium.org/p/chromedriver/issues/detail?id=4118
标签: python docker selenium selenium-webdriver proxy