当补环境遇到document.all
当补环境遇到document.all
在解决jsdom被针对的逆向过程时遇到了这个问题, document.all的类型是undefined, 但却能取到值,js这是真的离谱,当时就直接懵了。脑海中回忆这些年学到的JavaScript知识,怎么也想不到解决的办法,于是问各路大佬,其中当然有猿人学的安澜。今年报了猿人学的课,看了安佬讲的js课后,对js有了新的理解,不再纠结于扣算法。安佬说过js逆向除了扣算法,还有很多方向可以尝试,思路得打开。对自动化也不再那么排斥,当看到安佬的jsdom用法后,大彻大悟,用了一个多星期的时间就搞定了通杀方案,从此再也不用一个个网站的干苦力活。虽然之前哲哥和涛哥和我说过jsdom,自己也用了jsdom,但用的不好。从此之后,遇到混淆难的网站,都是先掏出jsdom试试,真的很香。后来遇到难题了,都会先问问安佬。
当拿着document.all去问安佬时,安佬也是第一次遇到这个问题,思考后给出的回复是,在纯js层面解决不了这个问题,得借助其它办法。V佬这次挖的坑是真的深,这明显就是冲着Node环境来了,只要是Node补环境,都会遇到这个问题,一抓一个准。好在山外有山,人外有人,办法总比困难多。安佬问遍各路大佬,document.all这个检测也在圈子里传开了,风佬专门开了次分享,最终风佬给出的办法是得修改Node才能完美的解决,当然风佬也提过一嘴,V8的不可检测对象也可以解决这个问题,如此看来风佬的知识储备是真的强。最近他和蔡老板开了补环境的课,值得学习,在我看来,光蔡老板的AST还原其实已经值这门课的学费,更不用说加上风佬的补环境。只是自己真的是没时间学这些,这些年报了3门课,夜幕的高级课,肉丝的VIP,猿人学,其中夜幕的高级课就打开过一次,肉丝的课就看了下怎么root, 猿人学就看了js部分,真是没时间学,忙于业务,疲于奔命。而另一位大佬肝总也给出了自己的解决办法,肝总是真的强,还乐于分享,真是吾辈楷模。
目前看来,解决这个问题的办法有如下几种
- 直接不补了,有可能网站校验不严格,直接可以过
- 扣算法,这样绕过各种检测,直接把值写死,就是扣算法难搞。
- 用风佬修改后的Node
- V8里的不可检测对象
- 请大佬出山帮你解决