注:本篇博客仅供学习使用,请勿用做其他商业用途,如有侵权,请联系本菜鸟
废话写前面:本小菜鸟半年前刚学习js逆向爬虫的时候请教一个逆向大佬,大佬直接给我丢下一个网站,说你直接去扣这个网站,把这个网站的加密逻辑给搞出来,你基本就明白如何进行js逆向了,我当时一脸懵逼(大佬的方法果然与众不同),后面我try了try发现这特么真是个磨人的小妖精,搞了两天啥子东西都没弄出来,当场就差点跟爬虫Say goodbye
但是秉承着身在其位,必谋其职的原则,作为一个爬虫(划水)工程师,这点困难是难不到我的,经历了这么多逆向的网站,所以今天就打算回过头去看看,也算是一种不忘初心吧
好了,废话说了一大推,下面就是网站:
aHR0cHM6Ly9zZWFyY2guZG91YmFuLmNvbS9ib29rL3N1YmplY3Rfc2VhcmNoP3NlYXJjaF90ZXh0PSVFNiVBRiU5QiVFNiVCMyVCRCVFNCVCOCU5QyVFNiU4MCU5RCVFNiU4MyVCMyZjYXQ9MTAwMQ==
再说句废话:有兴趣、有需要打码平台的同学可以移步到这个网站康康了解了解高效、准确、连谷歌的都能搞定
好了 ,直接进入到逻辑部分
1.在请求页面数据的时候,返回的html源码中有window.__DATA__
这个数据,而且长度整的还挺长的,根据我的经验判断,这特么就是数据加密,别想骗过我 >_>
2.所以全局搜索这个参数
3.进入到加密的具体位置
从上面的截图已经很明显了,进入到加密位置反正就这几步
var a = e.from(r, "base64")
, s = Math.max(Math.floor((a.length - 2 * i) / 3), 0)
, u = a.slice(s, s + i);
a = e.concat([a.slice(0, s), a.slice(s + i)]);
var c = Object(o.hash)(e.concat([u, e.from(t)]));
return n((l = {},l[c] = a,l));
说明:前面四行代码扣起来还挺合适,后面两行的逻辑扣得我的大刀都差点拔出来了,而且这其中的函数都是用a,b,c这种,很容易就搞混了,这点再扣取的过程中要注意一点
因为这是纯扣js的一个逆向,所以本菜鸟就搞一个e.from吧
好了,反正就是纯扣js逻辑,不涉及补环境之类的,各位就自己慢慢扣吧
溜了。。溜了。。
不懂的去看看这位s大佬的 文章 真的是yyds
运行截图: