浏览器抓取网页(浏览器抓取真实直播源地址(纯前端解析)() )

优采云 发布时间: 2021-10-31 04:06

  浏览器抓取网页(浏览器抓取真实直播源地址(纯前端解析)()

)

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

  网上搜索各种平台的直播源地址满天飞,但也经常有失败的时候,因为官方会定期升级系统修改各种参数或链接,使直播源不永久,所以我们的人民一直提倡教导他人。最好教人如何钓鱼。与其把直播源给别人,还不如教大家如何爬取直播源,哪怕失败了。

  

  0. 前言

  业余时间喜欢用虎牙看直播,所以第一时间想到的就是怎么抢虎牙的直播源。

  爬取之前需要了解一下直播视频源的分类和区别,可以自己了解hls、flv、m3u8等知识。

  Tips:本教程只教你如何使用前端调试技巧和基本的爬虫操作。它不用于商业用途。

  1. 浏览器爬取过程

  首先打开虎牙官网,找到*敏*感*词*:这里是你使用的移动端的网页(因为移动端简单)

  我随手读了一遍。没有ajax请求,所以地址必须和页面一起带进来。现在直播的网页大多是SSR(服务端渲染),所以只能去页面源码中查找:

  好人!直接找了一个我很想寻址的liveLineUrl,就是m3u8的地址:

  

  在线m3u8播放测试网站:

  这个网站可以测试播放源是否好,加油!尝试一下!

  

  这是完美的!

  

  但有那么简单吗?

  

  我尝试了我经常看的*敏*感*词*【Let's Watch】看电影什么的,结果:

  

  

  这就是正在发生的事情。. . 然后对比发现问题前后的两个链接,以下是【一起看】的链接:

  

  然后想到liveLineUrl参数不是全局变量,控制台打印出来看看,然后仔细对比发现参数变了,其中一个fm参数变成了seqid:

  

  先试试看控制台打印是否可以播放:

  

  OK,司马懿出来了,现在只需要分析破解参数了。

  2. 参数分析

  Ctrl + Shift + F 搜索liveLineUrl,然后在这里找到js处理url,打个断点调试看看如何处理:

  断点进入Object(m.default)(window.liveLineUrl),可以看到这里是处理参数的地方,最后返回的是解析后的参数字符串:

  

  我整理了一下解析函数,重新实现了:

  function parseUrl(url){

let params = url.split("?")[1];

params = params.split("&");

let paramsObj = {};

for (let i = 0; i {

y += `&${e}=${others[e]}`

});

return `${mainUrl}?wsSecret=${newWsSecret}&wsTime=${wsTime}&u=0&seqid=${time}${y}`;

}

  其中用到了Base64和MD5相关的函数:

<p>// md5下载:https://raw.githubusercontent.com/emn178/js-md5/master/src/md5.js

let Base64 = {

_keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",

encode: function(e) {

var t = "";

var n, r, i, s, o, u, a;

var f = 0;

e = Base64._utf8_encode(e);

while (f > 2;

o = (n & 3) 4;

u = (r & 15) 6;

a = i & 63;

if (isNaN(r)) {

u = a = 64

} else if (isNaN(i)) {

a = 64

}

t = t + this._keyStr.charAt(s) + this._keyStr.charAt(o) + this._keyStr.charAt(u) + this._keyStr.charAt(a)

}

return t

},

decode: function(e) {

var t = "";

var n, r, i;

var s, o, u, a;

var f = 0;

e = e.replace(/[^A-Za-z0-9+/=]/g, "");

while (f > 6 & 63 | 128);

t += String.fromCharCode(r & 63 | 128)

}

}

return t

},

_utf8_decode: function(e) {

var t = "";

var n = 0;

var r = c1 = c2 = 0;

while (n

虎牙直播

To view this video please enable JavaScript, and consider upgrading to a web browser that

supports HTML5 video

let Base64 = {

_keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",

encode: function(e) {

var t = "";

var n, r, i, s, o, u, a;

var f = 0;

e = Base64._utf8_encode(e);

while (f > 2;

o = (n & 3) 4;

u = (r & 15) 6;

a = i & 63;

if (isNaN(r)) {

u = a = 64

} else if (isNaN(i)) {

a = 64

}

t = t + this._keyStr.charAt(s) + this._keyStr.charAt(o) + this._keyStr.charAt(u) + this._keyStr.charAt(a)

}

return t

},

decode: function(e) {

var t = "";

var n, r, i;

var s, o, u, a;

var f = 0;

e = e.replace(/[^A-Za-z0-9+/=]/g, "");

while (f > 6 & 63 | 128);

t += String.fromCharCode(r & 63 | 128)

}

}

return t

},

_utf8_decode: function(e) {

var t = "";

var n = 0;

var r = c1 = c2 = 0;

while (n

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线