网页元素屏蔽器

Created 18 hours ago
Updated 12 hours ago
集成原生CSS极速注入、Shadow DOM隔离、DOM结构拦截、广告域封杀、正则文本拦截、动态资源域实时拦截、路径模式拦截与规则导入导出。支持积木组合模式、元素层级缩放选择与全局域名黑名单,彻底解决广告刷新复活。
#广告过滤
#可视化选择器
#元素屏蔽
#规则管理
Statistics
Total Installs
52
Last 24h
+52
User Rating
-
Web element blocker with CSS hiding, domain blocking, regex

网页元素屏蔽器 (Pro Blocker)

Tampermonkey 用户脚本 · 版本 0.1.2

集成原生 CSS 极速注入、Shadow DOM 隔离、DOM 结构拦截、广告域封杀、正则文本拦截、动态资源域实时拦截、路径模式拦截与规则导入导出。支持积木组合模式、元素层级缩放选择与全局域名黑名单,彻底解决广告刷新复活。


目录


安装方法

  1. 安装 Tampermonkey 浏览器扩展:

  2. 点击 Tampermonkey 图标 → 创建新脚本

  3. 网页元素屏蔽器.js 的全部内容粘贴到编辑器,按 Ctrl+S 保存

  4. 脚本在 *://*/* 所有页面自动运行,无需额外配置


使用方法

通过 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),同时拦截通过该路径跳转的广告链接。


典型使用场景

场景一:固定位置横幅广告

元素具有明确的类名或固定的页面路径

  1. 点击 🖱 手动选择屏蔽元素
  2. 鼠标悬停并点击目标横幅
  3. 选择 静态路径拦截

场景二:动态再生广告

每次刷新 class/id 随机变化,常规拦截失效

  1. 点击 🖱 手动选择屏蔽元素,选中目标
  2. 无视常规路径,选择 🎯 按物理结构拦截
  3. 系统通过 DOM 树中的绝对相对位置进行持续屏蔽

场景三:来自同一广告平台的多个广告

同一域名的多个广告出现在不同位置

  1. 点击 🖱 手动选择屏蔽元素,选中任意一个广告
  2. 系统检测到第三方来源后高亮提示
  3. 点击 🔥 彻底封杀广告域名
  4. 一键封杀该域名,所有站点永久生效

场景四:文字链广告推广

推广内容混杂在正常文本列表中

  1. 点击 📝 添加文本/正则规则
  2. 匹配模式选择 基础文本模式
  3. 输入核心关键词
  4. 调整向上隐藏层级(如设为 1 或 2 隐藏整个卡片)
  5. 点击保存并应用

场景五:复杂条件广告

需要多个条件才能精确定位,避免误杀

  1. 点击 📝 添加积木组合规则
  2. 逻辑网关设为 AND
  3. 添加条件:[类名] [包含] "ad-item"
  4. 添加条件:[元素文本] [包含] "赞助商"
  5. 预览无误后保存

场景六:广告跳转链接

页面中夹杂的推广跳转链接

  1. 点击 📝 添加路径模式规则
  2. 输入路径片段如 /ad/link/000/flink
  3. 保存后,匹配该片段的所有链接与资源被拦截

注意事项

  1. 脚本需要 @run-at document-start 权限以确保在广告渲染前注入 CSS。首次安装后可能需要刷新页面。

  2. 域名封杀是全局生效的,请谨慎添加,避免误杀正常网站的资源域名。

  3. 如果拦截范围过大,可在规则管理中删除相应规则。正则和积木规则删除后页面自动刷新。

  4. 导出规则前建议先备份;导入时建议使用「合并导入」模式避免误覆盖。

  5. 脚本仅在顶层窗口(非 iframe 内)显示 UI 菜单和面板,但在 iframe 内仍会执行拦截逻辑。

  6. 检测到广告闪现后,系统自动标记该域名并切换为极速预判模式,最大化拦截速度。


技术架构

脚本由三个核心类组成:

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

Script Details
Applicable Sites
LicenseMIT
Permissions & access
Capabilities
Menu commandStorage