吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 13644|回复: 42
收起左侧

[分享] 记一次查找bilibili视频API的经历

  [复制链接]
hostwj 发表于 2020-6-29 15:24
今天逛论坛的时候发现了一篇关于B站视频爬取的帖子

求助抓B站视频接口  (出处: 吾爱破解论坛)

B站视频的爬取已经多到烂大街了,原理也有很多种,最常见的还是用ffmpeg或者别的方法将视频流碎片m4s合并起来
而这个API居然直接可以爬取到完整的视频
[Python] 纯文本查看 复制代码
api_url = 'https://api.bilibili.com/x/player/playurl?cid={}&avid={}&qn={}&otype=json&requestFrom=bilibili-helper'


因此,我去抓包试了下,但是对API的来源同样难以找到

在b站找了下最近新的API分享:

https://www.bilibili.com/read/cv3430609
里面没有关于  api.bilibili.com/x/player/playurl  的内容
根据经验我尝试从B站个人主页下手
经过一番努力,我成功找到了以下内容

api_1

api_1

api_2

api_2


甚至发现了奇怪的东东

api_3

api_3

json_1

json_1



但是很可惜,因为其中一点关于视频播放的东西都没有.


无可奈何走一遍别人走过的路,老老实实点开视频抓包~
首先想到的当然还是和video有关的

getvideo

getvideo


很可惜并没有很重要的内容,于是转而去研究play.so,同样没有重要的数据,但是绝对在里面有重要的内容,不可奈何打不开

play.so

play.so

fangwen

fangwen

这就很难下手,于是尝试了对m4s文件分析一下
对文件大小排序,拿到源文件片段

m4s

m4s

m4s

m4s

m4s

m4s

改了改其中的参数,列如
deadline:
1593419974
发现结果没有两样,只是片段m4s的地址,又试着将参数删了部分,最后摸索出来如果有nsb=1就会出403
2.22.png
如果没有就会出949,显然没有其他可以研究的路了

看了看m4s的乱码内容,没有丝毫头绪了,点开Initator,点开其中一个js

js

js

突然找到的希望,这肯定不是凭空来的,又找了下js内的内容

js

js

发现这种API是有很多类似的,应该是为了PC,app等不同的配备,还有新版旧版的区别
翻上去一看是我自己的bilibili Evolved脚本代码,白高兴一场,但是同时也明白了肯定在什么地方会有这个API,或者是旧版本的接口,或者是其他地方里面拼接的比较隐蔽,

这时候加载的视频也放完了

demo

demo

看着刷出来的推荐视频的链接,突然想到,会不会在这个时候的视频链接没有被封装直接是API,
找了下最后一段时间抓到的包

end

end

果然抓到了!
打开内容看了一眼

json_2

json_2

居然是很多个片段的地址!!!
由此终于找到了API的来源:源自视频加载完后的视频推存,这时候会调用的是完整的裸露的API,可以直接调用来使用爬虫下载

心急吃不了热豆腐,虽然js中一定可以分析出这个API,但是毕竟是动态的加载,加载完之后的视频推荐或者跳转到下一个视频可能就是关键~

[Python] 纯文本查看 复制代码
api_url = 'https://api.bilibili.com/x/player/playurl?cid={}&avid={}&qn={}&otype=json&requestFrom=bilibili-helper'

免费评分

参与人数 17威望 +1 吾爱币 +35 热心值 +15 收起 理由
唔嗳破解 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
BK白客 + 1 + 1 学习了
phx + 1 我很赞同!
Hmily + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
huangyutong + 1 + 1 用心讨论,共获提升!
chaifengbox + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
花の星月123 + 1 + 1 热心回复!
bikasuo + 1 + 1 我很赞同!
wongJzzz + 1 用心讨论,共获提升!
小k666 + 1 + 1 用心讨论,共获提升!
alskk + 1 + 1 谢谢@Thanks!
丶峰宇 + 1 + 1 热心回复!
天山雪 + 1 + 1 谢谢@Thanks!
佛泫 + 1 + 1 谢谢@Thanks!
笙若 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
小熊孩 + 1 + 1 我很赞同!
魔道书生 + 1 + 1 谢谢@Thanks!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| hostwj 发表于 2020-6-29 17:17
魔道书生 发表于 2020-6-29 16:06
还是要像大佬学习啊 就像做数学题一样 我一开始分析的时候从点击播放开始抓 啥玩意也没
后来从刷新页面开 ...

