本教程仅供学习研究使用!!!
教程更新了若干次,2020->2021.04->2021.06,如果知友们发现又失效了请联系我。
目前给定两种方案,若视频是在 2021.06 之前的,可以采用第一种方案,如果是在 2021.06 之后的/第一种方案抓不到 M3U8的,可以采用另一种方案,文末会放 FAQ。
(壹)适用于2021.06 之前的回放视频
一、安装Fiddler
提供个官网下载链接,同样,再带一个比较友好的下载链接:https://wwa.lanzoui.com/b016dlm4d 密码:fvap。
二、设置Fiddler捕捉HTTPS流量
点击Tools,选择Options…
三、开始抓包
P.S.如果您觉得左侧栏东西有点多可以先remove点。
在钉钉内播放群直播回放,然后返回Fiddler界面。Ctrl+F进入搜索.m3u8即可找到文件。
然后就会自动为您标黄底黑字一条记录,右键。
随便保存一个位置。
随便找个文本编辑器,粘贴复制的url地址,删掉尾缀。
把 M3U8文件拖入下载器(下载器的 Github Repo,也可以一键下载,当然也可以在我的网盘链接中下载,并解压,打开 ***SimpleG.exe),填入BASEURL。
之后点击 GO 开始下载即可。下载完成后默认保存在该目录的Downloads文件夹内。
(贰)适用于 2021.06 之后/第一种抓不到 m3u8 文件的回放视频
一二步与(壹)相同,这里不重复提。
三、中间人注入
选中 Fiddler Script。
选择 OnBeforeResponse,会自动定位。
var sToInsert = "<script src='https://cdn.jsdelivr.net/gh/Tencent/[email protected]/dist/vconsole.min.js'></script><script>var vConsole = new VConsole();</script>"
oSession.utilDecodeResponse();
oSession.utilReplaceOnceInResponse('</head>', sToInsert + '</head>', 0);
上图应该是 3.8.1 的 vConsole ,懒得重新换图了(
四、监测流量
打开钉钉回放页面,发现右下角多了 vConsole,一个绿色的按钮。点击这个按钮,填入以下代码:
vConsole.showTab("network");
然后丢到 M3U8 下载器(下载器的 Github Repo,也可以一键下载,当然也可以在我的网盘链接中下载,并解压,打开 ***SimpleG.exe)里下载:
等待下载完成即可,下载后的视频在 M3U8 下载器目录下 Downloads 文件夹内。
钉钉云课堂回放下载
有知友向我提问,能否下载云课堂回放,其实也可以,比直播回放更加简单:打开 Fiddler,点开视频回放:
返回 Fiddler,按下 Ctrl+F,搜索 `.mp4`
右键那一条目,Copy – Just Url。
然后粘贴到浏览器地址栏或者任何其他下载器即可下载。
FAQ
Upd:如果点开视频后抓包软件无反应怎么办?
检查钉钉登录时是否打开了使用代理。
Upd:如果抓包显示内容unknown怎么办?
检查抓包软件的SSL证书是否安装正常,可以尝试重新安装一次。
Upd:如果抓包显示证书错误怎么办?
在证书安装的设置中勾选 Check for certificate revocation 选项。或者尝试右上角的 Actions,Reset all
Upd:如果需要下载多个视频,比较麻烦怎么办?
可以先抓出所有 M3U8链接,有三种方法批量下载:
- 将m3u8链接每行一个存入一个.txt文件,然后将文件直接拖到M3U8地址文本框,点击GO按钮
- 将m3u8文件存到一个文件夹中,然后将文件夹直接拖到M3U8地址文本框,点击GO按钮
- 新建txt,每行以name,url形式写
记得别忘记填 BASEURL 哦~
Upd:如果遇到 M3U8 下载器下载时出现 Error in reading file 怎么办?
检查 BASEURL 末尾是否加上了 ‘/’
Upd:如果遇到 Fiddler 出现以下小黄条怎么办?
尝试点击黄条中央文字,看下是否可以正常工作。如果不行,可以尝试关闭系统代理,重启 Fiddler。
如果遇到任何问题可以在我的博客文章下方评论栏提出(或者知乎评论也行),我会尽力解答的啦~
如若您觉得我的教程对您有帮助,可以在文末点击赞赏,请我喝杯咖啡,谢谢啦~
作者您好 这个脚本在运行时 提示脚本异常,在钉钉中已经不出现那个vConsole了
我也今天刚发现了,同请大佬解决一下,万分感谢!~~
有位网友在评论区回复方法了
感谢感谢,我刚试了一下,又可以正常下载了。感谢您,也感谢那位大神的回复。
将插入 OnBeforeResponse 中的第一行改为
var sToInsert = "<script src='https://unpkg.com/[email protected]/dist/vconsole.min.js'></script><script>var vConsole = new window.VConsole();</script>"
,将使用的命令由vConsole.showTab("network");
换成vConsole.showPlugin("network");
。就行了。感谢大佬赐教
感谢大神赐教,太感谢了~又可以正常下载了。感激不尽!~~~
m3u8 地址无效怎么办啊
找到解决方法了:在控制台(小绿框)下面的command输入
// 注入html
let $section = document.createElement(‘section’)
$section.innerHTML = `<!doctype html>
<html lang=”en”>
m3u8 downloader
/*全局设置*/
html, body {
margin: 0;
padding: 0;
}
body::-webkit-scrollbar { display: none}
p {
margin: 0;
}
[v-cloak] {
display: none;
}
#m-app {
height: 100%;
width: 100%;
text-align: center;
padding: 10px 50px 80px;
box-sizing: border-box;
}
.m-p-action {
margin: 20px auto;
max-width: 1100px;
width: 100%;
font-size: 35px;
text-align: center;
font-weight: bold;
}
.m-p-other, .m-p-tamper, .m-p-github, .m-p-language {
position: fixed;
right: 50px;
background-color: #eff3f6;
background-image: linear-gradient(-180deg, #fafbfc, #eff3f6 90%);
color: #24292e;
border: 1px solid rgba(27, 31, 35, .2);
border-radius: 3px;
cursor: pointer;
display: inline-block;
font-size: 14px;
font-weight: 600;
line-height: 20px;
padding: 6px 12px;
z-index: 99;
}
.m-p-help {
position: fixed;
right: 50px;
top: 50px;
width: 30px;
height: 30px;
color: #666666;
z-index: 2;
line-height: 30px;
font-weight: bolder;
border-radius: 50%;
border: 1px solid rgba(27, 31, 35, .2);
cursor: pointer;
background-color: #eff3f6;
background-image: linear-gradient(-180deg, #fafbfc, #eff3f6 90%);
}
.m-p-github:hover, .m-p-other:hover, .m-p-tamper:hover, .m-p-help:hover, .m-p-language:hover {
opacity: 0.9;
}
.m-p-language {
bottom: 70px;
}
.m-p-other {
bottom: 110px;
}
.m-p-tamper {
bottom: 30px;
}
.m-p-github {
bottom: 150px;
}
/*广告*/
.m-p-refer {
position: absolute;
left: 50px;
bottom: 50px;
}
.m-p-refer .text {
position: absolute;
top: -80px;
left: -40px;
animation-name: upAnimation;
transform-origin: center bottom;
animation-duration: 2s;
animation-fill-mode: both;
animation-iteration-count: infinite;
animation-delay: .5s;
}
.m-p-refer .close {
display: block;
position: absolute;
top: -110px;
right: -50px;
padding: 0;
margin: 0;
width: 50px;
height: 50px;
border-radius: 50%;
border: none;
cursor: pointer;
z-index: 3;
transition: 0.3s all;
background-size: 30px 30px;
background-repeat: no-repeat;
background-position: center center;
background-image: url(https://blog.luckly-mjw.cn/tool-show/m3u8-downloader/imgs/close.png);
background-color: rgba(0, 0, 0, 0.5);
}
.m-p-refer .close:hover {
background-color: rgba(0, 0, 0, 0.8);
}
.m-p-refer .link {
border-radius: 4px;
text-decoration: none;
background-color: #4E84E6;
transition: 0.3s all;
}
.m-p-refer .link:hover {
top: -10px;
color: #333333;
border: 1px solid transparent;
background: rgba(0, 0, 0, 0.6);
box-shadow: 2px 11px 20px 0 rgba(0, 0, 0, 0.6);
}
@keyframes upAnimation {
0% {
transform: rotate(0deg);
transition-timing-function: cubic-bezier(0.215, .61, .355, 1)
}
}
/顶部信息录入/
.m-p-temp-url {
padding-top: 50px;
padding-bottom: 10px;
width: 100%;
color: #999999;
text-align: left;
font-style: italic;
word-break: break-all;
}
.m-p-input-container {
display: flex;
}
.m-p-input-container input {
flex: 1;
margin-bottom: 30px;
display: block;
width: 280px;
padding: 16px;
font-size: 24px;
border-radius: 4px;
box-shadow: none;
color: #444444;
border: 1px solid #cccccc;
}
.m-p-input-container .range-input {
margin-left: 10px;
flex: 0 0 100px;
width: 100px;
box-sizing: border-box;
}
.m-p-input-container div {
position: relative;
display: inline-block;
margin-left: 10px;
height: 60px;
line-height: 60px;
font-size: 24px;
color: white;
cursor: pointer;
border-radius: 4px;
border: 1px solid #eeeeee;
background-color: #3D8AC7;
opacity: 1;
transition: 0.3s all;
}
.m-p-input-container div:hover {
opacity: 0.9;
}
.m-p-input-container div {
width: 200px;
}
.m-p-input-container .disable {
cursor: not-allowed;
background-color: #dddddd;
}
/下载状态/
.m-p-line {
margin: 20px 0 50px;
vertical-align: top;
width: 100%;
height: 5px;
border-bottom: dotted;
}
.m-p-tips {
width: 100%;
color: #999999;
text-align: left;
font-style: italic;
word-break: break-all;
}
.m-p-tips p {
width: 100px;
display: inline-block;
}
.m-p-tips.error-tips{
color: #DC5350;
}
.m-p-segment {
text-align: left;
}
.m-p-segment .item {
display: inline-block;
margin: 10px 6px;
width: 50px;
height: 40px;
color: white;
line-height: 40px;
text-align: center;
border-radius: 4px;
cursor: help;
border: solid 1px #eeeeee;
background-color: #dddddd;
transition: 0.3s all;
}
.m-p-segment .finish {
background-color: #0ACD76;
}
.m-p-segment .error {
cursor: pointer;
background-color: #DC5350;
}
.m-p-segment .error:hover {
opacity: 0.9;
}
.m-p-cross, .m-p-final {
display: inline-block;
width: 100%;
height: 50px;
line-height: 50px;
font-size: 20px;
color: white;
cursor: pointer;
border-radius: 4px;
border: 1px solid #eeeeee;
background-color: #3D8AC7;
opacity: 1;
transition: 0.3s all;
}
.m-p-final {
margin-top: 10px;
text-decoration: none;
}
.m-p-force, .m-p-retry {
position: absolute;
right: 50px;
display: inline-block;
padding: 6px 12px;
font-size: 18px;
color: white;
cursor: pointer;
border-radius: 4px;
border: 1px solid #eeeeee;
background-color: #3D8AC7;
opacity: 1;
transition: 0.3s all;
}
.m-p-retry {
right: 250px;
}
.m-p-force:hover, .m-p-retry:hover {
opacity: 0.9;
}
var vConsole = new VConsole();
页面加载中,请耐心等待…
推荐一个 m3u8 网页版提取工具,无需下载软件,打开网站即可下载,自动检测,一键下载。
![m3u8 视频下载工具]()
工具链接:https://blog.luckly-mjw.cn/tool-show/m3u8-downloader/index.html
工具教程:https://segmentfault.com/a/1190000021847172?_ea=32289224
查看图片
点击跳转
{{tips}}
?
手动添加油猴插件
github
其他实用工具
English version
<a v-if=”isShowRefer” class=”m-p-refer” target=”_blank” href=”https://segmentfault.com/a/1190000024416860“>
<img src=”https://blog.luckly-mjw.cn/tool-show/m3u8-downloader/imgs/001.png” class=”link”>
<img src=”https://blog.luckly-mjw.cn/tool-show/m3u8-downloader/imgs/003.png” class=”text”>
<i class=”close” @click.prevent=”isShowRefer=false”>
<div class=”m-p-temp-url”>测试链接:http://1257120875.vod2.myqcloud.com/0ef121cdvodtransgzp1257120875/3055695e5285890780828799271/v.f230.m3u8
<section class=”m-p-input-container”>
<input type=”text” v-model=”url” :disabled=”downloading” placeholder=”请输入 m3u8 链接”>
<div class=”m-p-cross” @click=”copyCode”>当无法下载,资源发生跨域限制时,在视频源页面打开控制台,注入代码解决,点击本按钮复制代码
<a class=”m-p-final” target=”_blank” href=”https://segmentfault.com/a/1190000025182822“>下载的视频看不了?试试这个终结解决方案「无差别视频提取工具」,有配套「油猴」插件啦!!!
<template v-if=”finishList.length > 0″>
<div class=”m-p-line”>
<div class=”m-p-retry” v-if=”errorNum && downloadIndex >= rangeDownload.targetSegment” @click=”retryAll”>重新下载错误片段
<div class=”m-p-force” v-if=”mediaFileList.length” @click=”forceDownload”>强制下载现有片段
<div class=”m-p-tips”>待下载碎片总量:{{ rangeDownload.targetSegment }},已下载:{{ finishNum }},错误:{{ errorNum }},进度:{{ (finishNum / rangeDownload.targetSegment * 100).toFixed(2) }}%
<div class=”m-p-tips” :class=”[errorNum ? ‘error-tips’ : ”]”>若某视频碎片下载发生错误,将标记为红色,可点击相应图标进行重试
<section class=”m-p-segment”>
<div class=”item” v-for=”(item, index) in finishList” :class=”[item.status]” :title=”item.title” @click=”retry(index)”>{{ index + 1 }}
var _hmt = _hmt || [];
(function () {
var hm = document.createElement(“script”);
hm.src = “https://hm.baidu.com/hm.js?1f12b0865d866ae1b93514870d93ce89”;
var s = document.getElementsByTagName(“script”)[0];
s.parentNode.insertBefore(hm, s);
})();
`
$section.style.width = ‘100%’
$section.style.height = ‘800px’
$section.style.top = ‘0’
$section.style.left = ‘0’
$section.style.position = ‘relative’
$section.style.zIndex = ‘9999’
$section.style.backgroundColor = ‘white’
document.body.appendChild($section);
document.getElementById(‘loading’) && document.getElementById(‘loading’).remove()
new Vue({
el: ‘#m-app’,
data() {
return {
url: ”, // 在线链接
tips: ‘m3u8 视频在线提取工具’, // 顶部提示
isPause: false, // 是否暂停下载
isGetMP4: false, // 是否转码为 MP4 下载
durationSecond: 0, // 视频持续时长
isShowRefer: true, // 是否显示推送
downloading: false, // 是否下载中
beginTime: ”, // 开始下载的时间
errorNum: 0, // 错误数
finishNum: 0, // 已下载数
downloadIndex: 0, // 当前下载片段
finishList: [], // 下载完成项目
tsUrlList: [], // ts URL数组
mediaFileList: [], // 下载的媒体数组
rangeDownload: { // 特定范围下载
isShowRange: false, // 是否显示范围下载
startSegment: ”, // 起始片段
endSegment: ”, // 截止片段
targetSegment: 1, // 待下载片段
},
aesConf: { // AES 视频解密配置
method: ”, // 加密算法
uri: ”, // key 所在文件路径
iv: ”, // 偏移值
key: ”, // 秘钥
decryptor: null, // 解码器对象
},
created() {
this.getSource();
window.addEventListener(‘keyup’, this.onKeyup)
},
beforeDestroy() {
window.removeEventListener(‘keyup’, this.onKeyup)
},
methods: {
// 获取链接中携带的资源链接
getSource() {
let { href } = location
if (href.indexOf(‘?source=’) > -1) {
this.url = href.split(‘?source=’)[1]
}
},
}
})
})
document.body.appendChild($vue);
document.body.appendChild($mp4);
document.body.appendChild($ase);
alert(‘注入成功,请滚动到页面底部,若白屏则等待资源加载’)
大哥你发的也太多了 有没有简单易懂一点的
2022年4月7日
点击vscode输入 在command命令中输入vConsole.showTab(network);之后
提示 undefined ,之前好几次都没问题,今天这次好像是抓不到了,大佬可以看下是什么问题吗
向up主求助,我在vconsole里输入了vConsole.showTab(“network”);并点击ok后,没有出现m3u8的内容,以前没有出现过这个问题。
谢谢大佬!老师不让下载得回放终于有救了!找了好几个小时啊
蟹蟹大佬!!
又用不了了,现在vconsole抓出来的是加密的m3u8不是alicdn了,怎么办(
我改完FD脚本后, 打开直播回放, FD就弹出一个框,
当前页面脚本发生错误
错误: Script error
URL: https://cdn.jsdelivr.net/gh/Tencent/[email protected]/dist/vconsole.min.js
是不是改版了大佬
可以了, 我翻了你的所有评论, 发现我的浏览器有vconsole, 但到直播回放里没有, 原来是再点到播放界面才有vconsole
大佬我可以在csdn里记录一下吗 附上你博客的链接
大佬 抖音的 学浪 可以用这个抓包吗
大佬牛逼!!(超大声
https://zhuanlan.zhihu.com/p/398385180大佬,这个不是您本人吧,没引用注明
大佬,打不开m3u8的下载链接怎么办啊
要自闭了,前面都搞好了结果m3u8下不起泪目
m3u8找朋友下好了!但是为什么显示地址无效啊,我好废物
2021-12-23反馈:使用 fiddler v5.0.20211.51073版本,钉钉6.3.15-Release.12108702版,成功了。一开始粘贴完代码后,浏览器和直播窗口都没有绿色vConsole按钮;然后重新安装fiddler,并在菜单 Tools-Options-HTTPS的Actions按钮中选择了Rese All Certificates,卸载证书并重新安装证书后,浏览器打开后有vConsole按钮了,但是直播窗口中仍然没有绿色按钮,而且也抓不到信息;后来就按博主FAQ里的,钉钉登录界面选择 使用浏览器代理,重新登陆,就成功了。感谢博主。
大佬,为什么我复制完脚本之后,钉钉回访就打不开了,全白的界面。退出抓包工具就能打开了啊T.T
大佬库课网课如何抓取地址
下载的视频在哪呀,载后的视频在 M3U8 下载器目录下 Downloads 文件夹内。m3u8下载器在哪里呀
上图应该是 3.8.1 的 vConsole ,懒得重新换图了(
的vconsole 在哪呀 没看到这个
可用
还可以用,按第二个方法完美下载,赞赞赞