我正在尝试使用代理身份验证以及用户名和密码来访问网址。
我找到了一个使用代理身份验证的包:
selenium-wire
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:[email protected]: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
有人知道如何克服这个错误吗?
谢谢您的考虑
我认为你误解了 seleniumwire 是什么
seleniumwire 是一个包,使您能够检查 selenium 发出的请求,就像在 chrome 开发工具中一样,它通过运行 mitmproxy 实例并通过它代理请求来实现此目的
mitmproxy 是一个调试代理,位于客户端(在本例中为 selenium 实例)和互联网之间,允许您拦截客户端发出的修改和检查请求 你不能使用超过 2 个带有 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)
Botasaurus 框架支持 SSL,其经过身份验证的代理 sych 为 http://username:password@proxy-provider-domain:port。
pip install botasaurus
from botasaurus import *
@browser(proxy="http://username:password@proxy-provider-domain:port") # TODO: Replace with your own proxy
def visit_ipinfo(driver: AntiDetectDriver, data):
driver.get("https://ipinfo.io/")
driver.prompt()
visit_ipinfo()
您可以了解关于Botasaurus 这里。