gpt4 book ai didi

google-chrome-extension - chrome.devtools.network.getHAR 返回 0 个条目

转载 作者:行者123 更新时间:2023-12-05 03:15:11 26 4
gpt4 key购买 nike

我正在尝试构建 chrome 插件,我需要在其中捕获网页上触发的所有网络请求。我已经浏览了 Docs @ http://developer.chrome.com/extensions/devtools_network.html

我正在使用

    chrome.devtools.network.getHAR(
function(harLog) {
alert(harLog.entries.length);

});

但每次我都收到 0 个条目,即使我尝试先打开面板并刷新网页也是如此。如果我遗漏了什么,有人可以帮忙吗??

我正在使用任何网页对此进行测试,例如“http://www.cnn.com/”并已将 list 中的权限设置为

"permissions": [
"http://*/*",
"https://*/*"
]

最佳答案

您可以监听请求并根据 tabId 字段进行过滤。当然,您需要跟踪事件选项卡(每个窗口一个选项卡)。
例如:

  1. 使用 chrome.tabs.onActivated 监听每个窗口事件选项卡的变化,并将 tabId 存储在局部变量中。

  2. 使用 chrome.windows.onRemoved 停止跟踪已关闭窗口的选项卡。

  3. 为任何 chrome.webRequest.*注册监听器 符合您目的的事件。例如。要在请求准备好发送后立即收到事件选项卡之一中的任何请求的通知,请为 chrome.webRequest.onBeforeRequest 注册一个监听器.


下面是一个示例扩展的源代码,正是这样做的。

list .json:

{
"manifest_version": 2,
"name": "Test Extension",
"version": "0.0",
"offline_enabled": false,

"background": {
"persistent": true,
"scripts": ["background.js"]
},

"permissions": [
"webRequest",
"*://*/*"
]
}

background.js:

/* Keep track of the active tab in each window */
var activeTabs = {};

chrome.tabs.onActivated.addListener(function(details) {
activeTabs[details.windowId] = details.tabId;
});

/* Clear the corresponding entry, whenever a window is closed */
chrome.windows.onRemoved.addListener(function(winId) {
delete(activeTabs[winId]);
});

/* Listen for web-requests and filter them */
chrome.webRequest.onBeforeRequest.addListener(function(details) {
if (details.tabId == -1) {
console.log("Skipping request from non-tabbed context...");
return;
}

var notInteresting = Object.keys(activeTabs).every(function(key) {
if (activeTabs[key] == details.tabId) {
/* We are interested in this request */
console.log("Check this out:", details);
return false;
} else {
return true;
}
});

if (notInteresting) {
/* We are not interested in this request */
console.log("Just ignore this one:", details);
}
}, { urls: ["<all_urls>"] });

/* Get the active tabs in all currently open windows */
chrome.tabs.query({ active: true }, function(tabs) {
tabs.forEach(function(tab) {
activeTabs[tab.windowId] = tab.id;
});
console.log("activeTabs = ", activeTabs);
});

关于google-chrome-extension - chrome.devtools.network.getHAR 返回 0 个条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19943576/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com