从主页下手完全是因为被b站那个API总结,看完感觉全是从主页里面抓到的

关于为什么有的网页访问是403,但是爬虫可以下载
可以看爬虫源码: TIM截图20200629165820.png

首先你是带着Referer去访问的,而且加上了你登录的SESSDATA,并且带有headers所以会认为你是正常用户去访问,所以才能访问到内容
而为什么可以下载,
建议打印一下 json.load 之后的内容,就知道直链内容是什么了

然后是这个API肯定是在js里面可以找到的,在你刚刚点开B站某个视频的时候,你肯定要知道视频碎片的加载顺序,和m4s的地址
在js里面肯定封装好了,你请求的时候js会反馈给你,而且不会一下子所有的信息都加载,视频片段会根据你的浏览位置,视频流片段的加载出来,但是在浏览器看起来就像完整的视频
所以在js里面肯定会有类似最后找到的API的东西,毕竟能得到视频直链的API一般会稍微封装或者加个验证机制的,不然还要大会员干啥

我也不是大佬,真的大佬都在弄js注入破解反反爬虫了,我这只是找到了方便的下载方法的来源而已.

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
dazhuang + 1 + 1 厉害

查看全部评分

 楼主| hostwj 发表于 2020-6-29 16:55
zdnyp 发表于 2020-6-29 16:26
播放完了再加载播放列表...有点不科学

实际上是在播放完之前几秒触发了js操作然后预加载
此用户无法显示 发表于 2020-6-30 21:01
厉害厉害,我想知道最近b站在网页播放中新添加的   云屏蔽弹幕   api是怎么样的,我现在只知道b站的弹幕api,分享一下了,网上也有很多分享了吧


其中cid或者aid就是每个视频的编号,每p都不同,在视频网页查看源代码,查找cid也就行了,记得以前还找到过一个精确计算视频数据的api,也有cid的,当然也有人叫他aid,控制台抓出来的叫aid,现在用的大部分都是下面那个api
xjk2008 发表于 2020-6-29 15:48
详细心得分享,感谢!!
魔道书生 发表于 2020-6-29 16:00
妈呀 刚发完贴 下午打开论坛 第一个就是“记一次分析B站API的过程”  谢谢大佬了!
对了大佬 你上面说JS里面可以找到API具体指的是?
魔道书生 发表于 2020-6-29 16:01
还有为毛要从主页下手呢?
魔道书生 发表于 2020-6-29 16:06
还是要像大佬学习啊 就像做数学题一样 我一开始分析的时候从点击播放开始抓 啥玩意也没
后来从刷新页面开始抓 信息多了点 原来播放完了还有惊喜 还有大佬我想问一下 这个API得到的链接直接访问的话是453错误 还是啥错误 但是py里面能直接下载 迅雷里面输入这个直链也不行 这是为啥?
linguo2625469 发表于 2020-6-29 16:19
谢谢大佬 学习了
吾爱不再 发表于 2020-6-29 16:22
谢谢分享!支持一下!
zdnyp 发表于 2020-6-29 16:26
播放完了再加载播放列表...有点不科学
zdnyp 发表于 2020-6-29 17:01
hostwj 发表于 2020-6-29 16:55
实际上是在播放完之前几秒触发了js操作然后预加载

刚开始播放的时候,应该也有个播放列表吧,不然按照啥顺序播放...
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 16:19

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表