如何下载与解密小鹅通、腾讯课堂等平台的付费视频


注意:该方法下载的视频是付费视频,并且已经付费,未购买的付费视频是下载不了的


如果你下载的是腾讯课堂的已付费视频:看这个链接就行,再往下的内容不用看了:

http://qinyuanyang.com/post/253.html


如果你已学会,并且会使用PHP,可以使用批量处理代码:

http://qinyuanyang.com/post/245.html


最近有朋友求助下载小鹅通的付费视频,一开始以为只是普通的M3U8类型的点播视频,使用工具(M3U8 Downloader)下载即可,实际处理时,发现并没这么简单,网站主要做了以下防下载措施:

1,限制Referer,验证源站,防止直接访问,也就是防下载工具

2,视频分片,M3U8的常规,不算防下载措施

3,视频加密,即使以上两个问题已经解决,把视频下载回来并且已经按序重组,也不能打开

image.png 

分步解决思路:

1,绕过Referer验证,手动给它加上

2,优先通过设置下载参数一次性下载,不行再使用分片下载再重组

3,找到解密方法和密钥,解密

 

需要获取的内容:

1,视频文件的真实地址

2,M3U8文件的地址

3,密钥

4,视频长度


下面真正开始,首先准备以下工具:

1,wget.exe,用于下载文件,点我下载

2,PHP7,用于运行一段PHP脚本的解密程序,用其它的也行,会什么语言就用什么,PHP是世界上最好的语言,点我下载

 

打开谷歌浏览器,登录账号,按F12调出开发者工具,选择Network标签,对网络请求抓包,然后打开要下载的视频,如下图:

image.png 

 

在请求过滤入输入 M3,下方会自动过滤出m3u8的链接:

image.png 

 

此时如果直接通过新标签打开想下载它,是不行的,会提示源主机禁止,说明一定是验证了来源:

image.png

image.png 

 

解决方法是使用wget.exe加上Referer参数下载,在上面的m3u8文件链接点鼠标右键,选择复制链接:

image.png 

 

这里为了方便,我把wget.exe放在桌面上,之后也把所有要用到的内容都放桌面上

在桌面上建个txt文件,用于临时保存下载指令

这里先把上面复制的链接粘贴进来暂存:

image.png 

 

然后拿到Referer参数,小鹅通视频以TS文件为播放视频的,所以这里先在过滤处输入TS,过滤出视频文件,随便点开一个,找到Referer,把后面的内容复制下来:

image.png 

 

下一步构造下载链接,在上面的那个TXT文件中,输入下载指令,使用已经拿到的两个链接替换下方相应的参数:

wget.exe -E --referer Referer链接 -r -m M3U8链接 -O 目标文件

 

下图已抹去一些私人信息,并且所有内容组装为一行指令:

image.png 

 

然后打开记事本的替换文本功能,把 & 符号 替换成 & ,否则下载会出错,也就是加上英文双引号:

 image.png

 

最后CTRL+ACTRL+C,全选、复制,回到桌面,按住SHIFT键,点鼠标右键,选择在此处打开命令行,再把刚才复制的内容粘贴进去,按回车键,得到第一个文件,M3U8文件:

image.png 

 

M3U8文件从桌面自动新建的文件夹中取出到桌面

下一步,获取视频文件,这里已经验证过可以一个文件下载完视频,所以不用分片下载

复制上面找到的TS文件的链接,用上面相同的办法构造下载指令,替换那个M3U8的链接和&符号

然后用记事本打开下载到的M3U8文件,拉到文件最底部,找到最后一个 end 后的数字,复制它

image.png 

 

再修改上面构造的视频文件下载指令,把指令中的链接参数start改成0,把end改成上面复制的数字

image.png 

 

复制上面的所有内容,按下载M3U8文件的方法,下载它:

image.png 

 

到这里顺利得到一个完整的视频文件,把TS后缀的视频文件从桌面自动新建的文件夹中取出到桌面

 

下一步,获取密钥,M3U8文件拉到文件最上面,可以看到有密钥的链接,并且加密方式是 AES-128

image.png 

 

密钥是一个二进制文件,如果直接打开会是个乱码,所以没有必要打开它

下载不需要验证,所以下载使用下载工具下载即可,把文件名修改为KEY,放在桌面备用:

image.png 

 

到这里已经具备了以下关键文件:

1,加密后的视频文件

2,加密方式

