需要在Selenium Chrome Webdriver中覆盖循环中的代理



我知道围绕这个话题有很多问题。但是,我有不同的情况,但错误相同。

我可以通过在chrome驱动程序中设置ChromeOptions来设置代理。

但是,每次创建 Chrome 驱动程序对象时,我都需要设置一个新的代理网址。我正在循环中创建驱动程序对象。

我第一次能够使用 ip:port 设置代理。但是当我尝试使用不同的 URL(可能是错误的 IP:Port(更新代理时,当前代理不会覆盖以前的代理。

我正在测试此方案以第一次提供正确的代理,第二次提供错误的代理。第二次,URL连接成功,它应该是。

请帮助我在代码中缺少的内容。以下是我用来设置代理的代码:

for(String proxyUrl: listOfUrls){     
Proxy proxy = new Proxy();
proxy.setHttpProxy(proxyUrl)
.setSslProxy(proxyUrl);
proxy.setNoProxy("");
ChromeOptions options = new ChromeOptions();
options.addArguments("--start-maximized");
options.addArguments("--verbose");
options.addArguments("--whitelisted-ips=''");
//I am setting it as just an option. Only using this does not work.
options.addArguments("--proxy-server="+proxyUrl);
//This is mandatory to set the proxy
options.setProxy(proxy);
WebDriver driver = new ChromeDriver(options);
driver.get(url);
... some code
driver.quit();
}

也许不是最好的解决方案,但你可以试试: 您可以使用urllib2检查代理是否正常工作,然后启动驱动程序,

import urllib2, socket
socket.setdefaulttimeout(180)
# read the list of proxy IPs in proxyList
proxyList = ['172.30.1.1:8080', '172.30.3.3:8080'] # there are two sample proxy ip
def is_bad_proxy(pip):    
try:        
proxy_handler = urllib2.ProxyHandler({'http': pip})        
opener = urllib2.build_opener(proxy_handler)
opener.addheaders = [('User-agent', 'Mozilla/5.0')]
urllib2.install_opener(opener)        
req=urllib2.Request('http://www.google.com')  # change the url address here
sock=urllib2.urlopen(req)
except urllib2.HTTPError, e:        
print 'Error code: ', e.code
return e.code
except Exception, detail:
print "ERROR:", detail
return 1
return 0
for item in proxyList:
if is_bad_proxy(item):
print "Bad Proxy", item
else:
print item, "is working"

这段代码来自:github感谢@RiccardoAncarani 里卡多安卡拉尼

相关内容

  • 没有找到相关文章

最新更新