js破解之补浏览器环境的两种监控方式

本文由 简悦SimpRead 转码, 原文地址 mp.weixin.qq.com

1,首先要说的肯定是Proxy了,介绍就不说了,直接上代码:

window = new Proxy(global, {
    get: function (target, key, receiver) {
        console.log("window.get", key, target[key]);
        if (key=="location"){
            location = new Proxy(target[key], {
                get: function (_target, _key, _receiver) {
                    console.log("window.get", key, _key, _target[_key]);
                    if (_key=="port"){console.log("关注公众号【妄为写代码】")}
                    return _target[_key];
                }
            })
        }
        return target[key];
    },
    set: function (target, key, value, receiver) {
        console.log("window.set", key, value);
        target[key] = value;
    }
});
window.a = {};
window.a;
window.location = {a: 2};
window.location.a;
window.b = {a: 2};
window.b.a;
location.port;
console.log("--------------");
window.location.port;

node环境执行结果:

重点关注【嵌套Proxy】和【重复Proxy

2,对象属性的hook方式

在浏览器中执行:

重点关注【未在固定范围的新增属性】和【对比两种方式的location.port】和【多层属性的获取window.location.port

3,这个监控的作用就不用说了吧,就是大家常说的缺哪补哪需要用到的,现在补环境的场景越来越多了,一些知名js反爬产品,就可以用这个思路,环境补的好,可以到处用,还能省好多事,一举多得。

嗯,我也准备学大家开始【佛系】社群运营了,大家可以扫码进群一起交流技术,nice to meet you.

上一页
下一页