3,密钥

4,偏移量IV(都是0,可以不使用它)

 

经过一番百度搜索,想找下有没有可以白嫖的现成的解密工具,结果发现都没有工具可以下载到,有一些解密代码,要么是PYTHON要么是JAVA之类,就是不见我熟悉的PHP,所以打算用PHP写一个解密脚本对视频文件解密,这也是上面准备的工具中有PHP的原因。


在桌面上新建文件,名称改为 解密.php,用记事本或者PHPIDE打开它,输入下面这些内容,需要按实际替换:

 

<?php
$con = 'C:\Users\***\Desktop\230.ts';
$key = 'C:\Users\***\Desktop\KEY';
$result='C:\Users\***\Desktop\result.ts'; 
 
$fcon = fopen($con, "rb");
$fkey = fopen($key, "rb");
$f = fopen($result, 'wb');
 
$file_con = fread($fcon, filesize($con));
$file_key = fread($fkey, filesize($key));
 
fwrite($f, decrypt($file_con, $file_key)); 
 
fclose($f);
fclose($fcon);
fclose($fkey);

function decrypt($string, $key)
{
    $decrypted = openssl_decrypt($string, 'AES128', $key, OPENSSL_RAW_DATA); 
    return $decrypted;
}

?>


 

保存,然后命令行定位到PHP执行文件所在目录,以命令行运行这个PHP文件,133MB的视频文件两秒钟搞定:

image.png

 

桌面上会生成一个result.ts文件,该文件是解密之后的文件,使用播放器可以播放它


以上套路在腾讯课堂也是一样的





 如果本文对你有帮助,可以向我投1个币,谢谢 

 如果本文对你有帮助,可以向我投1个币,谢谢 

 如果本文对你有帮助,可以向我投1个币,谢谢 

