【问题标题】:Selenium Chrome & Firefox WebDriver: Set HTTPS proxy in PythonSelenium Chrome & Firefox WebDriver:在 Python 中设置 HTTPS 代理
【发布时间】:2018-03-21 11:37:05
【问题描述】:

我已经进行了大量搜索,但是有很多令人困惑的 sn-ps,它们非常相似。

我尝试使用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 的浏览器。

【问题讨论】:

标签: python selenium selenium-chromedriver http-proxy selenium-firefoxdriver


【解决方案1】:

根据latest documentation(2020 年 7 月),您将 DesiredCapabilities 设置为 FIREFOX 或 CHROME。

我已经为 Firefox 测试过它。之后您可以检查浏览器的connection settings 以验证代理设置是否正确。

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 documentation 中找到线索。据此,您还需要使用 desired_capabilites 参数实例化 webdriver(这实际上与您的示例非常相似,因此现在这更像是猜测而不是经过验证的解决方案):

caps = webdriver.DesiredCapabilities.CHROME.copy()
caps['proxy'] = ... # like described above
driver = webdriver.Chrome(desired_capabilities=caps)
driver.get("https://selenium.dev")

【讨论】:

    猜你喜欢
    • 2019-08-07
    • 2019-01-19
    • 2015-03-19
    • 2015-07-29
    • 2012-07-12
    • 2018-02-07
    • 2020-08-07
    • 2015-06-28
    相关资源
    最近更新 更多