Major 发表于 2023-1-2 23:45:40

如果使用这段代码,劫持并修改POST data 之后在再发起网络请求该如何做

李恒道 发表于 2023-1-2 23:47:38

Major 发表于 2023-1-2 23:45
如果使用这段代码,劫持并修改POST data 之后在再发起网络请求该如何做

劫持并修改POST data 之后在再发起网络请求 是什么意思?
修改数据吗
https://bbs.tampermonkey.net.cn/thread-752-1-1.html
可以参考这个demo

Major 发表于 2023-1-3 00:19:46

李恒道 发表于 2023-1-2 23:47
劫持并修改POST data 之后在再发起网络请求 是什么意思?
修改数据吗
https://bbs.tampermonkey.net.cn/t ...

就是在psot发送出去之前 修改 PSOT,请求内容。例如POST请求中的参数是1,截获修改成2后再把请求发送出去

李恒道 发表于 2023-1-3 09:47:16

Major 发表于 2023-1-3 00:19
就是在psot发送出去之前 修改 PSOT,请求内容。例如POST请求中的参数是1,截获修改成2后再把请求发送出去 ...

是可以的
我发的就是

908517142 发表于 2023-2-3 16:34:02

请问我想在点击某个按钮后,讲某个xhr的返回值保存下来或者转发到另一个接口上可以用这个方式吗?

李恒道 发表于 2023-2-3 16:58:11

908517142 发表于 2023-2-3 16:34
请问我想在点击某个按钮后,讲某个xhr的返回值保存下来或者转发到另一个接口上可以用这个方式吗?
...

这样适用于监听xhr
不需要修改response
直接堆send劫持就可以了

908517142 发表于 2023-2-6 10:04:26

李恒道 发表于 2023-2-3 16:58
这样适用于监听xhr
不需要修改response
直接堆send劫持就可以了

哥哥你好,我最近在网上翻了很多哥哥的帖子研究了快一个星期,但是还是挺失败的
我其实并不需要修改response或任何东西,只需要在点击页面后,对所有fetch/xhr中的请求进行检查,拿到特定链接的请求响应中的那个json返回值就可以,我就可以用ajax把这个json字符串另外发送
但是目前,我试遍了各种方法,都无法正确的检查到所有的fetch请求,尤其是后续点击按钮时 开发者工具中 fetch/xhr 中新出现的请求项。
请哥哥教我一下好吗,我头痛了一个星期了

清清清 发表于 2023-2-15 14:22:53

李恒道 发表于 2023-2-3 16:58
这样适用于监听xhr
不需要修改response
直接堆send劫持就可以了

在原有接口返回数据后,修改返回数据,这个没有问题。
我想在返回数据后再发送一个请求,根据这个请求再修改返回的数据。可是加入异步函数后,修改数据就失效了。求大佬告知。

下面是代码

    function addXMLRequestCallback(callback) {
      var oldSend, i;
      if (XMLHttpRequest.callbacks) {
            XMLHttpRequest.callbacks.push(callback);
      } else {
            XMLHttpRequest.callbacks = ;
            oldSend = XMLHttpRequest.prototype.send;
            XMLHttpRequest.prototype.send = function () {
                for (i = 0; i < XMLHttpRequest.callbacks.length; i++) {
                  XMLHttpRequest.callbacks(this);
                }
                this.payload = arguments
                oldSend.apply(this, arguments);
            };
      }
    }

    function async_GM_req() {
      return new Promise((resolve, reject) => {
            GM_xmlhttpRequest({
                method: "POST",
                url: "http://127.0.0.1:8080/",
                headers: {"Content-Type": "application/json"},
                data:JSON.stringify({arg:"tapmer arg"}),
                synchronous: true,
                onload: function(response) {
                  resolve(JSON.parse(response.responseText))
                }
            });
      });
    }

    addXMLRequestCallback(function (xhr) {
      xhr.addEventListener("load",async function () {
            if (xhr.readyState == 4 && xhr.status == 200) {

                // 加了这行异步整个代码就失效了
                const res =await async_GM_req()

                const resObj = JSON.parse(xhr.responseText);
                Object.defineProperty(xhr, "responseText", {
                  writable: true,
                });
                resObj.data.push({test:"hi tapmer"})
                xhr.responseText = JSON.stringify(resObj);
            }
      });
    });

李恒道 发表于 2023-2-15 15:38:52

清清清 发表于 2023-2-15 14:22
在原有接口返回数据后,修改返回数据,这个没有问题。
我想在返回数据后再发送一个请求,根据这个请求再 ...

这个是不允许异步的

李恒道 发表于 2023-2-15 15:39:14

清清清 发表于 2023-2-15 14:22
在原有接口返回数据后,修改返回数据,这个没有问题。
我想在返回数据后再发送一个请求,根据这个请求再 ...

而且这个是监听的,应该用修改的
页: 1 2 [3] 4
查看完整版本: [油猴脚本开发指南]XHR劫持的第二种格式