如何使用 chrome.devtools.network.onRequestFinished.addListener 读取 API 响应正文?

How do you use chrome.devtools.network.onRequestFinished.addListener to read API response bodies?

提问人:Vishal Bolarum 提问时间:11/12/2023 最后编辑:Vishal Bolarum 更新时间:11/12/2023 访问量:42

问:

我正在构建一个 JavaScript Chrome 扩展程序 (V3)。

我希望每当我在网站上时都能检测来自传入 API 的响应正文。

我正在使用 chrome.devtools.network.onRequestFinished.addListener,但我似乎无法提取响应正文。

这是我的代码:

const getContent = async response => {
    return new Promise((resolve) => {
      response.getContent((body) => {
        resolve(body)
      })
    }) }

chrome.devtools.network.onRequestFinished.addListener(async api => {
        if (api.request.url.includes('https://developer.mozilla.org/pong/get')) {
            const responseBody = await getContent(api.response);
            console.log('Response Body:', responseBody);
        } })

我收到错误,指出“getContent”不是函数。

有没有人构建了一个提取 API 响应正文的 JavaScript Chrome 扩展程序?

javascript 扩展 谷歌浏览器 devtools 浏览器扩展清单 v3

评论


答:

1赞 Vishal Bolarum 11/12/2023 #1

您需要在变量 api 上调用 .getContent() 方法:

const getContent = async response => {
    return new Promise(resolve => {
      response.getContent((body) => {
        resolve(body)
      })
    })
}

chrome.devtools.network.onRequestFinished.addListener(async api => {
    if (api.request.url.includes('https://developer.mozilla.org/pong/get')) {
        const responseBody = await getContent(api)
        console.log('Response Body:', responseBody)
    }
})