我无法通过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环境。
我通过迭代Windows级别的代理而不是Selenium来解决这个问题。
通过PUTTY以编程方式重新配置SSH连接,这将为整个会话创建一个隧道。更先进的设置,但更可靠。
我使用像AppRobotic这样的工具,它具有紧密的Windows集成,但任何好的宏或RPA产品都应该这样做。我使用Selenium的Python绑定,但使用VBScript来更新Windows配置。
用Python编写的主要AppRobotic脚本可以在每次迭代时在线运行代理配置更新脚本,同时自动化其他应用程序,例如迭代Excel或Notepad行并在浏览器中执行某些操作,因为VBScript脚本可以被视为单独的“宏” ”。
您是否需要使用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”)