文章目錄

和rs对抗两年多了,作为国内js逆向的天花板之一,是许多js逆向的衣食父母,我这口饭也是rs给的,真心感谢rs公司,给我们带来了这么优秀的反爬产品,让自己的反爬和反反爬水平都得到了提升。

两年前,刚接触js逆向时,接手同事的项目就是rs4天花板,那时候能把人累死。那时还不会AST, 同事也不会,在遇到控制流的时候,为了理解代码逻辑,都是一行一行的,然后记录关键步骤。每个参数的生成,如cookie, url后缀,指纹等等都得记录好多行。不到一个月后,同事离职,最终我扛下了所有,那时真是初生牛犊不怕虎。

一切都还好,直到4代升级到5代, 没有想到用4代那种正则抽取参数的方式,程序挂了,因为之前4代是用正则抽取的,更新到5代之后没法直接用了。单步调试也没有之前方便,不好打条件断点,再用最原始的单步调试就显得很吃力。于是开始想办法,正好同事从蔡老板那了解到AST,并做了一次分享,于是开始学AST,在蔡老板的星球里看到同事做过的一道题目,瞬间悟了,这不就是二叉树操作吗。用了两天的时间把控制流还原好,开始愉快的调试,并可以用AST的办法把参数抽取出来,虽然性能上差了些,但终归能用。

虽然能调试了,但还是卡在了鼠标和键盘这些行为轨迹的生成上,这将近1000行的代码要扣下来无从下手。扣出来的代码也过不了,总是返回400,那段时间是最头疼的时候,每次早上站会的时候,都没什么进展,就很尴尬。后来一个同事来一起帮忙排查问题,同事测试了很多方案,后来测试sekiro的时候,终于200了。这时我突然就明白了,服务器能拿到的就一个字符串,它其实不知道你是咋生成的。在rs中,轨迹这些最终会转成一个数组,不一定要用js代码生成,直接拿浏览器中的轨迹数组随机变化下生成一些数组也可以。经过修改后,代码又开始跑起来了。

程序跑到21年2月,通过率越来越低,抓取速度也越来越慢,最终行为轨迹又升级了,彻底跑不动。这时开始混圈子,认识了哲哥和涛哥,在他们的鼓励下,硬着头皮把1000行的代码扣下来,程序又开始跑起。又经过2到3个月的对抗,经历了20多次小更新,网站的反爬越来越完善,校验越来越完备,自己对于反爬和反反爬也有了理解,水平也得到了哲哥和涛哥的认可。

今年知道了补环境,于是尝试使用补环境来完成, 在完成了zptoken的补环境框架后,普通rs4的补环境变得相当简单, 除了dom树操作遇到问题。想想自己学逆向是先抠算法,再学AST,再学补环境,这条路是走错了。更简单的路径应该是先学补环境,再学AST,之后遇到性能问题的时候才去抠算法。

打赏作者

文章目錄