2013-09-16 70 views
2

我想在Python上使用BrowserMob Proxybrowsermob-proxy-py。我需要捕獲來自頁面的所有請求的URL。但我無法在HAR文件中找到https請求。 Selenium和BrowserMob Proxy正在遠程機器上運行。BrowserMob Proxy +硒捕獲https請求

示例代碼:

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標頭嗎?

回答

2

我不能說蟒蛇片,但在我們的java/junit硒測試中,我不得不指定http 和https代理硒。

我相信最新的(2.39)版本的硒,他們已經不贊成指定一個HTTPS代理,而是該參數指定一個SSL代理。

我們(Java)的代碼看起來是這樣的,當我們旋轉起來的瀏覽器(你必須閒逛找到相當於蟒蛇 - 對不起!):

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; 
+0

在同一臺主機上browsermob服務器作爲測試網站? – sergzach

+0

這是一段非常長的時間...! :)但是,不,browserMob代理沒有從應用程序服務器運行。自那時起,硒就進行了一些修改。所以你的里程可能有所不同 –

+0

我只是嘗試瞭解代理服務器是否可以通過在同一臺服務器上安裝並通過將其附加到https(在nginx的幫助下使用有關證書密鑰的信息)來轉向https。 – sergzach