如何嗅探并下载网页上的音频:播客、BGM、有声书一网打尽
某个网站的背景音乐听着很好,但根本没有下载按钮。播客平台想离线保存几集,官方 App 又要付费。有声书网站每章都是单独的音频文件,一个一个点实在烦死了。
这篇说一件事:怎么把这些藏起来的音频搞下来。
网页音频为什么不好直接下载
浏览器对音频文件没有内置的"批量保存"功能。右键一个 <audio> 元素,有时能看到"另存为",但大多数现代网站根本不给右键菜单,或者右键菜单里的"保存"只存到一个临时的、带 token 的 URL,等你打开已经 403 了。
还有更麻烦的情况:
HLS 音频流 — 播客平台和课程网站经常用 HLS 传输音频,同视频 HLS 一样切成几百个分片。你拿到 M3U8 URL,能直接播,但"另存为"只存了那个几 KB 的播放列表文件。原理一样的,详见 如何下载 M3U8/HLS 流:完整入门指南。
有签名 token 的直链 — 有些平台给每个请求生成带时效的 URL,直接复制链接放 IDM 或浏览器下载栏,大概率是 403。
需要登录才能访问 — 会员专属内容,裸链根本拿不到,必须带上当前会话的 Cookie 才行。
FlowPick 作为浏览器扩展,在网络请求层直接拦截——它看到的 URL 和你的浏览器看到的完全一样,带 Cookie,带 token,实时有效。
FlowPick 能检测到哪些音频
通过 webRequest API 监控所有网络请求,FlowPick 能检测:
- 直接音频文件:MP3、M4A、AAC、WAV、FLAC、OGG、WEBA 等,页面一加载就能看到
- HLS 音频流:M3U8 播放列表里的纯音频轨道,需要点击播放触发请求
- DASH 音频轨道:DASH 流里独立的音频 AdaptationSet,通常是 M4A/AAC 格式
- 页面背景音乐:随页面加载自动请求的 BGM,刷新页面就能检测到
检测不到的情况:
- 用 Web Audio API 在客户端合成的声音(不经过网络请求)
- Widevine/PlayReady DRM 加密的音频(Spotify 等平台)
- Base64 内联到 HTML 里的音频数据
支持的音频格式
| 格式 | 扩展名 | 常见场景 |
|---|---|---|
| MP3 | .mp3 | 播客、音乐、有声书 |
| M4A/AAC | .m4a、.aac | 苹果设备、YouTube 音轨 |
| WAV | .wav | 游戏音效、专业录音 |
| FLAC | .flac | 无损音乐 |
| OGG | .ogg | 游戏 BGM、部分播客 |
| WebM Audio | .weba | Chrome 系浏览器 |
| HLS 音频流 | .m3u8 | 播客平台、课程网站 |
| DASH 音频轨 | .mpd | B 站纯音频、YouTube Music |
一步步嗅探并下载音频
第一步:刷新页面或触发播放
关键点因音频类型而不同:
- 页面 BGM / 自动播放音频:直接刷新页面,BGM 加载请求马上就被 FlowPick 捕获,不需要手动操作
- 需要点击播放的播客/有声书:点击播放按钮,等播放开始(通常 2-3 秒),再打开 FlowPick
- HLS 音频流:点播放之后,FlowPick 才会看到 M3U8 请求。不播放,就看不到流
第二步:打开 FlowPick 弹窗
点击浏览器工具栏的 FlowPick 图标,弹窗角标上的数字是当前页面检测到的所有媒体资源总数。

第三步:切换到音频标签
弹窗顶部有媒体类型标签,点击音频标签(🎵 图标)。你会看到检测到的所有音频资源列表,每条显示文件名、格式、文件大小(如果服务器返回了 Content-Length)。
如果文件大小显示为"未知"——这很正常,服务器没有在响应头里返回大小。不影响下载。
第四步:选择并下载
单个文件:点击右侧的下载图标直接下载。
批量下载:勾选多个条目 → 点击顶部的下载已选。FlowPick 按队列依次下载,弹窗里有进度显示。
对于 HLS 音频流,FlowPick 会自动下载所有分片并合并成完整的 M4A 或 MP3 文件,不需要手动处理。背后的合并流水线在 FlowPick 是怎么在浏览器里把切片合成 MP4 的 里有完整拆解,音频流走的是同一套。

