浏览器分析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站的直播源不是很难,参数也没有加密的,比其他网站简单,关键是找到直播源的位置,其他就好办了。

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

  1. 【浏览器直播源抓取】浏览器抓取真实直播源地址(2022/11/16)

    距离上次抓取直播源已经过去一年了,最近发现官方已更新了,以前的方法并不适用了,于是再来一波解析,小伙伴们准备好发车了吗? 一.版本回顾 之前直播源解析是从H5版本入手,直接从H5页面拿到全局变量liv ...

  2. python 模拟浏览器selenium_Python使用Selenium模块模拟浏览器抓取斗鱼直播间信息示例...

    本文实例讲述了Python使用Selenium模块模拟浏览器抓取斗鱼直播间信息.分享给大家供大家参考,具体如下: import time from multiprocessing import Poo ...

  3. python采集直播间数据_Python使用Selenium模块模拟浏览器抓取斗鱼直播间信息示例...

    本文实例讲述了Python使用Selenium模块模拟浏览器抓取斗鱼直播间信息.分享给大家供大家参考,具体如下: import time from multiprocessing import Poo ...

  4. python抓取直播源 并更新_Python爬虫实例(二)使用selenium抓取斗鱼直播平台数据...

    程序说明:抓取斗鱼直播平台的直播房间号及其观众人数,最后统计出某一时刻的总直播人数和总观众人数. 过程分析: 进入平台首页,来到页面底部点击下一页,发现url地址没有发生变化,这样的话再使用urlli ...

  5. selenium抓取斗鱼直播平台数据

    https://www.cnblogs.com/xinyangsdut/p/7617691.html 程序说明: 抓取斗鱼直播平台的直播房间号及其观众人数,最后统计出某一时刻的总直播人数和总观众人数. ...

  6. 使用seleniumphantomjs+bs4抓取斗鱼直播房间信息

    使用selenium&phantomjs+bs4抓取斗鱼直播房间信息 # -*- coding:utf-8 -*-from selenium import webdriver from bs4 ...

  7. python 爬虫动态网页的区别_Python开发爬虫之动态网页抓取篇:爬取博客评论数据——通过Selenium模拟浏览器抓取...

    区别于上篇动态网页抓取,这里介绍另一种方法,即使用浏览器渲染引擎.直接用浏览器在显示网页时解析 HTML.应用 CSS 样式并执行 JavaScript 的语句. 这个方法在爬虫过程中会打开一个浏览器 ...

  8. 网络爬虫pyppeteer、selenium模拟浏览器抓取数据

    项目场景: 1.抓取数据时,响应状态码为412,即状态码412含义为:Precondition Failed,服务器在验证在请求的头字段中给出先决条件时,没能满足其中的一个或多个.这个状态码允许客户端 ...

  9. BiliBili直播 弹幕信息抓取

    写在前面 最近由于自己在B站直播的原因,对B站本身提供的实时弹幕不太满意,于是自己抓包写了一个bilibili的弹幕协议,但还有一部分没有完成.留下的坑以后再慢慢填吧. socket包获拦截工具:Wi ...

最新文章

  1. 设计模式——代理模式
  2. iOS开发之 [NSNull length]:unrecognized selector sent
  3. 《leetcode》pascals-triangle(杨辉三角)
  4. ListView几个比较特殊的属性
  5. FlexViewer2.3中拉帘Widget下载
  6. 在每个运行中运行多个查询_Spring Data JPA的运行原理及几种查询方式
  7. html表单转换文档代码,把HTML表单提交的数据转化成XML文件 (转)
  8. idea设置断点,对于for循环,到指定次数时停止
  9. 大学里,数据系鄙视物理系,请问二位来自漫画系嘛?
  10. 最新WIN10系统封装教程2019系列(六)——常规软件安装
  11. 公专网集群对讲系统在城市执法过程中的应用
  12. 进销存管理系统基本功能
  13. [笔记]_ELVE_正则表达式
  14. C# 字符串中去掉换行符、间隔符等特殊字符
  15. 热敏电阻PTC和NTC的区别
  16. 20200205 打印沙漏
  17. 语音处理工具 sox librosa
  18. iOS10.3.3 iPhone5使用爱思助手越狱后安装完openssl,afc2失效的解决办法
  19. 迅为嵌入式linux驱动开发笔记(十一)—触摸屏驱动
  20. 在Nasa网站下载最新 MODIS 数据的详细步骤 ------十分详细

热门文章

  1. Caught exception while allowing TestExecutionListener
  2. Vue学习之旅Part1:Vue的数据渲染语法和指令(插值表达式、v-cloak、v-text、v-html)
  3. Token流通量的变化能直接影响价格吗? | TokenInsight
  4. Python—类和对象(一)
  5. 机器视觉让工业自动化更智慧
  6. notes 链接问题
  7. xXx隐私助手1.0
  8. ie浏览器调用本地文件无反应_IE浏览器工具--internet选项--设置--查看文件为什么打不开没反应...
  9. 琐碎打包工具_让我们停止琐碎的设计工作
  10. 斯坦福大学神经网络_斯坦福大学欺骗专家和网络安全首席执行官解释了为什么人们迷上网络骗局