1

没有开发工具如何获得 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
}
4

1 回答 1

1

您不能简单地使用 Chrome API 来生成 HAR 文件。但是您可以使用 BrowsermobProxy 和 Chromedriver 使用 Selenium Server 从 Chrome 捕获 HAR。

这是一个将 chromedriver 与 BrowsermobProxy 和 Selenium 结合使用的示例:

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让生活更轻松。

于 2015-08-16T13:40:54.903 回答