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

问题描述 投票:5回答:2

我无法通过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环境。

python-3.x selenium selenium-webdriver selenium-firefoxdriver
2个回答
0
投票

我通过迭代Windows级别的代理而不是Selenium来解决这个问题。

通过PUTTY以编程方式重新配置SSH连接,这将为整个会话创建一个隧道。更先进的设置,但更可靠。

我使用像AppRobotic这样的工具,它具有紧密的Windows集成,但任何好的宏或RPA产品都应该这样做。我使用Selenium的Python绑定,但使用VBScript来更新Windows配置。

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


-1
投票

您是否需要使用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”)
© www.soinside.com 2019 - 2024. All rights reserved.