智能JavaScript拦截器 详细说明
📌 一、脚本概述
1.1 基本功能
智能JavaScript拦截器是一个Tampermonkey/Greasemonkey用户脚本,主要功能包括:
· ✅ 按域名选择性拦截JavaScript:只在白名单域名中启用拦截功能
· ✅ 按类型拦截脚本:根据广告、分析追踪、社交媒体等类别拦截JS脚本
· ✅ 智能空白区域清理:自动清理网页中的空白/无用区域,优化浏览体验
· ✅ 灵活的规则配置:支持自定义拦截规则和空白区域清理设置
1.2 版本信息
· 当前版本:5.4
· 运行时机:document-start(页面加载前)
· 作者:Your Name
· 授权:GM_* API权限
🌐 二、域名管理
2.1 工作原理
· 脚本默认不拦截任何域名的JavaScript
· 只有添加到白名单的域名才会启用拦截功能
· 支持三种域名格式:
· 精确域名:example.com
· 通配符:.example.com(匹配所有子域名)
· 正则表达式:/..example.com/(更灵活的匹配)
2.2 管理方式
通过Tampermonkey菜单操作:
· 🌐 为此域名开启拦截: [当前域名] - 将当前域名加入白名单
· 🌐 为此域名关闭拦截: [当前域名] - 从白名单移除当前域名
· 📋 状态与白名单管理 - 查看状态和管理白名单
⚙️ 三、拦截规则配置
3.1 默认拦截规则
脚本包含5个预定义规则:
规则ID 规则名称 默认状态 关键词示例
ads 广告脚本 ✅ 启用 ads, doubleclick, googleads
video 视频播放器 ❌ 禁用 youtube, videojs, player
social 社交媒体 ❌ 禁用 facebook, twitter, instagram
analytics 分析和追踪 ✅ 启用 analytics, tracking, ga.js
blank_areas 空白区域清理 ✅ 启用 自定义清理算法
3.2 规则管理
通过菜单 ⚙️ 拦截规则设置 管理:
- 切换规则状态:输入编号启用/禁用规则
- 添加自定义规则:可创建新的拦截规则
- 管理自定义规则:编辑、删除自定义规则
- 重置规则:恢复默认设置
🧹 四、空白区域清理功能
4.1 三种清理模式
- 激进模式:
· 最小高度:10px
· 最小宽度:50px
· 清理所有可能的多余元素 - 适中模式(推荐):
· 最小高度:30px
· 最小宽度:100px
· 平衡清理效果和页面完整性 - 保守模式:
· 最小高度:50px
· 最小宽度:200px
· 只清理明显的空白区域
4.2 详细设置选项
· 最小高度/宽度:设置清理阈值
· 清理空元素:清理内容为空的元素
· 清理隐藏元素:清理display:none或visibility:hidden的元素
· 清理空白文本元素:清理只有空白字符的元素
· 清理固定高度元素:清理有固定高度的广告占位符
4.3 保留区域
默认保留以下类别的元素:
· 主要内容区域(.main-content, .content, .article)
· 视频播放器(.video-player, .player)
· 导航元素(.header, .footer, .navigation)
· 侧边栏和评论区域
🛡️ 五、拦截机制
5.1 多层拦截策略
脚本使用多种技术确保全面拦截:
拦截方式 描述 优点
MutationObserver 监听DOM变化,拦截新增脚本 实时拦截动态加载的脚本
DOMContentLoaded 页面加载完成后清理现有脚本 清理初始页面中的脚本
document.write重写 拦截通过document.write插入的脚本 防止脚本绕过常规加载
innerHTML重写 拦截通过innerHTML插入的脚本 拦截通过AJAX等方式添加的脚本
createElement重写 拦截动态创建的script元素 拦截脚本动态创建
5.2 拦截逻辑
- 检查脚本的src属性和内容
- 与启用的规则关键词进行匹配
- 如果匹配到任意关键词,则阻止脚本执行
- 记录拦截日志(控制台输出)
📊 六、使用流程
6.1 首次使用步骤
- 安装脚本:通过Tampermonkey安装
- 添加域名:在需要拦截的网站点击"为此域名开启拦截"
- 配置规则:根据需要启用/禁用不同规则
- 调整空白区域:根据网站特点选择合适的清理模式
6.2 日常使用
· 临时禁用:通过菜单关闭当前域名的拦截
· 规则调整:根据网站需求调整规则设置
· 问题排查:如果网站功能异常,可临时禁用相应规则
⚠️ 七、注意事项
7.1 兼容性问题
· 视频网站:可能需要禁用"视频播放器"规则
· 社交媒体登录:可能需要禁用"社交媒体"规则
· 分析工具:如果网站依赖Google Analytics等,可能需要相应调整
7.2 性能影响
· 空白区域清理:在大型页面上可能有性能开销
· MutationObserver:持续监控DOM变化有轻微性能影响
· 建议:只在需要优化的网站上启用空白区域清理
7.3 调试和故障排除
- 查看控制台日志:脚本会输出拦截信息
- 临时禁用:通过菜单临时禁用拦截功能
- 规则调整:逐一禁用规则排查问题
- 清除缓存:规则更改后可能需要刷新页面
🔧 八、高级功能
8.1 自定义规则
支持创建自定义拦截规则:
· 规则名称:自定义规则显示名称
· 关键词:用逗号分隔的关键词列表
· 状态:启用/禁用
8.2 正则表达式支持
在白名单域名中支持正则表达式:
· 格式:/正则表达式/
· 示例:/.*.example.com/ 匹配所有example.com的子域名
8.3 持久化存储
使用GM_setValue/GM_getValue存储:
· 白名单域名列表
· 拦截规则配置
· 空白区域设置
📝 九、更新日志
版本 5.4 更新
- 增强空白区域清理:
· 添加三种清理模式
· 增加详细设置选项
· 优化清理算法 - 改进用户界面:
· 统一状态管理和白名单管理
· 优化菜单结构
· 添加中文提示 - 性能优化:
· 优化MutationObserver使用
· 添加防抖机制
· 减少重复清理操作
🆘 十、常见问题
Q1:为什么脚本在某些网站上不生效?
A:需要先将该域名添加到白名单中。
Q2:网站功能异常怎么办?
A:尝试以下步骤:
- 禁用当前域名的拦截功能
- 调整拦截规则设置
- 禁用空白区域清理功能
- 刷新页面重新加载
Q3:如何完全禁用脚本?
A:在Tampermonkey管理面板中禁用该脚本。
Q4:自定义规则不生效?
A:检查关键词是否正确,确保规则已启用。
📚 十一、技术细节
11.1 依赖的GM API
· GM_registerMenuCommand - 注册用户菜单
· GM_setValue/GM_getValue - 存储配置数据
· GM_addStyle - 添加CSS样式
11.2 核心算法
· 脚本匹配:简单的关键词包含匹配
· 空白区域检测:基于元素大小、内容、样式的综合判断
· 防抖机制:避免频繁触发清理操作
11.3 兼容性
· 支持所有现代浏览器
· 需要Tampermonkey或类似用户脚本管理器
· 不支持IE浏览器
提示:脚本设计为高度可配置,建议根据实际使用情况调整设置,以达到最佳效果。如有问题,请查看控制台日志或调整规则设置。