VideoDownloader 中文文档 下载 App

视频自动检测是怎么工作的 — 原理与局限

检测原理(大致推测)

InShot 没有公开技术白皮书,但从实际行为可以反推出大致逻辑:

浏览器加载完页面 DOM 之后,App 的检测模块会:

  1. 扫描 <video> 标签:HTML5 video 元素是最常见的视频嵌入方式,App 提取它的 src 属性或 <source> 子元素。
  2. 拦截网络请求:监听页面加载过程中发出的 HTTP 请求,识别 mp4、m3u8(HLS 流)、webm 等视频相关的 URL。
  3. 解析 Blob URL:有些网站用 blob: 协议动态生成视频地址,App 可能通过 WebView 内部接口把它反查成实际的 CDN 链接。
  4. iframe 穿透:视频放在 iframe 里的话,递归进入 iframe 内部继续扫描。

检测完成后,在页面上匹配的视频区域附近弹出一个悬浮下载按钮,点一下就能选画质。

哪些情况能检测到

大部分公开可访问的网页视频都能命中:

哪些情况检测不到

下面这些场景是手机下载器的通病,这款也不例外:

场景原因
需要 App 内播放的视频视频流没有暴露在网页 DOM 里,WebView 根本看不到
严格 DRM 保护的内容视频被加密,即使拿到 URL 也播不了
RTMP 等私有协议不走 HTTP,检测模块拦不到
需要多次跳转才能看到的视频有些网站在视频加载前会跑一段 JS 做防爬虫检测,WebView 执行后可能暴露也可能被拦截
非常短的临时链接部分网站的视频链接有几秒的有效期,检测还没扫完链接就失效了

命中率怎么提高

继续往下读