我试图使用带有用户名和密码的代理身份验证来访问url。
我找到了一个使用代理身份验证的包:selenium-wire on https://github.com/wkeeling/selenium-wire
我编写了以下代码
from seleniumwire import webdriver
df_proxies=WebShare_Proxies()
args=df_proxies.values[random.choice(df_proxies.index)].tolist()
proxy_ip,proxy_port,username,password=args
url='https://fra.privateinternetaccess.com/pages/whats-my-ip/'
proxyString=username+":"+password+"@"+str(proxy_ip)+":"+str(proxy_port)
options = {
'proxy': {
'http': 'http://'+proxyString,
'https': 'https://'+proxyString,
'no_proxy': 'localhost,127.0.0.1'
}
}
driver = webdriver.Firefox(seleniumwire_options=options)WebShare_Proxies()调用https://www.webshare.io/ API以获取代理列表,我的代理使用用户名和密码进行身份验证。
proxyString
'$myusername:$mypassword@45.95.96.187:8746'调用webdriver.Firefox(seleniumwire_options=options)时出现以下错误
...in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: invalid argument: can't kill an exited process有人知道如何克服这个错误吗?
谢谢你的考虑
发布于 2022-05-16 16:05:54
我想你误解了什么是
seleniumwire是一个包,它使您能够像在chrome dev工具中一样检查selenium提出的请求,它通过运行mitmproxy实例并通过它代理请求来完成这一任务。
mitmproxy是一个调试代理,位于客户端(在本例中为selenium实例)和internet之间,允许您拦截、修改和检查客户端发出的请求,您不能使用超过两个带有selenium的代理,因此为了使用您自己的代理,您需要使用一个常规的selenium实例。
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
a = "proxyaddress:port:user:password"
chrome_options.add_argument('--proxy-server=:{}'.format(a))
driver = webdriver.Chrome(options=chrome_options)https://stackoverflow.com/questions/67701831
复制相似问题