mar*_*n's 20 python selenium google-chrome selenium-chromedriver
搜索了好几个小时后,我开始认为这是不可能的.
我需要为每次运行使用不同的经过身份验证的(非公开的)代理来运行Chrome.
PROXY_IP = "<some IP address>"
UID = "<the user id>"
PWD = "<the password">
options = webdriver.ChromeOptions()
options.add_argument("--proxy-server=%s:%s@%s" % (UID,PWD,PROXY_IP))
driver = webdriver.Chrome(executable_path=".\\driver\\chromedriver.exe",
chrome_options=options)
driver.get("<site URL>")
Run Code Online (Sandbox Code Playgroud)
Chrome会启动并显示错误:
This webpage is not available
ERR_NO_SUPPORTED_PROXIES
Run Code Online (Sandbox Code Playgroud)
如果我使用公共代理不需要像这样的身份验证...
PROXY_IP = "<public proxy IP address>"
options = webdriver.ChromeOptions()
options.add_argument("--proxy-server=%s" % PROXY_IP)
driver = webdriver.Chrome(executable_path=".\\driver\\chromedriver.exe",
chrome_options=options)
driver.get("<site URL>")
Run Code Online (Sandbox Code Playgroud)
...它运行得很好,并在使用代理时显示网站.
我还在http://用户ID前面尝试了一个变体:
options.add_argument("--proxy-server=http://%s:%s@%s" % (UID,PWD,PROXY_IP))
Run Code Online (Sandbox Code Playgroud)
事实上,我已经广泛搜索并且没有找到解决方案,这让我相信没有一个可能存在.
我找到了这个,但我无法理解它:
不知道是什么browswermob-proxy或应该做什么或如何在Python中实现和测试.除非绝对必要,否则我讨厌堆积创可贴解决方案.
Bla*_*ter 15
要在 python selenium 中使用带有 auth 的代理,您可以使用seleniumwire。
首先,安装它 pip install selenium-wire
然后从 seleniumwire 导入 webdriver 而不是 selenium
from seleniumwire import webdriver
options = {
'proxy': {
'http': 'http://username:password@host:port',
'https': 'https://username:password@host:port',
'no_proxy': 'localhost,127.0.0.1' # excludes
}
}
browser = webdriver.Chrome(path_to_driver, seleniumwire_options=options)
Run Code Online (Sandbox Code Playgroud)
现在您可以使用与 selenium 完全相同的浏览器实例:browser.get('https://api.ipify.org')等等...
我尝试了很多时间来做同样的事情。
Chrome 仅使用安装它的操作系统的代理。您可以通过转到选项->查找:代理->更改代理设置来检查它
因此,如果没有额外的插件并配置此插件,您就无法做到这一点。
或者您可以更改操作系统代理设置——这要容易得多。
你也可以使用 phantomjs——它与 chrome 具有相同的引擎(WebKit)。使用这样的东西:
String PROXY = proxyIP + ":" + proxyPort;
String proxyAuth= proxyUser + ":" + proxyPass;
OpenQA.Selenium.Proxy proxy = new OpenQA.Selenium.Proxy();
proxy.HttpProxy = PROXY;
proxy.FtpProxy = PROXY;
proxy.SslProxy = PROXY;
proxy.SocksProxy = PROXY;
var serviceJS = PhantomJSDriverService.CreateDefaultService(phantomPath);
serviceJS.AddArguments("--proxy=" + PROXY, "--proxy-type=http", "--proxy-auth=" + proxyAuth);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13488 次 |
| 最近记录: |