这个流程是JS逆向的主经脉,是JS逆向的核心,其中每个步骤都有各自的体系化分析方案,如 “定位加密参数生成处”,其方案有:
等等。。。将这一系列分析方案结合起来形成体系化,最终的目的就是:“定位加密参数生成处”,然后进入后续流程-- 扣加密参数的“js加密算法代码”;
对不同的反爬网站进行逆向,我们都要亲自去走前三个步骤,难有通杀方案;
前三个步骤都需要我们花时间去打磨,去练,才能运用自如,以应对更高难度的逆向;
而 “补浏览器环境” 这个步骤却比较特殊,有可行的通杀方案,
这个步骤的最终目的是 让扣出来的 “JS加密算法代码” 能在 node环境中正确运行。
实现这个目的的方案有两个:
var flag;
if(navigator.userAgent){
flag=true
}
替换为 var flag=true;
BOM: navigator.userAgent DOM:document.cookie
等;当然这两种方案可以糅合使用,但是其缺陷依然存在:
第一种方案难点在于 需要定位代码使用了哪些浏览器环境,然后才能进行逻辑替换; 而且当网站js逻辑更新时,需要再替换一遍。。无法对不同网站进行通杀
第二种方案难点在于 浏览器环境太多,需要伪造的对象太多了,但是补的足够多时可 ”通杀“。
为了减少在这个步骤花费的精力,极大提高工作效率,我们选择优化第二种方案 达到通杀目的:
通杀方案 – 通过js模拟一个趋于完美的浏览器环境,让扣出来的 “JS加密算法代码” 犹如运行在真实浏览器中;
这个方案工程代码量较大,需要借助 “补环境框架” 来组织各种浏览器环境代码以达到最终效果。
“补环境框架直通车“:JS逆向之浏览器补环境详解