网页上的网页加密视频,十有八九是上的视频m3u8格式。你打开开发者工具(F12),加密切到Network面板,下载刷新页面,网页看到一堆.ts后缀的上的视频文件在滚动,那就是加密视频被切成了几百个碎片。真正难搞的下载不是这些碎片,而是网页那个藏在请求头里的加密密钥。
我去年帮朋友下载一个付费课程,上的视频折腾了整整一个下午。加密那个网站用的下载是AES-128加密,密钥藏在一条单独的网页HTTP请求里,响应体就一串十六进制字符。上的视频你光有碎片没用,加密得先拿到这个key,还得知道它对应的IV向量。好在大部分视频网站不会把加密做得太绝——他们防的是普通用户,不是程序员。
具体操作分三步。第一步,在Network里过滤“m3u8”,找到主播放列表文件,看它里面引用的子列表路径。第二步,顺着子列表找到.ts碎片的URL规律,同时留意有没有“key”或“encryption”字样的请求,那里面就是密钥。第三步,用ffmpeg命令行手动拼装:ffmpeg -allowed_extensions ALL -i playlist.m3u8 -c copy output.mp4,如果报错提示解密失败,就把密钥文件下载到本地,用-decryption_key参数指过去。
这里有个坑——不少网站的m3u8列表里会写#EXT-X-KEY:METHOD=AES-128,URI="key.php",但那个URI是相对路径。你得拼上完整的域名才能访问,不然ffmpeg会一直报404。我那次就是卡在这,最后手动把URL补全,瞬间就通了。
还有更野的路子。有些视频是DRM保护的,比如Widevine或PlayReady,这种就别想用ffmpeg硬解了。但如果你只是自己看,录屏是最省事的——OBS开窗口录制,画质损失可以接受。别去碰那些所谓的“破解工具”,十个里有九个是木马。
下载完检查一下文件完整性。用ffprobe看时长和分辨率,如果视频能正常拖动播放,基本就成功了。要是播放到一半卡住,多半是某个.ts碎片没下载完整,重新跑一遍ffmpeg,换个网络环境试试。
说句实在话,这些加密措施防得住小白,防不住懂点技术的人。但你也别拿这本事去干坏事——我下载的那些课程都是自己付费过的,只是想离线看。网站服务器挂了,我花的钱不就打水漂了?