tutorials

如何嗅探并下载网页上的音频:播客、BGM、有声书一网打尽

用 FlowPick 嗅探检测网页音频资源的完整教程,涵盖 MP3/M4A 直链、HLS 音频流、播客批量下载和有声书抓取。
FlowPick 团队
10 分钟阅读
# 音频 # 播客 # mp3 # 嗅探 # 教程 # 有声书

某个网站的背景音乐听着很好,但根本没有下载按钮。播客平台想离线保存几集,官方 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.webaChrome 系浏览器
HLS 音频流.m3u8播客平台、课程网站
DASH 音频轨.mpdB 站纯音频、YouTube Music

一步步嗅探并下载音频

第一步:刷新页面或触发播放

关键点因音频类型而不同:

  • 页面 BGM / 自动播放音频:直接刷新页面,BGM 加载请求马上就被 FlowPick 捕获,不需要手动操作
  • 需要点击播放的播客/有声书:点击播放按钮,等播放开始(通常 2-3 秒),再打开 FlowPick
  • HLS 音频流:点播放之后,FlowPick 才会看到 M3U8 请求。不播放,就看不到流

第二步:打开 FlowPick 弹窗

点击浏览器工具栏的 FlowPick 图标,弹窗角标上的数字是当前页面检测到的所有媒体资源总数。

第三步:切换到音频标签

弹窗顶部有媒体类型标签,点击音频标签(🎵 图标)。你会看到检测到的所有音频资源列表,每条显示文件名、格式、文件大小(如果服务器返回了 Content-Length)。

如果文件大小显示为"未知"——这很正常,服务器没有在响应头里返回大小。不影响下载。

第四步:选择并下载

单个文件:点击右侧的下载图标直接下载。

批量下载:勾选多个条目 → 点击顶部的下载已选。FlowPick 按队列依次下载,弹窗里有进度显示。

对于 HLS 音频流,FlowPick 会自动下载所有分片并合并成完整的 M4A 或 MP3 文件,不需要手动处理。背后的合并流水线在 FlowPick 是怎么在浏览器里把切片合成 MP4 的 里有完整拆解,音频流走的是同一套。

具体场景操作

播客批量保存

播客平台的常见情况:首页列表加载时,每集的音频 URL 可能还没有请求——只有你点进单集页面或者点击播放,音频请求才会发出。

操作节奏:

  1. 打开播客节目页面
  2. 逐集点击播放(哪怕只播 2 秒)
  3. 不要关闭标签页,继续点击下一集播放
  4. 多集依次触发后,打开 FlowPick → 音频标签
  5. 全选 → 下载已选

这样能一次性排队下载所有已触发的集数,不需要一集一集等。

注意: 如果平台一次只加载 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 和会话信息只用于你的浏览器直接向目标服务器发请求——和你直接打开页面听音频是完全一样的网络路径。


推荐阅读