在Python + Selenium + Firefox WebDriver上配置代理

时间:2019-03-15 21:48:53

标签: python-3.x selenium selenium-webdriver selenium-firefoxdriver

我无法通过Selenium Firefox WebDriver使用代理进行连接。

使用此配置,将生成连接,但不是通过代理而是通过本地服务器生成连接。

关于此问题和this documentation,,有两个问题,但似乎没有一个能够解决python3的问题:

def selenium_connect():

    proxy = "178.20.231.218"
    proxy_port = 80
    url = "https://www.whatsmyip.org/"

    fp = webdriver.FirefoxProfile()
    # Direct = 0, Manual = 1, PAC = 2, AUTODETECT = 4, SYSTEM = 5
    fp.set_preference("network.proxy.type", 1)
    fp.set_preference("network.proxy.http",proxy)
    fp.set_preference("network.proxy.http_port",proxy_port)
    fp.update_preferences()
    driver = webdriver.Firefox(firefox_profile=fp)
    driver.get(url)

我正在使用Firefox Webdriver版本52.0.2和Python 3.7,以及标准的Ubuntu 16.04 Docker环境。

2 个答案:

答案 0 :(得分:0)

您是否不需要使用DesiredCapabilities而不是在FirefoxProfile中设置代理?如下所示。

from selenium import webdriver
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.common.proxy import Proxy

proxy_to_use= "xxx.xxx.xxx.xxx"
desired_capability = webdriver.DesiredCapabilities.FIREFOX
desired_capability['proxy'] = {
    'proxyType': "manual",
    'httpProxy': proxy_to_use,
    'ftpProxy': proxy_to_use,
    'sslProxy': proxy_to_use
        }
 browser = webdriver.Firefox(capabilities=desired_capability)
 browser.get(“http://www.whatsmyip.org”)

答案 1 :(得分:0)

我通过在Windows级别而不是通过Selenium遍历代理来解决此问题。

通过通过PUTTY以编程方式重新配置SSH连接,这将为整个会话创建隧道。前期设置要多一些,但要可靠得多。

我使用AppRobotic之类的工具,该工具与Windows紧密集成,但是任何出色的宏或RPA产品都可以。我将Python绑定与Selenium结合使用,但是使用VBScript来更新Windows配置。

用Python编写的主要AppRobotic脚本可以在每次迭代中内联运行代理配置更新脚本,同时自动化其他应用程序,例如遍历Excel或记事本行并在浏览器中执行某些操作,因为可以考虑使用VBScript脚本单独的“宏”。