ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

微信公众号文章音视频下载全攻略:PC端与手机端实操方法

微信公众号文章音视频下载全攻略:PC端与手机端实操方法 我在日常做内容备份和素材整理时最常被问到的就是“公众号文章里的音视频怎么下”。很多人以为能用右键另存为搞定结果打开一看只是一个播放器外壳根本没有文件。微信公众号文章音视频下载这件事要说难也不算难但确实有门槛PC端和手机端处理路线完全不同微信客户端还会对资源做缓存和域名校验直接复制链接往往带防盗链或过期签名。这篇文章我把实际用过的几种方案全部整理出来覆盖电脑端和手机端适合内容运营、剪辑找素材、论文引证、播客存档这些场景。1. 动手之前先想清楚文章里这些音视频到底是哪种“货”1.1 公众号音视频的三种常见存放形式公众号文章里的音视频不是单一来源我按下载难度从小到大排序先认清楚类型再动手成功率会高很多。第一种是腾讯视频iframe。作者在图文里插入一个腾讯视频页面文章源码中只会出现一个iframe标签真正的播放地址在v.qq.com或者vv.video.qq.com的页面里视频本身通常被切成m3u8分片。这种形式比较麻烦因为微信文章页只做“引用”并不会直接把视频URL暴露出来。第二种是公众号后台上传的直链视频。作者在公众号后台“素材库-视频”里上传的文件会被微信转存到mmbiz.qpic.cn域名下多数情况下是可直接访问的mp4文件文章HTML里能看到>curl -e https://mp.weixin.qq.com/ -A Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0 Safari/537.36 这里替换成你抓到的mp4直链 -o output.mp4-e指定的是来源页地址公众号资源通常要求Referer必须是mp.weixin.qq.com否则会403。-A是模拟浏览器UA保险起见最好两个都带上。不过这里有个容易踩坑的点mmbiz.qpic.cn的直链会携带签名和时间戳有效期短则几个小时、长则几天。我当时备份一篇文章时复制了链接隔了一天再去下载就404了只能重新抓一次。所以建议抓下来后立刻下载不要存链接。2.2 电脑端微信客户端的“缓存捡漏”法最不依赖浏览器有些文章在普通浏览器里打不开只能在微信PC客户端内正常观看这时候可以用缓存方案。微信PC端播放过的音视频会在本地留一份缓存文件我们要做的就是把文件从缓存目录里翻出来。先确保电脑上已经登录微信然后在公众号文章里把目标音频或视频完整播放一遍让文件真正落到本地。接着打开微信设置里的“文件管理”点击“打开文件夹”进入微信的数据目录。微信3.x版本通常会在WeChat Files\wxid_xxx\FileStorage\Video下按月份保存视频音频则在Audio目录微信4.x开始目录结构变了常见路径是xwechat_files\wxid_xxx\下面也会出现Video、Audio、Cache这些子目录。如果你觉得目录太多找起来麻烦直接把整个微信数据目录扔进Everything里按扩展名.mp4、.m4a、.mp3搜一遍找到体积最大、修改时间最新的文件复制出来改名就行。需要注意不要在微信里点“清空聊天记录”或“清理缓存”否则这些文件会被一起清理掉。另外缓存文件名往往是随机字符串拷出来之后要自己确认内容。我曾遇到过把好几个音频都命名为audio_xxx的情况只能挨个播放判断。2.3 抓包与代理方案适合m3u8、加密资源和视频号卡片开发者工具有时候拿到的是分片URL而不是完整文件尤其遇到腾讯视频iframe时网络面板里全是segment_xxx.ts请求。这时候想“一步到位”直接下载用抓包工具更顺手比如Fiddler或Charles。原理很简单让微信PC客户端或手机的流量走本地代理再开启HTTPS解密就能看到所有网络请求。公众号文章的音视频请求很显眼体积大、类型是video/mp4或application/vnd.apple.mpegurl复制下来后续处理。如果是m3u8分片推荐直接用ffmpeg合并这是最省心的做法ffmpeg -headers Referer: https://mp.weixin.qq.com/ -i https://example.com/playlist.m3u8 -c copy output.mp4-c copy意思是尽量不重新编码直接复制流速度快且不损失画质。大部分腾讯视频分片都能这样合并。遇到加密HLSm3u8里带#EXT-X-KEYffmpeg也会自动解密只要请求头带对了就行。抓包方案还要提一下手机端应用场景用手机微信看文章时把Wi-Fi代理指到电脑的Fiddler或Charles同样可以抓到完整请求。这样手机端和PC端就统一了一台电脑就能解决两类设备的问题。3. 手机端下载安卓、iOS和“曲线救国”3.1 安卓微信缓存目录 支持深层访问的文件管理器安卓端相对自由公众号文章里播放过的音视频经常能在微信的沙盒目录里找到。在微信里打开目标文章完整播放一遍然后打开文件管理器进入/sdcard/Android/data/com.tencent.mm/MicroMsg/。这里面会有一个长hash文件夹继续找FileStorage下的Video或Audio目录按时间排序最新的文件就是要找的目标。不过安卓11以后系统限制了Android/data目录的访问普通文件管理器看不到这时候有两个办法一是用MT管理器、ES文件浏览器这类有特殊权限的工具二是在文件管理器地址栏里手动输入路径实在不行就插上USB用电脑访问。如果你用的是夸克或UC这类自带视频嗅探的浏览器还有一个更简单的路子把公众号文章链接复制到手机浏览器打开点击播放浏览器会自动识别页面里的视频并在播放页浮出一个“下载视频”的按钮。这个方法适合不想翻目录的人一键就能存到相册或文件。音频同理部分手机浏览器没有音频嗅探那就回到缓存目录找一般Audio目录里就是mp3或m4a。3.2 iOS端别硬刚沙盒用“浏览器中转”或电脑中转iOS系统的沙盒机制很严格你没法像安卓一样直接进微信缓存目录翻文件所以思路必须换。最推荐的是“中转法”在微信里点击文章右上角选择“在浏览器打开”Safari然后用iCloud云盘、备忘录或微信传输助手把链接转到电脑再按PC端的方法处理。如果一定要在手机上直接下可以找支持“网页媒体嗅探”的Safari捷径脚本把文章页的mp4/mp3链接喂给“下载媒体”捷径但捷径脚本质量参差不齐我测试过很多次成功率不太稳定主要是微信签名过期和跨域问题导致。另一种是电脑中转把iPhone用数据线连到电脑用爱思助手或iTunes做一次全量备份再通过第三方工具从备份里提取微信数据文件。这个方法有效但成本高要装软件、要备份普通用户不建议轻易尝试。3.3 手机上的第三方解析工具到底靠不靠谱应用商店里搜“公众号视频下载”会出来一堆App和在线解析站。它们的原理一般是你把文章链接粘贴进去服务端去抓取页面解析出音视频地址再回传给你下载。听起来很省事但我必须提醒几个问题一是隐私风险。第三方服务能爬到你的文章链接、账号身份信息如果还要微信扫码登录风险更高。二是稳定性很差。公众号资源带防盗链和时效签名在线解析站经常下载失败。三是部分工具会把用户上传的素材直接捞进自己的资源库这对做原创内容的人尤其不利。我个人的态度是在线解析工具可以用来应急但不要把敏感文章或独家内容丢进去也不要指望它能稳定复现。自己用浏览器开发者工具或抓包工具才是最可控的方式。4. 进阶批量采集、脚本化和自动化处理4.1 批量抓取历史文章里的音视频从采集文章列表开始做内容备份或竞品分析时常常需要批量处理几十上百篇文章这时候手动一条条抓太慢了。批量场景的逻辑一般分三步拿到公众号的历史文章链接列表逐个打开文章页面提取音视频直链批量下载并按文章标题重命名。历史文章列表怎么拿微信官方没有公开的历史列表API常见做法是用搜狗微信搜索有验证码问题、第三方公众号采集API或通过RPA模拟浏览器操作。拿到链接列表后写脚本批量抓取页面。公众号文章HTML里视频直链经常藏在>import re import requests url https://mp.weixin.qq.com/s/xxxx headers { User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64), Referer: https://mp.weixin.qq.com/ } html requests.get(url, headersheaders, timeout10).text mp4_urls re.findall(rhttps?://mmbiz\.qpic\.cn/[^\]?\.mp4, html) mp3_urls re.findall(rhttps?://[^\]?\.mp3, html) print(mp4_urls, mp3_urls)这里的关键是请求头里的Referer不带的话微信服务器很可能返回异常页面。抓到直链后再用上一节提到的curl或requests下载文件记得把streamTrue打开避免一次性加载到内存。4.2 用Node.js或命令行工具完成下载有些场景下Python不是你的主力语言用Node.js也能完成同样的下载流程。核心思路没变先请求文章HTML提取音视频URL再用设置好请求头的HTTP客户端把文件写入磁盘。const axios require(axios); const fs require(fs); async function download(url, outputPath) { const response await axios({ url, method: GET, responseType: stream, headers: { User-Agent: Mozilla/5.0, Referer: https://mp.weixin.qq.com/ } }); response.data.pipe(fs.createWriteStream(outputPath)); }如果你拿到的是m3u8而不是mp4Node.js里可以调用ffmpeg-static自带的二进制文件来合并const ffmpeg require(ffmpeg-static); const { execFile } require(child_process); execFile(ffmpeg, [-i, m3u8Url, -c, copy, output.mp4]);实测下来m3u8合并最稳的始终是ffmpeg本身轮子管用但没必要重复造。4.3 RPA与油猴脚本不懂代码也能半自动如果完全不会写代码RPA工具是一个可行的折中方案。用UiBot、影刀这类RPA软件录制一个流程打开文章链接、模拟点击播放、截屏识别、复制视频链接、调用下载工具。RPA不需要看视频教程写代码但速度慢且遇到滑块验证时容易卡住适合几十一百篇的量。浏览器油猴脚本是另一个思路。GreasyFork上可以搜到“微信公众号视频下载”类脚本原理是在文章页面注入按钮读取页面里的video标签或>
返回列表