具体场景操作
播客批量保存
播客平台的常见情况:首页列表加载时,每集的音频 URL 可能还没有请求——只有你点进单集页面或者点击播放,音频请求才会发出。
操作节奏:
- 打开播客节目页面
- 逐集点击播放(哪怕只播 2 秒)
- 不要关闭标签页,继续点击下一集播放
- 多集依次触发后,打开 FlowPick → 音频标签
- 全选 → 下载已选
这样能一次性排队下载所有已触发的集数,不需要一集一集等。
注意: 如果平台一次只加载 20 集,滚动到底部加载更多之后,需要再继续触发播放才能检测到后面的集数。
有声书按章节下载
有声书平台通常把每章切成独立的音频文件。进入收听页面,播放第一章,FlowPick 弹出音频条目。如果平台一次预加载多章,全部都会显示出来——全选批量下载即可。
如果平台是播完一章才加载下一章:播放、下载、切到下一章、播放、再下载,循环。比起浏览器挨个右键另存为,FlowPick 处理得快一些,特别是 HLS 流不用手动处理分片。
网站背景音乐
很多创意网站、游戏宣传页、产品 landing page 都有精心制作的 BGM。这类音频通常在页面加载时就自动请求,不需要任何操作触发。
打开页面(等 BGM 开始播) → 立刻打开 FlowPick → 音频标签里就有了。通常是 MP3 或 M4A 格式,可以直接下载。
YouTube Music / B 站纯音频
YouTube 和 B 站的纯音频内容走 DASH,音频轨和视频轨是分开的。FlowPick 弹窗里会同时显示视频条目和音频条目——如果你只需要音频,切到音频标签,直接下载音频轨即可,不需要下载整个视频再提取。DASH 为什么这么设计,可以看 什么是 DASH 流媒体?MPD 文件解析。
B 站的 DASH 音频轨通常是 M4A 格式,128kbps 或 320kbps(大会员)。B 站完整的下载流程在 如何下载 Bilibili 视频到本地 里讲得更细。
课程平台音频讲义
部分课程平台的课程有独立的音频版本,或者正片视频本身的 HLS 音频轨可以单独下载。在 FlowPick 弹窗里:如果你看到视频流(M3U8)的同时,音频标签里也有独立的 M3U8 条目,说明平台分开传输了音视频——直接下载音频轨,文件小,适合通勤听。
过滤掉不想要的音频
页面上的音频不一定都是你要的——广告音频、UI 交互音效、页面提示音都会被检测到。
按文件大小过滤:在 FlowPick 设置里设置最小文件大小(比如 500KB),就能去掉绝大多数短促的 UI 音效和广告音频。播客单集通常几十 MB,有声书章节也在几 MB 以上,这个阈值很好用。
手动取消勾选:批量下载前扫一遍列表,文件名里有 "ad"、"jingle"、"notify" 这类关键词的手动取消勾选。
常见问题
检测到了但下载失败
多半是 URL 里带时效 token,你打开弹窗到实际点击下载之间隔了太久,token 失效了。刷新页面、重新触发播放、重新检测,再立刻下载。
HLS 音频下载完是空文件或者几 KB
M3U8 文件本身只有几 KB,是播放列表,不是音频内容。FlowPick 在下载 HLS 音频时会自动解析并下载所有分片合并——如果出现几 KB 的文件,说明 FlowPick 只保存了播放列表而没有触发分片下载流程。
换到 Chrome 或 Edge,合并功能在这两个浏览器上最稳定。
文件下载了但放不了
几种情况:
- 格式标错:服务器发了 M4A 但 Content-Type 写的是
audio/mpeg,导致保存成 .mp3。用 VLC 强制打开,或者把扩展名手动改成 .m4a 试试 - HLS 分片缺失:播放器缓冲没结束就停掉了,某些分片没下载完。重新下载,确保 FlowPick 进度条到 100%
- DRM 加密:Spotify、网易云 VIP 歌曲等平台用 DRM,下载到的是加密数据,任何播放器都打不开。FlowPick 没法处理这类内容
下载的播客只有音乐没有说话声
极少数情况:平台把背景音乐和人声分成了两条独立的音频轨道(DASH 多 AdaptationSet),你只下了其中一条。查看 FlowPick 音频列表里是否有另一条条目,选中两条都下载,再用 FFmpeg 混合:
ffmpeg -i voice.m4a -i bgm.m4a -filter_complex amix=inputs=2 output.mp3
隐私说明
FlowPick 的音频检测和下载全程在浏览器本地完成。检测到的 URL、下载的文件都不经过 FlowPick 的服务器。你的账号 Cookie 和会话信息只用于你的浏览器直接向目标服务器发请求——和你直接打开页面听音频是完全一样的网络路径。
推荐阅读
- 如何下载 M3U8/HLS 流:完整入门指南 — 音频流和视频流原理一样,这篇讲得更透
- 什么是 DASH 流媒体?MPD 文件解析 — DASH 把音视频分轨传输,音频单独下载就靠这个机制
- 如何下载 Bilibili 视频到本地 — B 站的 DASH 音频轨也能单独下载
- FlowPick 是怎么在浏览器里把切片合成 MP4 的 — HLS 音频流的分片合并,走的是同一套流水线
- 如何批量下载网页上的所有图片 — 图片和音频都能批量抓,看完这篇触类旁通