2013-08-04 59 views
0

如何在沒有devtools的情況下獲得HAR?當我嘗試使用此代碼,我recive這個錯誤:獲得沒有devtools的HAR

代碼

chrome.devtools.network.getHAR(function(result) { 
    var entries = result.entries; 
    if (!entries.length) { 
     Console.warn("Recarregue a pagina, ou inicie o stream"); 
    } 

    for (var i = 0; i < entries.length; ++i) { 
     console.log(entries[i]); 
    } 
}); 

錯誤:

Uncaught TypeError: Cannot call method 'getHAR' of undefined 

我有這樣的代碼到background.js

清單:

{ 
    "name": "Download Stream", 
    "version": "1.0", 
    "minimum_chrome_version": "10.0", 
    "description": "Efetua o download do stream", 
    "background": { "scripts": ["background.js"] }, 
    "page_action" : 
    { 
     "default_icon" : "icon-19.png", 
     "default_title" : "Download Stream" 
    }, 
    "permissions": [ 
     "tabs", 
     "http://*/*", 
     "https://*/*" 
    ], 
    "icons" : { 
     "48" : "icon-48.png", 
     "128" : "icon-128.png" 
    }, 
    "manifest_version": 2 
} 
+1

你不能那樣做。您只能在devtools頁面中調用chrome.devtools。* API。 (chrome.webRequest API可以爲您提供網絡請求的一些信息,除了響應正文)。 –

+0

真的嗎?我的想法是創建一個圖標左側書籤星,我可以看到頁面上的媒體簡歷。這可能嗎? –

回答

1

您可以不要簡單地使用Chrome API來生成HAR文件。但是您可以使用BrowsermobProxy和Chromedriver使用Selenium Server從Chrome中捕獲HAR。

下面是使用chromedriver與BrowsermobProxy和硒的例子:

from browsermobproxy import Server 
from selenium import webdriver 
import os 
import json 
import urlparse 

server = Server("path/to/browsermob-proxy") 
server.start() 
proxy = server.create_proxy() 

chromedriver = "path/to/chromedriver" 
os.environ["webdriver.chrome.driver"] = chromedriver 
url = urlparse.urlparse (proxy.proxy).path 
chrome_options = webdriver.ChromeOptions() 
chrome_options.add_argument("--proxy-server={0}".format(url)) 
driver = webdriver.Chrome(chromedriver,chrome_options =chrome_options) 
proxy.new_har("http://stackoverflow.com", options={'captureHeaders': True}) 
driver.get("http://stackoverflow.com")  
result = json.dumps(proxy.har, ensure_ascii=False) 
print result 
proxy.stop()  
driver.quit() 

結帳Speedprofile,使生活更輕鬆。

相關問題