当前位置: 首页 > article >正文

【Bilibili直播源】浏览器抓取真实直播源地址(纯前端JS PHP解析源码)

浏览器分析B站直播的直播源地址

  • 0. 前言
  • 1. 直播源查找
  • 2. 浏览器请求过程分析及思路
  • 3. 模拟实现
  • 4. 整合播放器
  • 5. 总结

0. 前言

之前只知道B站是点播的,很多up主可以上传自己的视频,也没看过B站的直播,现在来抓一下它的直播源。我们依然从浏览器分析,授人以鱼不如授人以渔,教大家如何去爬取直播源,就算失效了也不怕。
在这里插入图片描述

1. 直播源查找

打开其中一个直播间,F12先查看地址是否是请求的页面带入的,搜索发现没有(m3u8/flv),那么就是ajax来的了:
在这里插入图片描述
来检查下ajax,发现第一个ajax返回了地址:
在这里插入图片描述
经测试,只需要将 hostbase_url 的前半部分拼接起来就行了,不需要后面的参数,用在线m3u8测试网站测试播放成功:
https://d1--cn-gotcha204.bilivideo.com/live-bvc/711838/live_222103174_4331333_1500/index.m3u8
在这里插入图片描述

2. 浏览器请求过程分析及思路

既然找到了请求,那么模拟就方便了,先来看下请求地址和参数:
Request Method: GET (挺奇怪的,它这里是GET请求)
Request URL: https://api.live.bilibili.com/xlive/web-room/v2/index/getRoomPlayInfo
Query String:

  • room_id: 8178490
  • no_playurl: 0
  • mask: 1
  • qn: 0
  • platform: web
  • protocol: 0,1
  • format: 0,2
  • codec: 0,1

一眼看过去除了room_id其他的都是固定的就行了,这个太简单了。

先用Postman测试一下,完全OK:
在这里插入图片描述

3. 模拟实现

服务器源码(PHP):

<?phpheader('Content-Type:application/json; charset=utf-8');
header('Access-Control-Allow-Origin:*');
header('Access-Control-Allow-Methods:POST,GET,OPTIONS,DELETE');
header('Access-Control-Allow-Credentials: true'); 
header('Access-Control-Allow-Headers: Content-Type,Content-Length,Accept-Encoding,X-Requested-with, Origin');$params = ["room_id" => $_POST["room_id"],"no_playurl" => 0,"mask" => 0,"qn" => 0,"platform" => "web","protocol" => "0,1","format" => "0,2","codec" => "0,1",
];$res = file_get_contents('https://api.live.bilibili.com/xlive/web-room/v2/index/getRoomPlayInfo?' . http_build_query($params));echo $res;
exit;

前端H5:

$.ajax({type: 'post',url: 'http://xxx/player/bilibli/url.php',data: {room_id: 8178490,},success: function(res){var data = res.data.playurl_info.playurl.stream[1].format[0].codec[1];var url = data.url_info[0].host + data.base_url.split("?")[0];console.log(url);}
});

控制台就打印出了直播源地址:https://d1--cn-gotcha204.bilivideo.com/live-bvc/481520/live_222103174_4331333_1500/index.m3u8

4. 整合播放器

这个大家参照前几篇自行处理吧,可以使用ckplayervideojs等,我测试的播放器加载很慢,还是直接使用VLC media player最快

5. 总结

B站的直播源不是很难,参数也没有加密的,比其他网站简单,关键是找到直播源的位置,其他就好办了。

在这里插入图片描述

http://www.lryc.cn/news/2419629.html

相关文章:

  • 通过socketpair()函数实现同一进程内部的进程间通信(IPC)
  • 被盗14亿账号信息?腾讯紧急宣布!
  • Linux下 mtrace工具排查内存泄露问题
  • 解决xftp6 要继续使用此程序,您必须应用最新的更新或使用新版本
  • 经典java视频教程,个人无私分享
  • 开源 java CMS - FreeCMS1.9公布。
  • 针对搜索引擎的高级搜索方法(Baidu,Google,Bing....)
  • settimer()函数和alarm()函数
  • MTA邮件传送代理--sendmail完全配置
  • java response.sendredirect_「response.sendredirect」HttpServeltResponse接口中sendRedirect方法详解 - seo实验室...
  • 数据治理——主数据项目实施
  • C++ 获取鼠标点击位置
  • 开源评论系统 Isso 全攻略
  • (SDL2)SDL在ubuntu下的测试代码(雷霄骅)
  • 负数求补码
  • short 下 32768的二进制
  • winRAR 破解注册码
  • 文件加密系统的设计与实现(源码+开题报告)
  • contest11 CF510E div2 ooxxx oooox oooox
  • Spider爬虫框架之Spiders模块
  • JS-变量提升与暂时性死区概念
  • 什么是WordPress?
  • jq-jquery根据内容设置select和input radio选中
  • 高数 | 工具及必备方法 | 【一元函数积分学】常用积分公式表
  • default-gateway和default-router的区别
  • Apche部署https详解
  • 采样定理的证明与推导
  • XSLT知识总结
  • 传说中的“摸奶节”!随便你怎么摸!
  • 社会网络分析与人脉网络:如何建立有效的人脉资源