网页元素屏蔽器
网页元素屏蔽器 (Pro Blocker)
Tampermonkey 用户脚本 · 版本 0.1.2
集成原生 CSS 极速注入、Shadow DOM 隔离、DOM 结构拦截、广告域封杀、正则文本拦截、动态资源域实时拦截、路径模式拦截与规则导入导出。支持积木组合模式、元素层级缩放选择与全局域名黑名单,彻底解决广告刷新复活。
目录
安装方法
安装 Tampermonkey 浏览器扩展:
点击 Tampermonkey 图标 → 创建新脚本
将
网页元素屏蔽器.js的全部内容粘贴到编辑器,按Ctrl+S保存脚本在
*://*/*所有页面自动运行,无需额外配置
使用方法
通过 Tampermonkey 扩展菜单调用以下功能:
| 菜单命令 | 功能 |
|---|---|
| 🖱 手动选择屏蔽元素 | 鼠标点击页面元素进行拦截配置 |
| 📝 添加文本/正则/积木/属性/路径规则 | 自定义规则配置面板 |
| ⚙️ 管理规则与防御策略 | 查看、删除规则,切换防御模式 |
| 📤 导出规则(跨设备迁移) | 导出 JSON,复制或下载 |
| 📥 导入规则 | 合并/覆盖导入 JSON 规则 |
1. 手动选择屏蔽元素
点击菜单后,鼠标变为十字准星,悬停高亮元素。点击目标广告后弹出配置面板:
拦截策略
| 策略 | 原理 | 适用场景 |
|---|---|---|
| 静态路径拦截 | CSS 选择器(标签/类名/ID) | 固定不变的横幅广告 |
| 动态类名拦截 | 基于元素的 CSS 类名 | 类名可预测的广告 |
| 物理结构拦截 | DOM 位置 nth-of-type |
类名/ID 随机化的动态再生广告 |
| 彻底封杀广告域名 | 全局域名黑名单(跨站点) | 同一广告源的多个广告,一劳永逸 |
面板操作
| 按钮 | 功能 |
|---|---|
| ⬆ 放大 | 向父级扩展选择范围 |
| ⬇ 缩小 | 返回上一层级 |
| ↺ 重置 | 回到最初选中的元素 |
| 🎯 自动最外层 | 智能找到广告最外层容器 |
| 🔍 预览效果 | 临时隐藏目标,预览拦截效果 |
| 取消配置 | 关闭面板,不执行操作 |
面板信息区
- 当前层级深度
- 常规语义路径(CSS 选择器)
- 物理结构路径(DOM 位置选择器)
- 发现的第三方资源域名
2. 添加拦截规则
支持 5 种匹配模式:
| 模式 | 说明 |
|---|---|
| 基础文本模式 | 输入关键词,包含该词的文本节点所在元素被隐藏 |
| 积木组合模式 ✨ | 免代码,多条件逻辑运算 (AND/OR) 精准匹配 |
| 正则表达式模式 | 适合高级用户,编写正则匹配文本 |
| 属性选择器模式 | CSS 属性选择器,如 [src*="ad"] 或 [id^="banner"] |
| 路径模式 | 拦截广告跳转链接,匹配路径片段如 /flink/url.php |
向上隐藏层级:0 = 仅隐藏自身,1 = 隐藏直接父级,依此类推(最大 10)。
3. 积木组合模式
无需编写代码即可配置复杂多条件拦截规则。
逻辑网关
| 逻辑 | 含义 |
|---|---|
| AND | 满足【全部】条件才拦截 |
| OR | 满足【任意】条件即拦截 |
条件配置
| 条件类型 | 操作符 | 说明 |
|---|---|---|
| 元素文本 | 包含 / 等于 / 不包含 | 匹配元素的文本内容 |
| 类名 (Class) | 包含 / 等于 / 不包含 | 匹配元素的 CSS 类名 |
| 标识符 (ID) | 包含 / 等于 / 不包含 | 匹配元素的 ID 属性 |
示例
拦截同时包含"赞助商"文本和
sponsored类名的元素
- 逻辑网关:AND
- 条件 1:
元素文本包含赞助商 - 条件 2:
类名包含sponsored
4. 管理规则与防御策略
面板显示:
- 当前防御策略:智能自动 / 强制极速预判
- 系统评估状态:是否检测到广告闪现
- 全局域名黑名单:已封杀的域名数量
- 规则列表:按类型分类,支持单条删除
防御策略
| 策略 | 说明 |
|---|---|
| 智能自动(默认) | 系统根据运行状况自动调整 |
| 强制极速预判 | 检测到广告闪现后自动启用,最大化拦截速度 |
操作
- 删除单条规则:点击规则右侧的「删除」按钮
- 清除本站规则:清空当前域名下所有规则(不影响全局域名黑名单)
- 删除正则/积木规则后页面自动刷新以恢复被隐藏的元素
5. 导入导出规则
导出
- 📋 复制到剪贴板:一键复制所有规则的 JSON 文本
- 💾 下载为文件:保存为
.json文件,便于备份和迁移
导入
- 合并导入(推荐):与现有规则合并,自动去重
- 覆盖导入:清空现有所有规则后导入新规则
规则类型完整说明
| 规则类型 | 存储方式 | 拦截原理 |
|---|---|---|
static 静态路径 |
域名隔离 | CSS display:none,基于固定选择器 |
dynamic 动态类名 |
域名隔离 | CSS display:none,基于 CSS.escape(类名) |
attribute 属性选择器 |
域名隔离 | CSS display:none,基于属性选择器 |
structural 物理结构 |
域名隔离 | CSS display:none,基于 DOM 位置 |
regex 正则文本 |
域名隔离 | TreeWalker 遍历文本节点,正则匹配后 inline 隐藏 |
complex 积木组合 |
域名隔离 | 多条件筛选后 inline 隐藏,支持 AND/OR |
pathPattern 路径模式 |
域名隔离 | CSS 属性选择器 [href/src*="路径"] |
domainBlock 域名封杀 |
全局生效 | CSS 6 种属性选择器 + 动态扫描内联隐藏 |
注意:前 7 种规则按域名隔离,仅当前站点生效;
domainBlock全局生效,跨站点拦截。
域名封杀详解
域名封杀是全局生效的最强拦截手段,通过多层机制确保广告无法复活:
1. CSS 极速注入(document-start)
自动生成 6 种属性选择器规则,页面渲染前即隐藏所有包含该域名的元素:
[src*="域名"] { display: none !important; }
[href*="域名"] { display: none !important; }
[data-src*="域名"] { display: none !important; } /* 懒加载图片 */
[data-original*="域名"] { display: none !important; } /* 延迟加载 */
[poster*="域名"] { display: none !important; } /* 视频封面 */
[srcset*="域名"] { display: none !important; } /* 响应式图片 */
2. 动态扫描拦截
通过 MutationObserver 实时监控 DOM 变化,新增节点命中域名后立即隐藏整个广告容器。
3. 全页即时清理
封杀域名时立即扫描当前页面所有匹配元素并隐藏。
4. 自动路径模式提取
封杀域名时自动从广告链接中提取路径模式(如 /flink/url.php),同时拦截通过该路径跳转的广告链接。
典型使用场景
场景一:固定位置横幅广告
元素具有明确的类名或固定的页面路径
- 点击 🖱 手动选择屏蔽元素
- 鼠标悬停并点击目标横幅
- 选择 静态路径拦截
场景二:动态再生广告
每次刷新 class/id 随机变化,常规拦截失效
- 点击 🖱 手动选择屏蔽元素,选中目标
- 无视常规路径,选择 🎯 按物理结构拦截
- 系统通过 DOM 树中的绝对相对位置进行持续屏蔽
场景三:来自同一广告平台的多个广告
同一域名的多个广告出现在不同位置
- 点击 🖱 手动选择屏蔽元素,选中任意一个广告
- 系统检测到第三方来源后高亮提示
- 点击 🔥 彻底封杀广告域名
- 一键封杀该域名,所有站点永久生效
场景四:文字链广告推广
推广内容混杂在正常文本列表中
- 点击 📝 添加文本/正则规则
- 匹配模式选择 基础文本模式
- 输入核心关键词
- 调整向上隐藏层级(如设为 1 或 2 隐藏整个卡片)
- 点击保存并应用
场景五:复杂条件广告
需要多个条件才能精确定位,避免误杀
- 点击 📝 添加积木组合规则
- 逻辑网关设为 AND
- 添加条件:
[类名] [包含] "ad-item" - 添加条件:
[元素文本] [包含] "赞助商" - 预览无误后保存
场景六:广告跳转链接
页面中夹杂的推广跳转链接
- 点击 📝 添加路径模式规则
- 输入路径片段如
/ad/link或/000/flink - 保存后,匹配该片段的所有链接与资源被拦截
注意事项
脚本需要
@run-at document-start权限以确保在广告渲染前注入 CSS。首次安装后可能需要刷新页面。域名封杀是全局生效的,请谨慎添加,避免误杀正常网站的资源域名。
如果拦截范围过大,可在规则管理中删除相应规则。正则和积木规则删除后页面自动刷新。
导出规则前建议先备份;导入时建议使用「合并导入」模式避免误覆盖。
脚本仅在顶层窗口(非 iframe 内)显示 UI 菜单和面板,但在 iframe 内仍会执行拦截逻辑。
检测到广告闪现后,系统自动标记该域名并切换为极速预判模式,最大化拦截速度。
技术架构
脚本由三个核心类组成:
StorageManager — 数据与配置管理
- 8 种规则类型的 CRUD 操作
- 域名隔离存储(前 7 种按域名,domainBlock 全局)
- 规则导入/导出(JSON 格式,含元数据)
- 防御模式切换(auto ↔ preemptive)
- 闪现域名标记与自动升级
BlockEngine — 拦截引擎
- CSS 极速注入 (
fastInject):document-start 时注入,零延时 - 动态节点扫描 (
scanAndBlockDynamic):MutationObserver 实时监控 - 正则文本匹配 (
applyRegexRules):TreeWalker 遍历 + 正则编译缓存 - 积木组合匹配 (
applyComplexRules):多条件 AND/OR 逻辑筛选 - 选择器生成:最优语义路径 (
generateOptimalSelector) + 物理结构路径 (generateStructuralSelector) - 资源域名提取 (
extractResourceDomains):含 srcset、backgroundImage 解析 - 容器智能查找 (
findSingleChildWrapper/findOutermostAdContainer)
UIManager — 用户界面
- Shadow DOM 隔离:面板样式不受页面影响,也不影响页面
- 元素选择交互:鼠标悬停高亮 + 点击选中
- 层级缩放选择:放大/缩小/重置/自动最外层
- 规则配置面板:5 种匹配模式的完整配置 UI
- 规则管理面板:规则列表、单条删除、模式切换
- 导入/导出面板:JSON 编辑、复制、下载
- 可拖拽面板:按住标题栏自由拖动
许可证
MIT License · 作者:EFate