【JS逆向】破解第三方Bilibili视频下载加密策略(二)

以前写过一篇 【JS逆向】破解第三方B站视频下载加密策略,这篇写的是另外一个功能相似的网站。此次的网站和上次那个相比,免费API只能生成清晰度为360P的视频,可是加密策略还挺好玩的,因此仍是整理出来发一下。

网址:api

https://api.spapi.cn

两次POST请求

在Network标签页中查看请求,能够看到有连续的两次POST请求图片第一次POST请求的参数:图片参数为B站视频连接、时间戳、一个加密参数sign响应为一个url,应该是指加密后的B站视频连接:图片第二次POST请求的参数:图片参数为第一次请求的响应url、时间戳、和第一次不一样的加密参数signusernameotype不用管,都是固定的。响应为加密的imagevideo地址图片ide

XHR断点

在sources中没有查找到sign的信息,在源码中也没有查找到,因而选择加一个XHR断点(从Initiator中找更快)图片而后就找到这个jiexi函数了:图片第一个sign是这样生成的:var sign = captcha(timestamp + url + strings);第二个sign是这样生成的:var sign = captcha(timestamp + key + url);captcha函数在另外一个JS文件中定义,可是这个JS文件也加了混淆,打不动,可是注意到sign恒为32位,就容易猜到它是一个md5加密图片随便找了一个在线加密的网站验证了一下,果真没错。这就叫化劲,四两拨千斤。图片函数

解密

解密获得视频地址:图片hex2bin是将十六进制字符串转换为二进制字符的函数,把对应的函数找出来便可。网站

图片


这个网站有一个坑,就是jiexi函数中的key是写死在JS文件中的,可是过一段时间后,这个值又会发生变化,因此用起来是不太方便的。并且这个网站生成的视频质量比较低,我也就没有兴趣继续搞他了。并且这个网站有点不友好,源码中能看到这么一个函数:图片加密