在Python的Selenium webdriver中使用带有无头firefox的http代理

时间:2017-12-31 19:04:03

标签: python selenium firefox proxy headless

我像这样使用Firefox无头:

from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
from selenium import webdriver
import os
import sys

# Set the MOZ_HEADLESS environment variable which casues Firefox to
# start in headless mode.
os.environ['MOZ_HEADLESS'] = '1'

# Select your Firefox binary.
binary = FirefoxBinary('/usr/bin/firefox', log_file=sys.stdout)

# Start selenium with the configured binary.
driver = webdriver.Firefox(firefox_binary=binary)

但现在我想添加一个需要用户/密码的http代理。搜索后,我尝试了以下内容:

from selenium.webdriver.common.proxy import Proxy, ProxyType

myProxy = "xx.xx.xx.xx:80"

proxy = Proxy({
    'proxyType': ProxyType.MANUAL,
    'httpProxy': myProxy,
    'ftpProxy': myProxy,
    'sslProxy': myProxy,
    'noProxy': '' # set this value as desired
    })

driver = webdriver.Firefox(firefox_binary=binary, proxy=proxy)

我也试过

profile = webdriver.FirefoxProfile() 
profile.set_preference("network.proxy.type", 1)
profile.set_preference("network.proxy.http", "xx.xx.xx.xx")
profile.set_preference("network.proxy.http_port", 80)
profile.update_preferences() 
driver=webdriver.Firefox(firefox_binary=binary,firefox_profile=profile)

最后,我尝试添加" socksUsername"和" socksPassword"对proxy的信任,更多的是绝望而不是任何真正的希望。

毋庸置疑,这些都不起作用,测试显示请求仍在使用我常用的IP,而不是代理。

在这种情况下,系统范围的代理也不是一个选项。

http代理凭据应该在哪里?如何使用无头firefox代理?

测试

driver.get("https://www.ipinfo.io");
driver.find_element_by_xpath('//h4/following-sibling::p').text

3 个答案:

答案 0 :(得分:0)

您是否尝试使用

手动设置配置文件
from selenium import webdriver

url = "https://mail.google.com"
fp = webdriver.FirefoxProfile('/Users/<username>/Library/Application Support/Firefox/Profiles/71v1uczn.default')

driver = webdriver.Firefox(fp)

手动设置代理,然后加载手动设置的配置文件

foo

答案 1 :(得分:0)

您可以尝试设置环境变量&#34; HTTP_PROXY &#34;在以下助记符中:

http://<username>:<password>@<proxy_url>

添加以冒号&#39;分隔的凭据:&#39;在代理网址之前,前面是&#39; @&#39;例如。

http://username:password@proxy.com:8080/file.pac

答案 2 :(得分:0)

如果您的代理需要用户名和密码,则必须这样写:

from selenium.webdriver.common.proxy import Proxy, ProxyType

myProxy = "username:password@proxyDomain:proxyPort"

proxy = Proxy({
    'proxyType': ProxyType.MANUAL,
    'httpProxy': myProxy,
    'ftpProxy': myProxy,
    'sslProxy': myProxy,
    'noProxy': '' # set this value as desired
    })

driver = webdriver.Firefox(firefox_binary=binary, proxy=proxy)