
HuanLinOTO/dsh-plugin-anti-ads
70最近提交 2026年8月15日
dsh-plugin-anti-ads DSH 插件
dsh-anti-ads 是一个拦截 dsh-ads 插件广告的 DSH 插件。它采用四层独立防御(L1-L4),通过设置覆盖、DOM 突变观察、请求拦截和事件广播来阻止广告。右下角显示盾牌徽章,记录拦截的弹窗数量,并提供设置入口。
如何安装 dsh-plugin-anti-ads DSH 插件
dsh plugin --profile web add @huanlin/dsh-plugin-anti-ads复制不会执行命令。安装 dsh-plugin-anti-ads DSH 插件前请核对仓库和版本。
dsh-plugin-anti-ads DSH 插件数据来源
dsh-plugin-anti-ads DSH 插件快照日期:2026年8月16日
discovered
dsh-plugin-anti-ads DSH 插件能做什么
- L1:通过 localStorage 覆盖 dsh-ads 设置,关闭所有广告位,并监听 persist-changed 事件持续压制。
- L2:使用 MutationObserver 检测并移除漏网弹窗,基于形状(position:fixed + z-index 区间或全屏遮罩层)识别。
- L3:拦截对 /dsh-ads/registry.json 的请求(含带 query 的变体),返回空列表,阻止动态广告源。
- L4:广播 dsh-ads:retired 事件,隐藏整个广告层直到刷新,作为独立于其他层的总开关。
- 持久化:拦截状态默认开启,跨刷新持续生效;可通过设置页或徽章面板切换,关闭时恢复 dsh-ads 默认设置。
dsh-plugin-anti-ads DSH 插件适合哪些场景
- 在 DSH Web UI 中屏蔽 dsh-ads 插件产生的所有弹窗、横幅和信息流广告。
- 防止社区插件通过 dsh-ads 注册表注入自动横幅。
- 清理因 dsh-ads 更新而绕过设置漏网的广告元素。
- 通过 L4 广播一键隐藏所有广告(包括尚未渲染的),无需逐一操作。
- 通过盾牌徽章直观查看已拦截的弹窗数量,并快速调整拦截设置。
dsh-plugin-anti-ads DSH 插件适合谁
- 已安装 dsh-ads 插件并希望移除其广告的 DSH Web UI 用户。
- 偏好无侵入、可配置的广告拦截器,且仅需在 DSH 生态内生效的用户。
dsh-plugin-anti-ads DSH 插件的限制
- 仅针对 dsh-ads 插件;若未安装 dsh-ads,本插件无任何效果。
- L1 在用户手动打开广告位后需等到下次刷新才重新生效;L2/L4 可处理大部分情况,但对话内信息流广告(无 DOM 特征)可能短暂可见。
- L4 的 retired 广播不可撤销;若已广播,广告层需刷新页面才能恢复。
- dsh-ads 更新可能导致协议或形状变化,削弱 L2/L3 效果,但 L1 和 L4 提供兜底。
dsh-plugin-anti-ads DSH 插件的仓库 README 摘录
以下文字摘自 dsh-plugin-anti-ads DSH 插件的上游仓库 HuanLinOTO/dsh-plugin-anti-ads 的 README,版权归原作者,仅作引用。
> 📌 本插件已收录于 [dshfind](https://dshfind.com/zh) 插件超市,点击上方徽章直达主页。 # dsh-anti-ads [](https://www.npmjs.com/package/@huanlin/dsh-plugin-anti-ads) 给 DSH Web UI 安装的广告拦截器——拦截对象只有 [dsh-ads](https://github.com/dsh-external/dsh-ads) 一个。右下角一枚小徽章,广告没了,徽章记着拦掉了几个弹层。 ## 它是怎么拦的 四层防御,独立工作、可单独开关: | 层 | 机制 | 关什么 | |----|------|--------| | L1 设置写穿 | 通过 dsh-ads 自身的存储契约(`localStorage['dsh-ads:settings']` + `dsh-ads:persist-changed` 事件)把所有广告位开关写成关闭,并监听 dsh-ads 的广播持续压制 | 两侧广告栏、对话内信息流、右下角弹窗、跑分、安全告警、贪玩蓝鲸海报 | | L2 兜底清理 | `MutationObserver` 监听页面变化,按形状(`position:fixed` + dsh-ads 的 z-index 区间,或全屏穿透遮罩层)识别并移除漏网弹层 | dsh-ads 未来版本绕过设置新增的广告位、改版后的根浮层 | | L3 屏蔽动态广告源 | 对 `/dsh-ads/registry.json` 的请求(含带 query 的变体)直接返回空列表 | 社区插件的自动横幅 | | L4 深层拦截 | 广播 dsh-ads 自身的 `dsh-ads:retired` 事件——它的「关闭所有广告」是模块级一次性开关,广告层在渲染前就检查这个标志,广播后整层隐藏到刷新 | 无视自身设置开关、任何新加广告位的 dsh-ads 版本 | 四层都不依赖对方:L1 失效时 L2/L3/L4 还在;关掉 L4,L1/L2/L3 照常跑。 **持久化**:拦截状态默认开启,跨刷新持续生效。「启用拦截」开关在设置页和徽章面板里;关掉它等于「恢复广告」——会同时把 dsh-ads 的设置恢复为默认。注意:L4 广播的「本次关闭」是 dsh-ads 刻意做成不可撤销的,若已广播过,广告层要刷新页面才会回来。 **一个已知边界**:dsh-ads 的持久化层有内存镜像,用户若在 dsh-ads 自己的设置页手动打开过某个广告位,L1 要到下次刷新才重新生效;期间由 L2 兜底清理浮层,L4 的广播也能把整个层压下
阅读完整 README仓库许可: NOASSERTION
dsh-plugin-anti-ads DSH 插件常见问题
安装 dsh-anti-ads 后盾牌徽章没有出现,怎么办?
盾牌徽章只有在同时安装并启用 dsh-ads 插件时才会显示。dsh-anti-ads 专门用于拦截 dsh-ads 的广告,如果没有 dsh-ads,本插件不会生效,徽章也不会出现。请先通过 dsh 插件命令安装 dsh-ads,然后刷新页面。
如何临时关闭广告拦截而不卸载插件?
您可以通过设置页面(设置对话框)或点击盾牌徽章上的面板开关来关闭拦截。关闭主开关会恢复 dsh-ads 的默认广告设置,并停止所有四层防御。注意:L4 的 retired 广播不可撤销;如果在广播后关闭拦截,可能需要刷新页面才能看到广告。
dsh-anti-ads 会拦截其他插件或外部网站的广告吗?
不会。dsh-anti-ads 仅针对 dsh-ads 插件的广告进行拦截,不影响其他 DSH 插件、外部广告或网站内容。它的作用范围仅限于 dsh-ads 生态系统,包括其注册表请求和 DOM 元素。
如果 dsh-ads 更新改变了内部结构,会发生什么?
插件使用四层独立防御。如果 dsh-ads 更改了设置键或事件名,L1 可能失效,但 L2(MutationObserver)和 L3(请求拦截)仍能捕获大部分新广告元素。L4(retired 广播)是一个宽泛的开关,可以隐藏整个广告层,不受结构变化影响。设计上具有弹性,极端情况下可能需要刷新页面来恢复全部功能。
我可以手动开启某个我想看的广告位吗?
如果您通过 dsh-ads 自己的设置手动打开了某个广告位,L1 需要等到下次刷新才能重新压制。但 L2 仍会清理出现的弹窗,L4 也可以隐藏整个层。对话内信息流广告(无 DOM 特征)可能短暂可见。建议使用 dsh-anti-ads 的主开关全局控制拦截,而不是单独开关广告位。