网址:api
https://api.spapi.cn
在Network标签页中查看请求,能够看到有连续的两次POST请求第一次POST请求的参数:参数为B站视频连接、时间戳、一个加密参数sign
响应为一个url,应该是指加密后的B站视频连接:第二次POST请求的参数:参数为第一次请求的响应url、时间戳、和第一次不一样的加密参数sign
,username
和otype
不用管,都是固定的。响应为加密的image
和video
地址ide
在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文件中的,可是过一段时间后,这个值又会发生变化,因此用起来是不太方便的。并且这个网站生成的视频质量比较低,我也就没有兴趣继续搞他了。并且这个网站有点不友好,源码中能看到这么一个函数:加密