Greasemonkey:另外一个拦截/修改获取请求的概念是啥?

Posted

技术标签:

【中文标题】Greasemonkey:另外一个拦截/修改获取请求的概念是啥?【英文标题】:Greasemonkey: one more what is the concept of intercepting/modifying fetch requests?Greasemonkey:另外一个拦截/修改获取请求的概念是什么? 【发布时间】:2022-01-12 09:10:52 【问题描述】:

我已经在这里挖掘了所有问题,并且为了证明这个概念,我的理解是,如果我想从请求调用中获取响应 - 我必须更改网站实现的功能。由于我不是前端,所以不太明白应该怎么做……

我在 Greasemonkey 中有以下代码:

// ==UserScript==
// ==/UserScript==

(function() 
    let originalFetch = unsafeWindow.fetch;
    console.log(originalFetch);   //*1
  
    unsafeWindow.fetch = function monitorFetch (x, y)
        let response = originalFetch(x, y);
        let respo = response.clone();
        return response;
    ;
  
    console.log(unsafeWindow.fetch);   //*2

来自*1 的控制台打印

function monitorFetch (x, y)

*2 的控制台也会打印

function monitorFetch (x, y)

但是进行此更改的网站无法正常工作 - 没有抛出错误,我只是看到应该发出的请求没有发出。

我还尝试在网站 javascript 中找到这个原始的 monitorFetch 函数并将其复制粘贴到 Greasemonkey - 结果相同:没有错误,没有请求。

我想要的 - 只是捕捉响应,我什至不需要修改任何东西。

问题:我不理解什么,或者做错了什么,或者没有做什么?

版本:Greasemonkey v4.11Firefox v81

【问题讨论】:

这能回答你的问题吗? Intercept fetch() API requests and responses in JavaScript 【参考方案1】:

没关系。

总的来说 - 问题仍然存在。

但至于我的这个特殊情况 - 我很幸运:该网站将我要查找的数据保存在 unsafeWindow.localStorage.

【讨论】:

以上是关于Greasemonkey:另外一个拦截/修改获取请求的概念是啥?的主要内容,如果未能解决你的问题,请参考以下文章

CXF通过拦截器修改请求报文

SettingBar的点击事件拦截

获取元素的 CSS 选择器(当它没有 id 时)

mybatis - 基于拦截器修改执行中的SQL语句

Greasemonkey 中的本地存储

Spring AOP 拦截Struts2 Action,获取不到HttpServletRequest等对象