Chrome 插件 v3 如何获取源站指定网络请求的响应内容?

233 天前
 s609926202

查到的几乎都是使用 webRequest ,但是这个在 v3 中好像已弃用:

chrome.webRequest.onCompleted.addListener(
    function(details) {
        console.log("Request completed: ", details);
    },
    {urls: ["<all_urls>"]}
);

目的是不用通过 dom 抓取内容,通过请求的响应内容能直接获取到更完善的数据,DOM 也是通过响应内容渲染的。

用到了号称插件界的 nextjs 脚手架: https://github.com/PlasmoHQ/plasmo

1044 次点击
所在节点    Chrome
3 条回复
zivW
233 天前
之前 MV3 刚出时 是通过在目标网站注入脚本 hook 掉 window.XMLHttpRequest 实现的,不知道现在有没有更好的方法
you222
233 天前
可以试下 chrome.debugger ,不过需要开启浏览器的调试模式

chrome.tabs.onUpdated.addListener((tabId, changeInfo, tab) => {
const onEvent = async (source, method, params) => {
if (method === "Network.responseReceived") {
const { type, response } = params
console.log(response.body)
}
}
chrome.debugger.onEvent.addListener(onEvent)
})
wnck
233 天前
基于 webrequest 的好像不行。如果是基于 Tab 做好像可以,指定 tabid 对页面注入 js 脚本来获取这个 tab 下的原始 html

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1036944

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX