python爬虫 - js逆向之猿人学第十六题webpack简版

前言

好久没有写猿人学的分析了,今天来分析一波

 

打开网址:

python爬虫 - js逆向之猿人学第十六题webpack简版

 

同样的,也很轻易的拿到接口,

python爬虫 - js逆向之猿人学第十六题webpack简版

 

 

然后这个接口里的请求参数又是迷人的m,m就是我们的目标了

 

分析

 

老规矩,搜索:

python爬虫 - js逆向之猿人学第十六题webpack简版

 

 

 

搜一堆出来,感觉都不太靠谱

 

那咋办?先看特征,看这个长度是多少的,卧槽,这个长度有点少见了

 

python爬虫 - js逆向之猿人学第十六题webpack简版

 

 

点调用栈看看:

python爬虫 - js逆向之猿人学第十六题webpack简版

 

 看到这个就很可疑了

python爬虫 - js逆向之猿人学第十六题webpack简版

 

 

为啥这么说,dispatch分发请求,匿名函数操作,实际的request,所以,关键的逻辑一定在这个request或者匿名函数anonymous前后,再看js名字就叫webpack,那就是webpack打包的,那前面才分析过webpack的东西,不用怕,点进去看:

python爬虫 - js逆向之猿人学第十六题webpack简版

 

 

进来都到这里,打上断点,翻页看看,这不就找到了吗,看着webpack唬人,感觉没两样啊

python爬虫 - js逆向之猿人学第十六题webpack简版

 

 

然后看逻辑,m的值就是n[e(528)](btoa, p_s)生成的了,然后传入的参数btoa,这个可以直接调用,不用多说,再看后面的p_s,定义就在上面,那就只剩n[e(528)]这个不知道啥东西了,鼠标放上去,发现,这个就是前面说的匿名函数anonymous了

python爬虫 - js逆向之猿人学第十六题webpack简版

 

 

点过去,发现就在上面,然后看逻辑,第一个参数是个函数,然后把第二个参数传入函数直接返回,这个不就是python里的装饰器嘛,

python爬虫 - js逆向之猿人学第十六题webpack简版

 

 

那么,也就是说,实际的加密逻辑就是btoa(p_s)

 

控制台操作下:

python爬虫 - js逆向之猿人学第十六题webpack简版

 

 

这不就出来了吗

 

 

然后,前面js逆向安全专题里说了,btoa就是个base64的函数,直接忽略了,python里直接就有,主要是后面的这个参数:

 

p_s = Date[e(496)](new Date)[e(517)]()

 

时间相关的都好说,就差这个e(517)和e(496)了,控制台看是啥东西:

python爬虫 - js逆向之猿人学第十六题webpack简版

 

 python爬虫 - js逆向之猿人学第十六题webpack简版

 

 最后的结果:

python爬虫 - js逆向之猿人学第十六题webpack简版

 

 然后这个时间戳的话,是毫秒级别的,13位

python爬虫 - js逆向之猿人学第十六题webpack简版

 

 

调试

那行,直接在python里搞一个看行不行

 

 

 

结语

 

没有结语,主要就是定位加密逻辑的思路

上一篇:webpack学习笔记(三):监听文件变化并编译


下一篇:网上提供的一些可以外网访问的WSDL地址