本帖最后由 htpidk 于 2022-8-16 22:55 编辑
以前学习JS原型链的时候写的HOOK,无意间翻出来,可以HOOK取发送的方法、URL、数据内容等等,底层是xhr和fetch的都支持,其他的superagent和axios之类的底层都是基于前面那两种,只是现在的chrome内核浏览器太多不支持COM调用,读写不了系统文件,作用有限图一乐,以前的IE内核浏览器才叫爽。
[JavaScript] 纯文本查看 复制代码 XMLHttpRequest.prototype.oldsend = XMLHttpRequest.prototype.send
XMLHttpRequest.prototype.send = function(x) {
if (!x)
console.log("xhr 无发送内容");
else
console.log("xhr post内容:" + "||||||||" + x);
return this.oldsend(x);
}
XMLHttpRequest.prototype.oldopen = XMLHttpRequest.prototype.open
XMLHttpRequest.prototype.open = function(x, y) {
console.log("xhr 传递方法:" + "|||||||||" + x);
console.log("xhr URL地址:" + "|||||||||" + y);
return this.oldopen(x, y);
}
var oldfetch = fetch
fetch = function(x, y) {
console.log("fetch URL地址:" + "||||||||" + x);
if (y) {//typeof y !== "undefined"
console.log("fetch 传递方法:" + "||||||||" + y.method);
if (y.body)//typeof y.body !== "undefined"
console.log("fetch 传递数据:" + "||||||||" + y.body);
}
return oldfetch(x, y);
}
var oldRequest = Request
Request = function(x, y) {
console.log("fetch(Request) URL地址:" + "||||||||" + x);
if (y) {//typeof y !== "undefined"
console.log("fetch(Request) 传递方法:" + "||||||||" + y.method);
if (y.body)//typeof y.body !== "undefined"
console.log("fetch(Request) 传递数据:" + "||||||||" + y.body);
}
return oldRequest(x, y);
}
|