我已经进行了大量搜索,但是有很多令人困惑的片段非常相似。
我尝试使用
DesiredCapabilities
、ChromeOptions
、Options
和一系列参数,但没有任何效果:( 它无法设置代理。
例如(
ChromeOptions
)
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--proxy=https://' + proxy_ip_and_port)
chrome_options.add_argument('--proxy-auth=' + proxy_user_and_pass)
chrome_options.add_argument('--proxy-type=https')
browser = webdriver.Chrome("C:\drivers\chromedriver.exe")
另一个例子(
Options
)
options = Options()
options.add_argument('--proxy=https://' + proxy_ip_and_port)
options.add_argument('--proxy-auth=' + proxy_user_and_pass)
options.add_argument('--proxy-type=https')
browser = webdriver.Chrome("C:\drivers\chromedriver.exe", chrome_options=options)
我还使用
--proxy-server
代替--proxy-auth
,--proxy-type
...等,甚至格式为:'--proxy-server=http://' + proxy_user_and_pass + '@' + proxy_ip_and_port
另一个例子(
DesiredCapabilities
)
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
capabilities = dict(DesiredCapabilities.CHROME)
capabilities['proxy'] = {'proxyType': 'MANUAL',
'httpProxy': proxy_ip_and_port,
'ftpProxy': proxy_ip_and_port,
'sslProxy': proxy_ip_and_port,
'noProxy': '',
'class': "org.openqa.selenium.Proxy",
'autodetect': False}
capabilities['proxy']['socksUsername'] = proxy_user
capabilities['proxy']['socksPassword'] = proxy_pass
browser = webdriver.Chrome(executable_path="C:\drivers\chromedriver.exe", desired_capabilities=capabilities)
我也在 Firefox 中尝试过,但发生了同样的问题,它使用具有我的正常 IP 的浏览器。
根据 最新文档(2020 年 7 月),您将
DesiredCapabilities
设置为 FIREFOX
或 CHROME
。
我已经在 Firefox 上进行了测试。您可以稍后检查浏览器的连接设置以验证代理设置是否正确。
from selenium import webdriver
PROXY = "<HOST>:<PORT>" # HOST can be IP or name
webdriver.DesiredCapabilities.FIREFOX['proxy'] = {
"httpProxy": PROXY,
"ftpProxy": PROXY,
"sslProxy": PROXY, # this is the https proxy
"proxyType": "MANUAL",
}
with webdriver.Firefox() as driver:
# Open URL
driver.get("https://selenium.dev")
proxy-dict 本身记录在 Selenium wiki 中。您将在此处看到属性
sslProxy
设置 https 的代理。
不过我还没有针对 Chrome 测试过它。如果它不起作用,您可以在 Google 的 ChromeDriver 文档 中找到线索。据此,您还需要使用
desired_capabilites
参数实例化网络驱动程序(这实际上与您的示例非常相似,因此现在这更多的是猜测而不是经过验证的解决方案):
caps = webdriver.DesiredCapabilities.CHROME.copy()
caps['proxy'] = ... # like described above
driver = webdriver.Chrome(desired_capabilities=caps)
driver.get("https://selenium.dev")
在 Chrome 中:
options.add_argument('--proxy-server=
driver = webdriver.Chrome(选项=选项,服务=ChromeService(ChromeDriverManager().install()))
如果您想使用登录名和密码,您需要使用 seleniumwire.webdriver,而不是 selenium.webdriver。在终端中:pip install selenium-wire 等...