很多网页游戏里的配乐其实挺有味道,可惜官方往往不提供下载渠道。想收藏这些音乐,其实用不着录屏或用麦克风录音,现在主流浏览器自带开发者工具就能直接提取。整个过程并不复杂,关键是找到音频文件藏身的地方。
先说原理。网页游戏的音乐要么作为独立文件加载到浏览器缓存里,要么在游戏运行时通过脚本动态请求。前者好办,打开开发者工具就能找到;后者稍微麻烦点,得让游戏播放完一遍音乐再去翻网络请求记录。不管哪种情况,浏览器背后都在默默做着一件事——把音频数据从服务器拉到本地。
操作上,先从最简单的情况入手。打开游戏页面,按F12键调出开发者工具,这一步在Chrome、Edge、Firefox里都通用。切到“网络”这一栏,记得勾选“保留日志”选项,不然页面刷新后之前的记录会被清空。然后把页面刷新一遍,让游戏重新加载所有资源。在类型筛选条件里点一下“媒体”或者“音频”,这时能看到列表里出现后缀为mp3、ogg、wav之类的文件,那些就是游戏的背景音乐和音效。选中相应的条目,右键选择“在新标签页中打开”或者直接复制URL地址,就能拿到音频文件的直链,顺手保存下来就行。
但现实里经常碰到的情况是,游戏音乐不在初始加载的列表里。比如需要等到玩家进入某个关卡或者触发某个剧情时才播放的BGM,这时就要用点技巧。先把开发者工具开着,别急,正常玩游戏,等到你听到想要的那首曲子时,立即切回开发者工具窗口,在网络请求列表里找最近生成的音频请求。为了防止刷屏不好找,可以在筛选框里输入“media”或者音频文件的扩展名,把其他垃圾请求过滤掉。很多网页游戏会把音频文件放CDN上,域名会跟游戏主站不一样,看到陌生域名的音频请求也要多留意。
遇到那种把音乐加密或者混淆存储的情况,就得动用资源嗅探的方法了。网上有些专门抓取网页媒体资源的小工具,原理跟开发者工具类似,但对动态流媒体的识别更细。安装好浏览器插件后重新加载游戏页面,它会自动扫描页面发出的所有请求,分门别类列出视频和音频。这种方式的优势在于能捕获那些临时生成的音频数据流,即使服务端没有暴露完整的静态文件地址也能拿到内容。

再难啃的骨头是用Web Audio API合成的音乐。这种游戏不走寻常路,没有预置音频文件,而是在代码层面用振荡器实时生成旋律。这类情况提取出来的就是一串数字化的音频缓冲区,得借助专业工具导出才能转成mp3。不过说真的,这种网页游戏少之又少,基本是用来做小游戏的炫技,遇到概率极低。
我自己试过最头疼的情况是某个历史题材的页游,音乐文件做了分片处理,一首曲子被拆成十几个片段轮流加载。这时候不能只抓一个URL,得把所有片段都下载下来,然后用音频编辑软件接起来还原成整首曲子。好在现在带宽足够,游戏公司普遍直接塞完整文件,这种分片玩法已经不太流行了。
还有种偷懒的办法,打开浏览器的开发者工具后,在控制台里执行一句简单的JavaScript,直接把页面Performance资源列表里的所有资源地址导出来,再按格式筛选。对不爱点鼠标的朋友来说,这招效率高很多。具体代码不长,网上搜一下就能找到现成的功能脚本。
最后提个醒,提取网页游戏音乐自己听听没问题,如果是在油管或者B站做视频当背景音乐,尽量别用没授权的素材。很多游戏的音乐版权在发行方手里,这跟能不能被提取完全是两码事。收藏在硬盘里还可以,公开传播就得掂量掂量。
顺带说,现在很多游戏用WebAssembly技术打包逻辑,但音频资源仍然是走常规网络请求,技术再怎么变,开发者工具看网络记录这一招始终有效。掌握了这些操作,以后再遇到喜欢的网页游戏音乐,花几分钟就能扒下来,比在公屏求资源靠谱多了。