智能JavaScript拦截器

创建于 1 天前
更新于 1 天前
按域名和脚本类型选择性拦截JavaScript,包含空白区域清理
总安装量
24
今日新增
+12
用户评分
- / 5.0 (0)
当前版本
5.4
脚本详情
适用网站

智能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 规则管理

通过菜单 ⚙️ 拦截规则设置 管理:

  1. 切换规则状态:输入编号启用/禁用规则
  2. 添加自定义规则:可创建新的拦截规则
  3. 管理自定义规则:编辑、删除自定义规则
  4. 重置规则:恢复默认设置

🧹 四、空白区域清理功能

4.1 三种清理模式

  1. 激进模式:
    · 最小高度:10px
    · 最小宽度:50px
    · 清理所有可能的多余元素
  2. 适中模式(推荐):
    · 最小高度:30px
    · 最小宽度:100px
    · 平衡清理效果和页面完整性
  3. 保守模式:
    · 最小高度: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 拦截逻辑

  1. 检查脚本的src属性和内容
  2. 与启用的规则关键词进行匹配
  3. 如果匹配到任意关键词,则阻止脚本执行
  4. 记录拦截日志(控制台输出)

📊 六、使用流程

6.1 首次使用步骤

  1. 安装脚本:通过Tampermonkey安装
  2. 添加域名:在需要拦截的网站点击"为此域名开启拦截"
  3. 配置规则:根据需要启用/禁用不同规则
  4. 调整空白区域:根据网站特点选择合适的清理模式

6.2 日常使用

· 临时禁用:通过菜单关闭当前域名的拦截
· 规则调整:根据网站需求调整规则设置
· 问题排查:如果网站功能异常,可临时禁用相应规则

⚠️ 七、注意事项

7.1 兼容性问题

· 视频网站:可能需要禁用"视频播放器"规则
· 社交媒体登录:可能需要禁用"社交媒体"规则
· 分析工具:如果网站依赖Google Analytics等,可能需要相应调整

7.2 性能影响

· 空白区域清理:在大型页面上可能有性能开销
· MutationObserver:持续监控DOM变化有轻微性能影响
· 建议:只在需要优化的网站上启用空白区域清理

7.3 调试和故障排除

  1. 查看控制台日志:脚本会输出拦截信息
  2. 临时禁用:通过菜单临时禁用拦截功能
  3. 规则调整:逐一禁用规则排查问题
  4. 清除缓存:规则更改后可能需要刷新页面

🔧 八、高级功能

8.1 自定义规则

支持创建自定义拦截规则:

· 规则名称:自定义规则显示名称
· 关键词:用逗号分隔的关键词列表
· 状态:启用/禁用

8.2 正则表达式支持

在白名单域名中支持正则表达式:

· 格式:/正则表达式/
· 示例:/.*.example.com/ 匹配所有example.com的子域名

8.3 持久化存储

使用GM_setValue/GM_getValue存储:

· 白名单域名列表
· 拦截规则配置
· 空白区域设置

📝 九、更新日志

版本 5.4 更新

  1. 增强空白区域清理:
    · 添加三种清理模式
    · 增加详细设置选项
    · 优化清理算法
  2. 改进用户界面:
    · 统一状态管理和白名单管理
    · 优化菜单结构
    · 添加中文提示
  3. 性能优化:
    · 优化MutationObserver使用
    · 添加防抖机制
    · 减少重复清理操作

🆘 十、常见问题

Q1:为什么脚本在某些网站上不生效?

A:需要先将该域名添加到白名单中。

Q2:网站功能异常怎么办?

A:尝试以下步骤:

  1. 禁用当前域名的拦截功能
  2. 调整拦截规则设置
  3. 禁用空白区域清理功能
  4. 刷新页面重新加载

Q3:如何完全禁用脚本?

A:在Tampermonkey管理面板中禁用该脚本。

Q4:自定义规则不生效?

A:检查关键词是否正确,确保规则已启用。

📚 十一、技术细节

11.1 依赖的GM API

· GM_registerMenuCommand - 注册用户菜单
· GM_setValue/GM_getValue - 存储配置数据
· GM_addStyle - 添加CSS样式

11.2 核心算法

· 脚本匹配:简单的关键词包含匹配
· 空白区域检测:基于元素大小、内容、样式的综合判断
· 防抖机制:避免频繁触发清理操作

11.3 兼容性

· 支持所有现代浏览器
· 需要Tampermonkey或类似用户脚本管理器
· 不支持IE浏览器


提示:脚本设计为高度可配置,建议根据实际使用情况调整设置,以达到最佳效果。如有问题,请查看控制台日志或调整规则设置。