哔哩哔哩视频下载请求头的分析及伪造

B站视频下载需要用到2个接口,一个是通过Aid号获取视频基本信息和Cid号的接口,一个是通过视频Cid号获取下载地址的接口。

接口一

1
https://api.bilibili.com/x/web-interface/view?aid=29702317

接口二

1
https://api.bilibili.com/x/player/playurl?avid=29702317&cid=51686571&qn=74&otype=json

注意事项

  1. 接口二在获取视频下载地址的时候,如果没有cookie信息的话最大只能获取到480P清晰度的视频,需要用账户登录后获取其cookie里面的SESSDATA值(SESSDATA有效期是一个月)请求的同时还要在headers中添加User-AgentHost,具体请看下面:
1
2
3
4
5
headers: {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:56.0) Gecko/20100101 Firefox/56.0',
'Host': 'api.bilibili.com',
'Cookie': 'SESSDATA=bd125cdd%2C1554519358%2C6d4df231'
}
  1. 在下载视频的时候,headers也要进行伪造,具体看下面:
1
2
3
4
5
6
7
8
9
10
headers: {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:56.0) Gecko/20100101 Firefox/56.0',
'Accept': '*/*',
'Accept-Language': 'en-US,en;q=0.5',
'Accept-Encoding': 'gzip, deflate, br',
'Range': 'bytes=0-',
'Referer': 'http://www.bilibili.com/video/av46174956/',
'Origin': 'https://www.bilibili.com',
'Connection': 'keep-alive'
}

把Referer里面的av号替换成下载的视频的aid号