嗅探与打标机制
“嗅探”是发现资源,“打标”是在页面上做标记。两者都不改变页面行为,也都不触发下载。
两层工作
| 层 | 做什么 | 产出 |
|---|---|---|
| 嗅探 | 观察页面发出的请求与 DOM 里的链接,识别媒体与文件地址 | 弹窗面板里的资源列表 |
| 打标 | 在符合条件的链接旁插入一个绿色箭头 | 页面上的可点击标记 |
两层都只读:不改页面结构(除了插入那个按钮)、不改请求、不拦截响应。
打标的判定规则:只有两条
- URL 带可下载后缀:
.zip.rar.7z.exe.msi.dmg.apk.pdf.epub.mp4.mkv.mp3.flac.csv.xlsx.docx等常见可下载类型。 - 站点自己写了
download属性:<a href="…" download>,这是站点明确表态“这个链接点了是下载”。
两条之外一律不标
不按链接文字判断(写着“下载”两个字没用)、不按路径猜(
download.php、/dl/、?module=download 都不认)、不按站点适配。原因很实际:content script 只能看到 DOM,拿不到响应头,猜站点特征只会不断制造误标。为什么不做站点适配
按域名写规则,等于给每个站点维护一份“哪里是下载按钮”的知识。站点一改版就失效,而且极易误标——历史上一次误标事故就是满屏箭头。现在的规则宁可漏标,也不乱标:漏标还有右键菜单与网页工具兜底,乱标会让人不敢点页面。
| 链接形态 | 会不会标 | 替代做法 |
|---|---|---|
/files/report-2026.pdf | 会 | — |
/download?id=123(无后缀) | 不会 | 右键菜单,或用网页工具 |
| 写着“点击下载”的 JS 按钮 | 不会 | 先点一次让站点发起请求,再看面板 |
<a href="…" download> | 会 | — |
| 播放器里的 blob 地址 | 不会(不在 DOM 链接里) | blob / MSE 视频 |
嗅探到的资源为什么不都有箭头
面板里的资源来自网络请求与播放器内部,很多并没有对应的 DOM 链接——比如 HLS 的分片、blob 地址、XHR 拿到的 JSON 里的地址。没有链接可挂,自然不会有箭头。这类资源从面板投递。
性能与隐私
- 只在你打开的页面上工作,标签页关闭后该页记录随之清空
- 面板有「清空本页记录」,随时可清
- 媒体请求识别在本地完成,不发送到任何服务器
- 不记录你的浏览历史,也不做跨站点画像