【斗鱼直播源】浏览器抓取真实直播源地址(纯前端JS & PHP解析源码) 您所在的位置:网站首页 斗鱼怎么看自己观看多长时间 【斗鱼直播源】浏览器抓取真实直播源地址(纯前端JS & PHP解析源码)

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

2023-08-09 11:36| 来源: 网络整理| 查看: 265

浏览器抓取真实直播源地址 0. 前言1. 直播源查找2. 浏览器请求过程分析及思路3. 模拟实现4. 整合播放器5. 【附】真实源地址6. 总结

网上搜索各种平台的直播源地址都是满天飞,但是经常会有失效的时候,因为官方也会定期的升级系统修改各种参数或链接让直播源不能永久,所以敝人一直崇尚的是授人以鱼不如授人以渔,与其给直播源别人,不如教大家如何去爬取直播源,就算失效了也不怕。 在这里插入图片描述

0. 前言

继虎牙直播后,网上说斗鱼的直播源是最难抓的,哦? 在抓取之前,需要了解视频直播源的分类和区别,可以自行了解hls,flv,m3u8等知识。

Tips: 本教程只是教大家如何利用前端调试技巧和爬虫基本操作,不作为商业用途,各位童鞋耗子尾汁。

所用工具:

浏览器PostmanWebStormVLC media player

所用技术:

前端PHP 1. 直播源查找

先打开斗鱼的一个直播间,当然先看电影频道啦: 在这里插入图片描述 在页面的请求中搜一下.flv、.m3u8 竟然找不到: 在这里插入图片描述 那么地址显然不是直接从后台带来的,那么就是ajax请求来的,从ajax请求中找到了一个请求: 在这里插入图片描述 很显然,这里有个地址,使用VLC播放一下,额。。。不好意思,刚好电影放完。但至少这个地址是可用的。 在这里插入图片描述

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

Request URL: https://m.douyu.com/api/room/ratestream Form Data:

v: 250120210110did: 5533423942ce86e564901f2200001631tt: 1610256007sign: 00121038e82b65413972da17c6fdaa1dver: 22011191rid: 3637778rate: -1

多打开几个直播间,可以发现有几个参数是固定的:did、ver、rid是直播间id、v是"2501"加当前日期、tt是当前时间戳、sign是签名、rate是清晰度(-1是默认的)。 那么现在就只有sign是比较麻烦的,它和当前时间戳是相关联的,后面解析可以看到。

找到发ajax请求的位置,在请求参数data那一行打一个断点,然后再刷新页面或者切换清晰度即可开始调试: 在这里插入图片描述 选择window[(0, s.default)(256042, "9f4f419501570ad13334")]然后右键Evaluate selected text in console,在控制台可以看到一个函数ub98484234,经测试这个函数名是固定的,但是函数体里的内容不是固定的,所以复制出函数没有用。然后r,o,c分别是直播间ID、did、时间戳,后面"&ver=" + u.VERSION + "&rid=" + r + "&rate=" + e + (f ? "&aid=" + f : "")都是固定的。 在这里插入图片描述 断点进到这个函数里面去看,可以看到这个函数是在页面请求回来的,而每个直播间的这个函数体都是不同的,里面还有个变量需要保存,而这个变量名也不是固定的,但是仔细一看,这个变量和这个函数的三个参数形参名是有关系的,仔细看下(是不是很像): 在这里插入图片描述 搜一下,这个变量就在这个函数的下面,是个数组: 在这里插入图片描述 思路就有了:

get请求直播间,获取ub98484234函数和变量代码运行这个函数获取ratestream请求的参数发送post请求获取直播源地址 3. 模拟实现

服务器代码(PHP版):

room.php



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有