image.png


  • 评论列表:
  •  访客
     发布于 2021-09-14 23:58:28  回复该评论
  • 站长,有时间做个超2g的大文件解密吧,大家的需求还是蛮多的。总是报告PHP Warning: openssl_decrypt(): data is too long太可惜了
    •  天才小网管
       发布于 2021-09-16 09:19:29  回复该评论
    • 我这里是使用PHP解密函数直接解密一整个文件的,这个限制是该函数本身的限制,要让它分段解密的话,我没时间再去折腾喽~如果你下的是小E通视频超过2GB,我没办法了,但是你可以尝试下这个:http://qinyuanyang.com/post/266.html,如果是ke.qq.com,你可以看看文章第一个链接
  •  访客
     发布于 2021-09-12 20:50:03  回复该评论
  • 大神,我综合了你的几个帖子的方法,下载了已付费视频的ts文件和php文件,文件大小超过1G,但是最后php解密操作那里怎么都看不懂,请问有没有操作视频可以看一下呢,谢谢了!
  •  访客
     发布于 2021-06-09 12:03:10  回复该评论
  • 是程序运行的问题,有办法解决吗
  •  访客
     发布于 2021-06-08 12:39:11  回复该评论
  • 文件大小没超过,是不是运行出错了
    •  天才小网管
       发布于 2021-06-08 20:10:07  回复该评论
    • 一定有哪里出了点问题,比如改代码改出错了、KEY错了、PHP没配置好等等
  •  访客
     发布于 2021-06-06 21:15:31  回复该评论
  • 尝试解密,但出来的result是空的,求解
    •  天才小网管
       发布于 2021-06-06 21:49:50  回复该评论
    • 有可能拿到的KEY是错的,看一下KEY文件的大小,如果不是16B,一定是错的
      •  访客
         发布于 2021-06-07 19:08:37  回复该评论
      • key是对的,试了很多方法,好像是程序运行终止了
        •  天才小网管
           发布于 2021-06-07 20:50:20  回复该评论
        • PHP方案,最大可解决2GB的单个文件,解密工具方案,800MB,超过的不行
  •  访客
     发布于 2021-01-21 22:52:36  回复该评论
  • 现在下载的m3u8全是这样的内容:0VYVE0zVQojRVhULVgtVkVSU0lPTjozCiNFWFQtWC@UQVJHRVREVVJBVElPTjoxMgojRVhULVgtTUVESUEtU0VRVUVOQ0U6MAojRVhULVgtS0VZOk@FVEhPRD@BRVMtMTI%LFVSST0iaHR0cHM6Ly9hcHAueGlhb#UtdGVjaC5jb#0vZ#V
    这怎么搞啊?
  •  访客
     发布于 2020-12-30 16:06:43  回复该评论
  • 感谢站长,解密成功!提示一下各位,网站的形式虽然多变,要理解每一步骤的目的才能适应网站的变化
  •  访客
     发布于 2020-10-28 14:28:52  回复该评论
  • 有需要下载腾讯视频或网易云课堂或者其他网校的在线视频,可以找俺,俺可以帮到您
    作者这个方法太复杂了,效率也太低下了,太费时间了,麻烦,费事,
    有需要的话,可以扣扣211**久8* 帮到您
    •  天才小网管
       发布于 2020-10-30 11:11:15  回复该评论
    • 来自博客管理员的说明:本文章只是技术交流,结合其它几遍文章,提供了完整的思路和代码,由使用者自行学习使用,并不提供一键下载的成品,谢谢,该留言中的部分关键字已做*号替换处理
  •  大文件处理
     发布于 2020-10-18 00:03:13  回复该评论
  • 大哥,当处理文件大于2G时总报错:
    PHP Warning: openssl_decrypt(): data is too long in D:\xxxx on line 9
    Warning: openssl_decrypt(): data is too long in D:\xxxx on line 9
    ini 文件memory_limit 已经改成4096M了也不行,急等,感谢!
    •  天才小网管
       发布于 2020-10-19 08:10:33  回复该评论
    • 试了,不用发我邮箱了,用批量的分段下载、解密重组可以实现,也就是下载方式不一样的,这个操作起来比较复杂,联系我来弄吧
    •  天才小网管
       发布于 2020-10-18 23:41:19  回复该评论
    • 发到我邮箱给我试试看,380006246#qq.com
      这确实太大了,视频有两三个小时长了吧
  •  访客
     发布于 2020-10-16 09:12:10  回复该评论
  • 文件大于3.8G时,第9行会报warning, "PHP Warning: openssl_decrypt(): data is too long"
    怎么破?
    line9:
    $decrypted = openssl_decrypt($string, 'AES128', $key, OPENSSL_RAW_DATA);
  •  访客
     发布于 2020-10-10 23:54:11  回复该评论
  • B站视频没有了 可以在别的平台上传一下最新的教学视频吗 比如油管
  •  访客
     发布于 2020-09-30 09:38:20  回复该评论
  • b站 腾讯课堂的视频没了,能不能再给个 视频链接
  •  访客
     发布于 2020-09-23 11:17:59  回复该评论
  • 牛X!!直播回放有方法可以下载吗?
  •  访客
     发布于 2020-09-20 09:54:49  回复该评论
  • 腾讯视频好像也不行了,免费的视频里也没有M3u8了
  •  访客
     发布于 2020-09-14 11:10:33  回复该评论
  • 网页版小鹅通用的vue写的,但是查看么m3u8的视频太小了,不正确
    •  天才小网管
       发布于 2020-09-15 00:39:34  回复该评论
    • 9月份小鹅通改版了,没有m3u8了,具体方法请看B站刚更新的一个视频~~
  •  访客
     发布于 2020-09-13 11:43:43  回复该评论
  • 我在手机上缓存了视频我也找到了视频文件缓存的位置是一个完整的视频文件,但是后缀是.m3u8.sqlite。不知道这个格式怎么解密。
    •  天才小网管
       发布于 2020-09-13 23:00:02  回复该评论
    • .sqlite表明它是一个sqlite数据库文件,需要使用专门的软件打开,并且估计你打开它也没什么有用信息,它不是视频文件,可以发给我看看里面是什么
  •  访客
     发布于 2020-09-09 12:34:21  回复该评论
  • 楼主,小鹅通前两天更新过了,这个方法貌似行不通了。请问你那边还能正常下载吗?如果不行的话,还有别的下载方法吗
  •  访客
     发布于 2020-09-09 12:18:53  回复该评论
  • 楼主,小鹅通近两天更新过了,这个方法试了一下好像不行了。请问你还可以正常下载吗?
  •  访客
     发布于 2020-09-08 15:57:48  回复该评论
  • 请问能不能下载或解析到小鹅通未付费的内容,未付费是不是没有办法解析到文件
  •  访客
     发布于 2020-08-23 23:07:48  回复该评论
  • 这都TM什么神操作,高级又牛逼的样子

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

桂ICP备19000498号-3