mirror of
https://github.com/luzhisheng/js_reverse.git
synced 2025-04-20 10:25:01 +08:00
代码更新
This commit is contained in:
parent
b481ef15bb
commit
ffddf17d79
@ -62,6 +62,78 @@ js 山下文: 一个环境(js v8虚拟机)浏览器不同的页面在不
|
|||||||
1 2
|
1 2
|
||||||
1 1 3
|
1 1 3
|
||||||
|
|
||||||
|
结果表明没有被作用域定义的变量,会污染全局作用域。
|
||||||
|
|
||||||
## 学习hook必须知道this指向
|
## 学习hook必须知道this指向
|
||||||
|
|
||||||
在一个全局作用域下 this = window
|
在一个全局作用域下 this = window
|
||||||
|
|
||||||
|
function xxx() {
|
||||||
|
console.log(this)
|
||||||
|
}
|
||||||
|
|
||||||
|
window.xxx();
|
||||||
|
|
||||||
|
|
||||||
|
在方法作用域 this = 调用者
|
||||||
|
|
||||||
|
location.xxx = function () {
|
||||||
|
console.log(this)
|
||||||
|
}
|
||||||
|
|
||||||
|
location.xxx();
|
||||||
|
|
||||||
|
类的方法里面 this = 类自己
|
||||||
|
|
||||||
|
hook 就是改变原方法或者原代码执行流程,覆盖原方法
|
||||||
|
|
||||||
|
es6 语法 Object.defineProperty 重新定义属性,相当于覆盖原方法
|
||||||
|
|
||||||
|
给对象重新定义属性
|
||||||
|
监听属性的设置值盒获取值
|
||||||
|
|
||||||
|
es6 代理 Proxy
|
||||||
|
|
||||||
|
给对像整体监听,属性初始化,设置值和获取值,构造函数
|
||||||
|
js Proxy https://www.jianshu.com/p/77eaaf34e732
|
||||||
|
|
||||||
|
我们用hook的方式实现XHR断点,ajax 其实底层封装的是 XMLHttpRequest
|
||||||
|
|
||||||
|
XMLHttpRequest.prototype.send_ = XMLHttpRequest.prototype.send
|
||||||
|
XMLHttpRequest.prototype.send = function(){debugger;}
|
||||||
|
|
||||||
|
测试百度网站,当我们在翻页的时候
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
上面的测试是需要我在浏览器运行后,请求还未提交,进行手动hook,如果我想要在浏览器初始化的时候hook,油猴[浏览器插件],fd插件[代理]。
|
||||||
|
|
||||||
|
//当前版本hook工具只支持Content-Type为html的自动hook
|
||||||
|
//下面是一个示例:这个示例演示了hook全局的cookie设置点
|
||||||
|
(function() {
|
||||||
|
//严谨模式 检查所有错误
|
||||||
|
'use strict';
|
||||||
|
//document 为要hook的对象 这里是hook的cookie
|
||||||
|
var cookie_ = "";
|
||||||
|
Object.defineProperty(document, 'cookie', {
|
||||||
|
//hook set方法也就是赋值的方法
|
||||||
|
//当前也可以hook get方法
|
||||||
|
set: function(val) {
|
||||||
|
//这样就可以快速给下面这个代码行下断点
|
||||||
|
//从而快速定位设置cookie的代码
|
||||||
|
console.log('Hook捕获到cookie设置->', val);
|
||||||
|
cookie_ = val;
|
||||||
|
return val;
|
||||||
|
},
|
||||||
|
get: function(val) {
|
||||||
|
//这样就可以快速给下面这个代码行下断点
|
||||||
|
//从而快速定位设置cookie的代码
|
||||||
|
console.log('Hook捕获到cookie获取->', val);
|
||||||
|
return cookie_;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
})();
|
||||||
|
|
||||||
|
测试效果,找到js,在资源面板中打开,在顶部打上断点,控制台输入以上代码,测试效果。
|
||||||
|
|
||||||
|

|
||||||
|
Loading…
x
Reference in New Issue
Block a user