最新某条_signature破解

 

今天给大家带来某头条的_signature签名破解。

目标URL:

aHR0cHM6Ly93d3cudG91dGlhby5jb20v

用base64解密得到。

 

图1-1

在推荐模块,这就是我们想要抓取的内容,X条的是下拉XHR请求,所以……抓包看一下吧。

抓包分析

因为是XHR异步请求,所以在抓包的时候将XHR请求过滤出来。当下拉加载触发后,可以看到请求列表中只有一条请求。

 

图2-1

我们观察发现此请求的response正是我们想要抓取的结果。

再来看一看请求参数。

 

图2-2

max_behot_time:明显是一个时间戳。

as:看不出来,应该是个加密。

cp:同as。

_signature:一大串加密字符串。

 

真让人头大……三个加密参数。没法,硬着头皮破解吧。

 

破解as/cp

 

虽然说是破解as/cp,可是全局搜索as/cp显然不太好使,上来就查看调用栈也有些麻烦,所以先搜索一下_signature。

 

图3-1

如图3-1,我们先进入第一个看看。进去之后在文件内搜索_signature。

 

图3-2

可以看出signature是由o赋值的,而o又是由:

  •  
o = (0,p.calcSignature)(this.url, this.params)

 

这个函数获得的,如果在断点时刻将this.params输出到控制台的话:

 

图3-3

可以发现其实_signature是由as/cp两个参数通过一系列加密获得的,_signature暂且不谈。

图3-2的this._setParams(t)这个函数十分可疑,怀疑为as/cp的生成函数,因为this.params这个参数在this._setParams(t)执行过后会发生变化。所以二话不说打上断点跳进去。

 

图3-4

这是跳进来的入口,观察发现var e的值就是新生成的as/cp的值,然后在函数的最后,也就是s.default出将新的as/cp覆盖到this.params上面,这就好办了,在光标位置打好断点再次跳入。

 

图3-5

这就是as/cp的加密地点了,将其扣出来,试运行一下,发现不行,显示o.default未定义,在浏览器上对应的这一行重新打好断点,跳进去看看o.default这个函数这个到底什么样。

 

图3-6

发现就是C函数啊,这就好办了。将1285-1439行的全部复制下来,顺便将图3-5内的o.default改成大写的C。预览一下,大概是这个样子的。

 

图3-7

 

运行一下:

图3-8

哦!我的老天鹅啊,出来了。

 

破解_signature参数

有了as/cp的基础,再回到我们最初的地方。

 

图4-1

从光标处跳入。

 

图4-2

 

这里的window.byted_acrawler.sign(a)就是生成_signature的地方了,a的值就是一个字典对象,里面包含一个带参数的url。

二话不说跳进去吧。

 

图4-3

跳进来之后你会惊呼WTF什么鬼?在想一个一个的追踪扣函数,那会扣的你头皮发麻,各种跳来跳去的for 循环搞得你怀疑人生。这一步也是卡了我好久。

将这页代码copy出来,放到webstrom上,按ctrl+shitf+-折叠一下

 

更多内容请关注我的公众号,web爬虫与js逆向,我也是个js逆向新人,大家一起交流进步。

【教程仅限学习交流,请勿用于非法用途】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值