我知道围绕这个话题有很多问题。但是,我有不同的情况,但错误相同。
我可以通过在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 里卡多安卡拉尼