原理:我们可以通过找出b站视频源进行下载视频,如果源视频是没水印的那么我们下载的时候也就没有水印。
首先我们来分析一下B站的视频源
打开浏览器按F12 开发者模式,并模拟切换到手机,如下图
找到b站的视频json接口 链接如下:
https://api.bilibili.com/x/player/playurl?fnval=80&cid=746904707&bvid=BV1pT41157it
参数说明:
(1)avid参数值就是aid,使用时可以用bvid参数代替(它的值就是视频的BV号)
(2)cid参数的值可以通过aid参数获取,它是每个视频的分p编号,同个av号视频里的每p视频都有不同cid值
下面是json文件内容,其中baseUrl就是视频下载链接,json接口里面有多个清晰度,所以有多条视频链接
从上面可知,我们可以根据链接的参数值构造b站的视频接口,进而获取视频的下载链接
1、首先就是获得cid这个参数的值
查询视频cid的接口:
https://api.bilibili.com/x/player/pagelist?bvid=填写视频的BV号
#示例链接
https://api.bilibili.com/x/player/pagelist?bvid=BV1pT41157it
根据这个链接就能查询到视频的cid
2、构造视频接口链接
注意该接口有cid和bvid两个参数
https://api.bilibili.com/x/player/playurl?fnval=80&cid=&bvid=
构造好后:
https://api.bilibili.com/x/player/playurl?fnval=80&cid=746904707&bvid=BV1pT41157it
根据上述接口获得视频下载链接后,如果直接复制链接在浏览器下载是无法打开的,报403错误
因此我们需要在请求的时候加上user-agent和referer头才能正常访问
headers = { 'referer':'https://www.bilibili.com/', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Firefox/102.0', }
再附上一个查询视频基本信息接口:
https://api.bilibili.com/x/web-interface/view
参数 aid&cid
如需更多b站接口可参考 B站API接口合集
当然上面的方法下载的视频是会有up水印的,如果要下载无水印的视频,可以试试下面这个方法!
下载工具:
b站主要有三个视频源,分别web/app/TV端,其中TV端是有无水印视频下载源的。
这边分享一个大神做的下载工具BBdown,内含TV端下载源可下载无水印b站视频(文章末尾附下载链接)
使用方法:
1、首先来到BBdown软件所在文件夹,然后在上面地址栏输入cmd,并按回车
2、打开命令控制台后输入BBDown -tv 后面接你要下载的视频
3、下载成功后视频保存在软件所在文件夹,我们可以看看视频是不是无水印的
因此真正实现了视频“去水印”,软件使用方法就介绍到这里了。
注:
不支持竖屏的视频,竖屏的视频下载下来还是有水印的
如果下载的视频还是有水印,那就是b站视频源也没有无水印的视频,这种下载就还是有水印的,一般粉丝量大的up的视频都能下无水印的,小up的个别有无水印,估计是因为视频源不同。
发表评论: