定位header关键字:
(function (){
var org = window.XMLHttpRequest.prototype.setRequestHeader;
window.XMLHttpRequest.prototype.setRequestHeader = function (key,value){
//在请求中发现某个关键字,断点
if(key=='value'){
debugger
}
return org.apply(this,arguments)
}
})()
这段代码的目的是在设置包含特定键的HTTP请求头时,自动触发一个断点。这可以用于调试或监视特定的网络请求头设置。
定位url关键字:
(function () {
var open = window.XMLHttpRequest.prototype.open;
window.XMLHttpRequest.prototype.open = function (method, url, async) {
if (url.indexOf("key") != -1) {
debugger;
}
return open.apply(this, arguments);
};
})();
这段代码的目的是在发送包含特定字符串(在这个例子中是"key")的HTTP请求的URL时,自动触发一个断点。这可以用于调试或监视特定的网络请求。
定位cookie关键字:
(function() {
"use strict";
var cookieTemp = "";
Object.defineProperty(document, "cookie", {
set: function(val) {
if (val.indexOf("cookie的参数名称") != -1) {
debugger ;
}
cookieTemp = val;
return val;
},
get: function() {
return cookieTemp;
}
})
}
)();
Object.defineProperty(document, “cookie”, { … }) 这行代码使用Object.defineProperty方法修改了document对象上cookie属性的行为。现在,每当尝试获取或设置document.cookie的值时,都会分别调用定义的getter和setter函数。
这段代码演示了如何使用JavaScript的Object.defineProperty方法来拦截和自定义对document.cookie属性的访问和修改行为。
定位JSON.stringify、JSON.parse:
'''请求是密文'''
(function() {
var _stringify = JSON.stringify;
JSON.stringify = function(ps) {
console.log("Hook JSON.stringify ——> ", ps);
debugger;
return _stringify(ps); // 不改变原有的执行逻辑
}
})();
'''响应是密文'''
(function() {
var _parse = JSON.parse;
JSON.parse = function(ps) {
console.log("Hook JSON.parse ——> ", ps);
debugger;
return _parse(ps); // 不改变原有的执行逻辑
}
})();
一般用于请求和响应是密文。当请求加密时,会先将对象进行JSON.stringify处理,使对象变成json字符串格式,然后进行加密处理;当响应解密时,会对解密后的字符串进行JSON.parse处理,使json字符串变成对象,方便后续调用。