我一直在使用selenium进行python中的自动浏览器模拟和web抓取,这对我来说效果很好。但是现在,我必须在代理服务器后面运行它。因此,现在selenium将打开窗口,但无法打开请求的页面,因为未在打开的浏览器上设置代理设置。当前代码如下(示例):
from selenium import webdriver
sel = webdriver.Firefox()
sel.get('http://www.google.com')
sel.title
sel.quit()
我现在如何更改上述代码以使用代理服务器?
这将完成以下工作:
import selenium
from selenium.webdriver.common.proxy import *
proxyHost = "my.proxy.host or IP"
proxyPort = "55555"
fp = webdriver.FirefoxProfile()
fp.set_preference("network.proxy.type", 1)
#fp.set_preference("network.proxy.http", proxyHost) #HTTP PROXY
#fp.set_preference("network.proxy.http_port", int(proxyPort))
#fp.set_preference("network.proxy.ssl", proxyHost) #SSL PROXY
#fp.set_preference("network.proxy.ssl_port", int(proxyPort))
fp.set_preference('network.proxy.socks', proxyHost) #SOCKS PROXY
fp.set_preference('network.proxy.socks_port', int(proxyPort))
fp.update_preferences()
driver = webdriver.Firefox(firefox_profile=fp)
driver.get("http://www.whatismyip.com/")
官方的Selenium留档(http://docs.seleniumhq.org/docs/04_webdriver_advanced.jsp#using-a-proxy)提供了关于使用代理的明确和有用的指南。对于Firefox(这是示例代码中的首选浏览器),您应该执行以下操作:
from selenium import webdriver
from selenium.webdriver.common.proxy import *
myProxy = "host:8080"
proxy = Proxy({
'proxyType': ProxyType.MANUAL,
'httpProxy': myProxy,
'ftpProxy': myProxy,
'sslProxy': myProxy,
'noProxy': '' # set this value as desired
})
driver = webdriver.Firefox(proxy=proxy)
您需要设置所需的功能或浏览器配置文件,如下所示:
profile = webdriver.FirefoxProfile()
profile.set_preference("network.proxy.type", 1)
profile.set_preference("network.proxy.http", "proxy.server.address")
profile.set_preference("network.proxy.http_port", "port_number")
profile.update_preferences()
driver = webdriver.Firefox(firefox_profile=profile)
另请参阅相关线程:
问题内容: 我一直在使用selenium在python中自动进行浏览器模拟和Web抓取,对我来说效果很好。但是现在,我必须在代理服务器后运行它。现在,selenium打开了窗口,但是由于未在打开的浏览器中设置代理设置而无法打开请求的页面。当前代码如下(示例): 如何更改上面的代码以立即与代理服务器一起使用? 问题答案: 您需要设置所需的功能或浏览器配置文件,如下所示:
有谁有幸尝试使用vertx bihind作为公司代理?我已经尝试了我脑海中出现的任何可能的方式来向vertx提供代理信息。到目前为止没有任何效果。 设置环境变量http_proxy=http://mycorporate.proxy.com:8080-运气不好 设置环境变量VERTX_OPTS='-Dhttp.proxy主机=mycorporate.proxy.com-Dhttp.proxy端口=8
我想为以下e2e场景添加一个测试: 我的应用程序通过内部代理服务器向外部服务发出web请求,代理服务器操作请求主体,将请求转发给目的主机,并返回返回的响应。 例如,我向(通过)发送请求。 代理服务器修改请求以填充 cc 详细信息,并将其转发到带有正文 外部。服务返回状态OK。代理服务器返回响应而不进行修改。 如何使用线束测试此工作流?我可以为做但我不知道如何使线对代理与我的网络客户端的代理设置一起
使用代理服务器 如果你想使用代理服务器进行激活进程,可勾选这个选项。请选择“代理服务器类型”并输入“主机”、“端口”、“用户名”和“密码”。
使用代理服务器 如果你想使用代理服务器进行激活进程,可勾选这个选项。请选择“代理服务器类型”并输入“主机”、“端口”、“用户名”和“密码”。
使用代理服务器 如果你想使用代理服务器进行激活进程,可勾选这个选项。请选择“代理服务器类型”并输入“主机”、“端口”、“用户名”和“密码”。