方案一:(chrome有效,firefox无效)
ip_server = "183.146.156.222:24852"
proxy_username = "SJ3NYQK06YZY052O"
proxy_password = "5BF3CEHKB148"
proxy = Proxy({
'proxyType': ProxyType.MANUAL,
'httpProxy': ip_server,
'ftpProxy': ip_server,
'sslProxy': ip_server,
'socksUsername': proxy_username,
'socksPassword': proxy_password,
})
经过测试,这类设置在Firefox上无效果。这类方式应该可以解决某些代理弹出框输入用户名密码问题
driver = webdriver.Firefox(proxy=proxy)
方案二:
这类方案出发点在于浏览器插件,但是firefox每次升级,都不再向下兼容,导致以前很多插件都无法使用,比如说close和modify_headers都无法使用。
这2个插件可以单独使用,也可以配合使用。一个是用来禁止弹窗授权,然后使用 webdriver.FirefoxProfile() 方式把账号密码设置进去,设置之前还得进行encode64编码。
另外一个插件是修改请求头,代理服务器通过校验请求头是否携带账号密码信息,来判断认证通过。
如果你是最新的火狐浏览器,请放弃这种方案
方案三:
在本地创建profile文件,火狐每个用户可以个性化定制profile文件,把代理数据都配置在文件中。
这种方案笔者没有试过,不过许多人都说此方案可行。
方案四:
pip install selenium-wire
这个可真是神器,在selenium的基础上封装了一层,使得代理配置更加简单,并且各个driver统一起来更高效。
具体用法如下:
from seleniumwire import webdriver
proxy_username = "xxx"
proxy_password = "bbb"
ip_server = "%s:%s@183.333.222.222:1080"%(proxy_username,proxy_password)
options = {
'proxy': {
'http': 'http://'+ip_server,
'https': 'https://'+ip_server,
'no_proxy': 'localhost,127.0.0.1'
}
}
driver = webdriver.Firefox(seleniumwire_options=options))
笔者相信依然有许多其他办法,来解决代理授权登录问题。条条道路通罗马~!如果你有更好的建议,可以联系小编,将您的文章分享在我们平台上!