如何使用UserScript拦截API调用并从中显示数据?

时间:2016-08-20 00:46:13

标签: javascript greasemonkey userscripts tampermonkey fetch-api

有一个提出请求的网络应用程序(让我们称之为/api/item)。此请求返回一个json正文,其中包含一个名为itemData的字段,该字段通常对用户隐藏,但我希望将其显示出来。

那么如何在/api/item创建一个用于监听请求的用户脚本并显示itemData字段?

参考webapp发出请求的方式是:

return Promise.resolve(new Request(e,r)).then(sendCookies).then(addLangParam).then(addCacheParam).then(addXsrfKey).then(checkZeroRating).then(function(e) {
            return fetch(e)
        }).then(checkStatus).then(checkApiVersionMismatch).then(checkApiResponse)

其中大部分都是无关紧要的,但重要的部分是Request(我认为)。

3 个答案:

答案 0 :(得分:3)

此webapp不使用XMLHttpRequest,而是使用Fetch API

您可以使用fetch-intercept npm module拦截抓取请求。示例代码:

import fetchIntercept from 'fetch-intercept'

fetchIntercept.register({
  response(response) {
    console.log(response)
    return response
  }
})

答案 1 :(得分:0)

您是否可以访问已退回的承诺?

如果是这样,那么你可以添加另一个“然后”。 否则,您可能会覆盖“checkApiResponse”

答案 2 :(得分:0)

补充@michał-perłakowski的回答。如果您不使用npm,并且只想在HTML中添加fetch-intercept脚本,here's可以使用纯JavaScript等效模块。