【发布时间】:2022-11-21 18:20:00
【问题描述】:
我按照这里的答案:Intercept fetch() API requests and responses in JavaScript
注入.js
const { fetch: origFetch } = window;
window.fetch = async (...args) => {
window.postMessage({ type: 'API_AJAX_CALL', payload: args }, '*');
const response = await origFetch(...args);
return response;
};
内容脚本.js
var headElement = (document.head || document.documentElement);
var injectJs = function (fileName) {
var s = document.createElement('script');
s.src = chrome.extension.getURL(fileName);
headElement.insertBefore(s, headElement.firstElementChild);
};
// Register to receive the message from the injected script
window.addEventListener("message", function (event) {
if (event.data.type && (event.data.type == "API_AJAX_CALL")) {
console.log("CONTENT-SCRIPT-CONTEXT: Received the data " + event.data.payload[0]);
}
}, false);
injectJs("inject.js");
显现
"content_scripts": [
{
"matches": ["*://*/*"],
"js": ["content.js"],
"run_at": "document_start",
"all_frames": true
}
],
但是修补过的 api 只捕获了一些获取调用(用绿色圆圈标记 - 注入的内容脚本)。它甚至错过了在捕获少数提取调用之后发生的提取调用。
【问题讨论】:
标签: javascript google-chrome-extension monkeypatching