B站被央视点名以后,鬼畜区已经岌岌可危。因此,提前动手,把B站鬼畜提前缓存到自己手里,是很有必要的。那么,先写爬虫吧。
先爬B站根据AV号获取视频的接口。
有一个重要的参数是cid。不同于aid(就是av号),这个参数藏得很深。但是还是被我找到了。就在 /video/av{aid}/ 的返回的HTML里面。

然后找到获取 flv 地址的地方:
https://interface.bilibili.com/v2/playurl?cid={cid}&appkey=84956560bc028eb7&otype=json&type=&quality=0&qn=0&sign=e25240322c03ac099f8144de2e32ea2a
响应长这个样子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| { "from": "local", "result": "suee", "quality": 32, "format": "flv480", "timelength": 536325, "accept_format": "flv720,flv480,flv360", "accept_description": [ "高清 720P", "清晰 480P", "流畅 360P" ], "accept_quality": [ 64, 32, 15 ], "seek_param": "start", "seek_type": "offset", "durl": [ { "order": 1, "length": 536325, "size": 70985606, "url": "http://upos-hz-mirrorkodo.acgvideo.com/upgcxcode/71/32/35153271/35153271-1-32.flv?e=ig8euxZM2rNcNbNg7wKVhoMM7w43hwdEto8g5X10ugNcXBlqNxHxNEVE5XREto8KqJZHUa6m5J0SqE85tZvEuENvNC8xNEVE9EKE9IMvXBvE2ENvNCImNEVEK9GVqJIwqa80WXIekXRE9IB5QK==&deadline=1522491779&dynamic=1&gen=playurl&oi=3662379941&os=kodo&platform=pc&rate=224400&trid=61b855b09f154d94a1357ce86a3432f1&uipk=5&uipv=5&um_deadline=1522491779&um_sign=377274dfeeb5fed89c17b4fcbcd56d27&upsig=d4eff030163a4fc04c81802d834ee662", "backup_url": [ "http://ws.acgvideo.com/9/81/35153271-1-32.flv?wsTime=1522491779&platform=pc&wsSecret2=e0558d0c81c6440741153cdc73fc6a08&oi=3662379941&rate=224&trid=61b855b09f154d94a1357ce86a3432f1" ] } ] }
|
看一下最后请求视频的地址,是这样的:

可以看到实际请求的 url 是 得到的 json 中的 durl 数组的第 0 项的 url 一项。
记得带上 Referer, 格式为 https://www.bilibili.com/video/av{aid}/。