BrowserMob Proxy + selenium捕获https请求

时间:2013-09-16 13:05:57

标签: python selenium proxy

我正在尝试在Python上使用BrowserMob Proxybrowsermob-proxy-py。我需要从页面中捕获所有请求的URL。但我在HAR文件中找不到https请求。 Selenium和BrowserMob Proxy在远程计算机上运行。

示例代码:

from selenium import webdriver
import browsermobproxy

SELENIUM_EXECUTOR = 'http://<remote_ip>:4444/wd/hub'
SELENIUM_DESIRED_CAPABILITIES = {
        'browserName': 'firefox',
        'version': '20.0.0',
        'javascriptEnabled': True,
}

prox = browsermobproxy.Client('<remote_ip>:8080')
driver = webdriver.Remote(
    command_executor=SELENIUM_EXECUTOR,
    desired_capabilities=SELENIUM_DESIRED_CAPABILITIES,
    proxy=prox)

url_to_get = 'http://google.ru'
prox.new_har()
driver.get(url_to_get)
for ent in prox.har['log']['entries']:
    print ent['request']['url']

driver.quit()
prox.close()

此示例返回5个http请求。

但如果我将url_to_get更改为“https:// ...”,我将只看到3个http请求,而没有https请求

有没有人知道如何捕获https标题?

1 个答案:

答案 0 :(得分:2)

我无法与python片段交谈,但在我们的java / junit selenium测试中,我必须为selenium指定http 以及https代理。

我相信最新的(2.39)版本的selenium,他们已经弃用了指定https代理,而是参数指定了一个ssl代理。

当我们启动浏览器时,我们的(java)代码看起来像这样(你必须找到相应的python - 抱歉!):

DesiredCapabilities capabilities = DesiredCapabilities.chrome();
//Proxy is from the namespace org.openqa.selenium
Proxy proxy = new Proxy();
//10.0.53.132 == our browsermob proxy server
proxy.setHttpProxy("10.0.53.132:8888");
proxy.setSslProxy("10.0.53.132:8888");
capabilities.setCapability(CapabilityType.PROXY,proxy);
this.driverCapabilities = capabilities;