概述
我正在使用代理网络,并希望在Python上使用Selenium来配置它。我见过许多帖子使用HOST:PORT方法,但是代理网络使用 http://USER:PASSWORD@PROXY:PORT的"URL方法“。
SeleniumWire
我发现SeleniumWire是将代理网络的"URL方法“连接到Selenium刮取器的一种方式。请参见基本的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 Repository 问题之后,我发现这是由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中加载。


码头配置
此配置的最终结果将是在港口容器(即Lambda函数中的)中运行python代码。不知道这是否引入了一个新的抽象级别。
摘要
我还可以使用哪些其他资源来正确配置Selenium以使用IP循环的"URL方法“?
版本
支持票
Github:https://github.com/SeleniumHQ/selenium/issues/10605
ChromeDriver:https://bugs.chromium.org/p/chromedriver/issues/detail?id=4118
发布于 2022-06-09 17:22:16
硒扩展:
代理网络或"URL“代理可以使用Selenium作为扩展进行配置。创建以下JS脚本和JSON文件:
JS脚本("background.js")
var config = {
mode: "fixed_servers",
rules: {
singleProxy: {
scheme: "http",
host: "<PROXY>",
port: parseInt(<PORT>)
},
bypassList: ["foobar.com"]
}
};
chrome.proxy.settings.set({value: config, scope: "regular"}, function() {});
function callbackFn(details) {
return {
authCredentials: {
username: "<USER>",
password: "<PASSWORD>"
}
};
}
chrome.webRequest.onAuthRequired.addListener(
callbackFn,
{urls: ["<all_urls>"]},
['blocking']
);JSON文件("manifest.json")
{
"version": "1.0.0",
"manifest_version": 2,
"name": "Chrome Proxy",
"permissions": [
"proxy",
"tabs",
"unlimitedStorage",
"storage",
"<all_urls>",
"webRequest",
"webRequestBlocking"
],
"background": {
"scripts": ["background.js"]
},
"minimum_chrome_version":"22.0.0"
}Zip background.js和manifest.json as proxy.zip并编写了以下代码:
from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_extension("proxy.zip")
driver = webdriver.Chrome(options=options)
driver.get("https://whatismyipaddress.com/")发布于 2022-08-23 09:15:21
试着用这个
options.add_argument("--ignore-certificate-errors")https://stackoverflow.com/questions/70806778
复制相似问题