Skip to content

zgm2003/spider_media

Repository files navigation

媒体嗅探下载器

一个基于 Chrome / Edge Manifest V3 的浏览器扩展,用来捕获“当前标签页里真实加载过”的媒体资源,并提供分类查看、下载、流媒体分析和页面内悬浮面板。

它更像“当前页媒体助手”,不是全站爬虫。

这个项目能做什么

  • 嗅探当前页面里实际请求过的音频、视频、图片和部分其他可下载资源。
  • 在弹窗里按 视频 / 图片 / 音频 / 其他 分类展示结果。
  • 对普通直链资源直接下载。
  • blob: 资源走页面内抓取,再转成可下载内容。
  • 识别 m3u8mpdtsm4s 这类流媒体相关资源。
  • 分析 HLS / DASH 索引文件,给出索引类型、分片/变体数量、是否加密、直播/点播等信息。
  • 自动生成适合 PowerShell 使用的 ffmpeg 命令,方便把流媒体索引交给 ffmpeg 拉流。
  • 支持把资源列表固定成页面右上角的悬浮面板,边浏览边下载。
  • 支持按类别开关捕获,并为当前标签页显示资源数量徽标。

功能是怎么实现的

这个扩展不是靠单一手段抓资源,而是把几条链路叠在一起做:

1. 网络监听

background.js 里通过 chrome.webRequest 监听当前标签页的请求完成事件:

  • 读取 URL、Content-TypeContent-Length
  • 尝试记录 Referer
  • 按标签页维护资源列表
  • 自动判断资源分类和下载模式

这条链路适合抓“浏览器真实发出去并成功返回”的资源,是最稳定的一层。

2. 页面主世界桥接

有些站点的资源不会完整暴露给扩展隔离环境,所以 page-bridge.js 会直接注入页面主世界,补抓这些线索:

  • 劫持 fetch
  • 劫持 XMLHttpRequest
  • 劫持 HTMLMediaElement.src
  • 劫持 HTMLSourceElement.src
  • 劫持 Audio() 构造
  • 劫持 URL.createObjectURL()

这样可以捕获页面脚本自己发起的请求、运行时设置的媒体地址,以及 blob: 资源来源。

3. DOM 扫描和动态观察

content.js 会扫描页面已有元素,并持续监听后续变化:

  • 扫描 audiovideoimgsourcea[href]
  • MutationObserver 监控异步插入和属性变更
  • 把新增媒体线索继续上报给后台

这条链路主要补“已经挂到 DOM 上,但不一定走标准媒体请求识别”的资源。

4. 下载策略

扩展不会对所有资源都用同一种下载方式,而是按类型分流:

  • 普通小文件:优先抓成 Data URL 再下载
  • 大文件:直接走浏览器下载
  • blob: 资源:回到页面上下文里 fetch 后再下载
  • m3u8 / mpd:允许下载索引文件本身,但会提示更推荐分析或复制 ffmpeg 命令
  • ts / m4s:识别为流媒体分片,只下载单个切片

这样做的原因是:不同资源的可访问性不同,尤其是 blob:、跨上下文请求和流媒体索引,不能用一种方式硬套。

5. 流媒体分析

后台会把 m3u8mpd 文本抓回来做轻量解析:

  • HLS:识别主索引 / 媒体列表、变体数量、分片数量、目标分片时长、分辨率、码率、是否加密、直播/点播
  • DASH:识别表示层数量、AdaptationSet 数量、SegmentTemplate、时间线、时长、是否加密、直播/点播

分析结果会缓存一段时间,并结合 RefererOriginUser-Agent 生成一条可直接执行的 ffmpeg 命令。

核心能力边界

这个项目能做:

  • 抓当前标签页已经加载过的媒体资源
  • 帮你定位真实媒体地址
  • 帮你分析流媒体索引
  • 帮你生成后续命令

这个项目不能做:

  • 不是全站爬虫
  • 不是 DRM 绕过工具
  • 不能自动破解鉴权
  • 不能去水印
  • 目前不会自动把 HLS / DASH 合并成最终视频文件

如果目标站点强依赖登录态、页面环境、签名参数或播放器运行时上下文,离开原页面后仍然可能下载失败。

识别的资源范围

当前规则主要覆盖常见媒体后缀和响应类型,例如:

  • 音频:mp3wavflacm4aoggaacwmaopus
  • 视频/流媒体:mp4webmmkvmovavim3u8tsm4smpd
  • 图片:jpgjpegpnggifwebpbmpsvgavif
  • 其他:当前额外对部分站点放开 ziprar

主要文件

  • manifest.json:扩展清单和权限配置
  • shared.js:公共规则、媒体识别、下载模式判断、消息常量
  • background.js:后台状态管理、网络监听、下载执行、流媒体分析
  • page-bridge.js:页面主世界桥接,补抓 fetch/XHR/blob 线索
  • content.js:DOM 扫描、页面悬浮面板、页面内抓取兜底
  • popup.html
  • popup.js:弹窗界面、分类展示、下载、分析和设置

安装方式

  1. 打开 Chrome 或 Edge 扩展管理页。
  2. 开启“开发者模式”。
  3. 选择“加载已解压的扩展程序”。
  4. 选择当前项目目录。

使用方式

  1. 打开目标页面并让媒体真实加载出来。
  2. 点击浏览器工具栏里的扩展图标。
  3. 在弹窗里按分类查看资源。
  4. 普通资源直接点“下载”。
  5. 遇到 m3u8mpd 时,优先点“分析”或“复制 ffmpeg”。
  6. 如果想边浏览边看结果,可以点“固定到页面”。

适合的场景

  • 找页面里真实播放的音频或视频地址
  • 抓图片、封面、播放器加载的媒体文件
  • 调试站点媒体请求流程
  • 快速拿到 m3u8 / mpd 后交给 ffmpeg

法律与使用边界

请只对你有权访问、下载和使用的资源使用本工具,并自行遵守目标网站服务条款、版权要求和相关法律法规。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors