2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > php 直播源 【Bilibili直播源】浏览器抓取真实直播源地址(纯前端JS PHP解析源码)...

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

时间:2021-07-03 03:30:30

相关推荐

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

0. 前言

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

1. 直播源查找

打开其中一个直播间,F12先查看地址是否是请求的页面带入的,搜索发现没有(m3u8/flv),那么就是ajax来的了:

来检查下ajax,发现第一个ajax返回了地址:

经测试,只需要将 host 和 base_url 的前半部分拼接起来就行了,不需要后面的参数,用在线m3u8测试网站测试播放成功:

https://d1--cn-/live-bvc/711838/live_222103174_4331333_1500/index.m3u8

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

既然找到了请求,那么模拟就方便了,先来看下请求地址和参数:

Request Method: GET (挺奇怪的,它这里是GET请求)

Request URL: https://api./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):

header('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./xlive/web-room/v2/index/getRoomPlayInfo?' . http_build_query($params));

echo $res;

exit;1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

前端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); }

});1

2

3

4

5

6

7

8

9

10

11

12

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

4. 整合播放器

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

5. 总结

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

文章来源: ,作者:zy1281539626,版权归原作者所有,如需转载,请联系作者。

原文链接:/zy1281539626/article/details/112451021

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。