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
在原有接口返回数据后,修改返回数据,这个没有问题。
我想在返回数据后再发送一个请求,根据这个请求再 ...
而且这个是监听的,应该用修改的