JS实战系列之解密-并夕夕反爬虫算法

JS实战系列之解密-并夕夕反爬虫算法_第1张图片
Hi,欢迎参阅本系列教学,今天给大家分享的是JS逆向之手机版并夕夕(某多,鉴于某种你懂的原因,以下简称为并夕夕,请知晓!) – Anti_content 加密参数,首先我们单从字面上看这个”Anti” 很显然它就有一个反抗的意思,而该字段是从查询的接口中提取的,它的值是一串很长且动态变化的字符串,在通过一系列的分析可知它是用于防止机器人肆意窃取、非法获取数据的风控系统的反爬措施之一。

JS实战系列之解密-并夕夕反爬虫算法_第2张图片
那么既然是反爬,那么势必就会有反反爬之大法,看过我之前写得JS实战系列之解密-拼夕夕反爬虫算法这篇文章的朋友应该知道并夕夕旗下还有个基于PC端的网点,而它所使用的加密方式其实与本文中的手机版的加密算法其实是大同小异的,而我在分析时同样也分析了APP端,发现其实都有这么一个加密算法,只是可能叫法不太一样,实际上它们使用的都是同一个算法,那么今天分享的这个Anti_content的加密算法到底与之前的有啥区别呢?起初我刚开始调试这个算法的时候,我遇到了一个很大的坑,由于我不太懂JS的异步函数的使用,故在代码入口兜了好大一个弯,是的,因为这个网站使用了大量的异步方法,连生成加密的算法都在里面,换句话说就是告诉了你切入口在哪你也得花很长时间才能找出函数入口,而且极有可能被绕着绕着就放弃了。别怀疑,刚开始我也绕了许久,而后无意间在一个不显眼的地方终于找到了突破点,是真的很不显眼……

加密的JS文件路径

JS加密文件

主函数入口位置

在经过多次Debugger后不难发现该字段的加密函数入口位于该文件的:16538行的 fe函数之中(格式化后);在Console中直接调用fe函数便可生成一串加密后字符串,而我们要做的就是想办法把这个fe函数给还原出来。
JS实战系列之解密-并夕夕反爬虫算法_第3张图片

什么是函数还原过程

现在我们已经找到了 Anti_content 字段的加密入口,那么所谓的函数还原过程又是什么个东东呢?由于目前市面上各大网站或多或少基本都有引用一系列反爬措施,大企业的官网甚至会使用自家风控系统(如马粑粑家的平台)而最常见的反爬措施莫过于限制IP、UA、或通过一系列高级脚本检测客户端(如:fingerprintjs2)亦称之为浏览器指纹;服务端为了加大安全系数通常会将这一系列针对客户端的查询过程进行加密或者混淆,目的是为了增大盗窃者爬取数据的难度,进而加大成本,而经过混淆的数据我们凭肉眼是无法识别的(如上图),但任其千万种加密,我们始终都是可以通过浏览器进行解密,因为它再高级的加密也是要使得浏览器看得懂,要不然就失去了加密的意义了,那么在这个解密的过程中我们便可简单的称作函数还原过程,要还原这个函数过程我们需要引用一个利器:Chrome DebuggerTools,当然市面上还有基于火狐、IE的调试工具,而我钟情于Chrome所以接下来将以谷歌的开发者工具进行还原函数
JS实战系列之解密-并夕夕反爬虫算法_第4张图片

利用ChromeDebuggerTools进行函数还原

DebuggerTools工具是谷歌浏览器提供的一个用于调试JavaScript的利器,通过它我们可以很轻松的还原出被混淆的加密数据,当然首先你得安装了谷歌浏览器,你也可以使用别的工具进行调试,在上述的fe函数旁边我们轻轻的点一下打个断点,然后我们再拉到网页的滚动条,这时我们会发现,网页断了下来,那么现在我们只需在控制台中输入fe()调用该函数,控制台将会给我们返回一串加密后的数据,然后我们可以将鼠标移到任意一个字段上,我们将会发现那些看上去像乱码的玩意竟然显示成肉眼看得懂的文字了,没错,所谓的函数还原过程就是基于运行时所展示的数据,在非执行的状态下你是无法辨认每个函数的意义或表示什么意思,只有在我们调试的时候我们才可以知道它代表什么意味着什么,那么我们要做的就是一步一步的将它们还原出来,当然为了还原,你还需要另外开启一个sinppet脚本进行手写javascript代码,当你走完整个函数之后,也就意味着你的还原过程完毕(取决于你对JavaScript的了解)
JS实战系列之解密-并夕夕反爬虫算法_第5张图片
JS实战系列之解密-并夕夕反爬虫算法_第6张图片
至此我们可以说已经解开了这个加密算法,当然我这只介绍了一种还原的方法,其实还有另一种比较偷懒的方式,那就是直接复制里面的代码不需要还原,但前提是你需要把代码引用到的东西都一并复制,如上图的u(“0xa6”, “TNEu”)你需要实现U这个方法,这种方式虽直接暴力,但不利于后期维护,因为你看不懂它的意思;而手工还原出来的代码本来就是你自己定义的,连函数名都是,那么在定义时你完全可以起一个你看起来能记住的名称你觉得呢,好吧时间关系,本期教学暂告一段落如有任何疑问欢迎留言(注:本文的所有的操作步骤均在找到函数入口之后进行,如您对如何寻找函数入口有兴趣或需要还原后的脚本欢迎留言,我将提供协助,由于某些原因视频目前仅上架了Youtube,最后,有必要声明下,本文仅限于学术交流之用,绝非恶意或有意针对某站进行非法破解,如侵犯了您的权益,请联系我配合删除!)
原文摘自:IT猫之家 转载请注明出处。

你可能感兴趣的:(JS实战系列)