Watermark Remover Suite

通用低风险去水印、站点专用处理(含 ZSXQ & 自动学习站点规则);高风险按钮支持两级策略:第一次点击使用“智能识别水印图片+全屏遮罩”有限清理并自动学习规则,若仍未去除,第二次点击则启用全量暴力清理。支持配置持久化与高优先级 CSS 直杀水印。

这些是此脚本变更过代码的版本。 显示所有版本。

  • v1.7 2025-11-27

    版本更新日志

    v1.7(当前版本)

    • 新增:高风险去除按钮“两级策略”
      • 第一次点击:启用「智能模式」,只针对“疑似水印”的元素进行有限清理:
      • 结合布局特征(全屏固定定位、高 z-index、pointer-events:none 等)筛选疑似水印层;
      • 对这些元素的背景图片做简单图像特征分析(透明度占比、亮度分布、对比度等),只对“水印评分”较高的图片进行处理;
      • 在此基础上,自动学习并生成站点专用 CSS 规则,写入本地存储。
      • 第二次及之后点击:启用「纯暴力模式」,恢复为对全页面所有元素背景/蒙层的无差别强力清理。
    • 新增:图像内容特征识别(轻量级 CV):
      • 对疑似水印背景图进行降采样与像素统计,综合透明像素比例、亮/暗区域比例、灰度均值和对比度等指标,计算“水印评分”;
      • 默认只对布局上符合“全屏覆盖水印”的少量候选图片分析,降低性能开销与误伤率。
    • 优化:智能模式下的清理更“克制”:
      • 尽量只清理被识别为水印的背景图与遮罩层,减少对正常背景图的影响;
      • 若智能模式效果不足,用户再次点击即可切换为完全暴力清理。

    v1.6

    • 新增:站点级“自动识别 + 持久黑名单”机制
      • 在执行高风险清理时,检测出具有以下特征的元素:
      • position: fixed/absolute 且覆盖整个视窗(top/left/right/bottom 近似 0);
      • z-index 很高(>1000);
      • pointer-events: none,自身带有背景图;
      • 认定为“全屏水印覆盖层”的候选元素后,从中提炼出稳定的 CSS 选择器(优先使用 class/id),自动生成站点专用规则:
      • html body .__wm + 若干 background* / mask* 属性强制 none !important
      • 将规则按域名保存到持久存储(GM_getValue / localStorage),形成黑名单。
    • 新增:站点级高优先级 CSS 注入
      • 脚本在 document-start 阶段读取当前域名已保存的规则,一次性注入对应 CSS;
      • 对于已经“学会”的站点(例如 human.amac.org.cn 的 div.__wm 水印层),不再依赖 MutationObserver 和暴力遍历,一上来就用更高优先级 CSS 直接压制水印。
    • 保留并整合:
      • 按钮位置记忆、通用低风险逻辑、Zsxq 专用处理、还原行为日志等功能,与站点规则学习机制兼容共存。

    v1.5

    • 新增:持续“自愈”水印元素检测与强杀机制
      • 使用 WeakMap 记录每个元素在高风险清理中被处理的次数;
      • 同一元素被处理次数超过阈值(默认 5)时,认为其为“顽固水印源头”,执行强制隐藏/移除:
      • 添加标记类 wm-remover-hard-kill
      • 对该元素强制 display:none / visibility:hidden / opacity:0,并移除背景/蒙层;
      • 尝试从 DOM 中移除该节点;
      • 配套注入 .wm-remover-hard-kill 的 CSS 兜底,防止站点脚本再利用该节点。
    • 针对 human.amac.org.cn 等站点:
      • 在站点专用逻辑中增加对 wm-remover-hard-kill 类的强力隐藏规则,进一步防止闪回。
    • 其他:
      • 继续保留高风险清理锁(isHighRiskSweeping),避免 MutationObserver 与高风险逻辑互相触发导致递归。

    v1.4

    • 新增:“水印还原行为”检测日志系统(只监控,不拦截):
      • MutationObserver 进行封装:
      • 记录页面创建的所有 MutationObserver 实例;
      • 当其回调涉及包含 watermark 相关特征的节点时,在控制台输出详细日志(变更类型、目标节点简要描述等);
      • 打补丁 Element.prototype.setAttribute
      • 当设置的属性名或值中包含 watermark 字样时,打印“疑似还原水印”的日志,附带节点信息;
      • 单独启动只读 MutationObserver,专门监控可能与水印相关的 DOM 变更(新增带 watermark 类/属性的节点、相关样式变化等);
      • 引入“交互关联”逻辑:
      • 监听 click/keydown/scroll/resize 等交互事件,在交互后的短时间窗口内,一旦出现疑似“水印恢复”变更,输出带交互上下文的日志。
    • 目的:帮助定位哪些脚本、哪些 DOM 变更在持续“复原”水印,为后续定点优化提供线索。

    v1.3

    • 修复:高风险模式与 MutationObserver 之间的递归/互相触发问题
      • 引入全局锁 isHighRiskSweeping
      • 高风险清理开始时置为 true,结束后重置;
      • 所有 MutationObserver 的回调在检测到锁为 true 时直接退出,避免高风险写样式引发 DOM 变更,再次触发高风险逻辑的连锁反应。
      • 简化高风险循环逻辑:
      • 周期清理以固定间隔遍历页面,不再根据 DOM 变更递归触发;
      • 减少调用栈深度,避免 Maximum call stack size exceeded 错误。
    • 优化:
      • 对 Zsxq 等站点专用逻辑也增加锁判断,保证专用 MutationObserver 与高风险逻辑之间不会互相干扰。

    v1.2

    • 增强:高风险通用逻辑升级
      • 原有的 ZSXQ 专用高风险 CSS 与 DOM 清理逻辑抽象为通用版本,并解除域名限制,以覆盖更多站点;
      • 扩展 MutationObserver 能力:
      • 除监控 style 外,也监听 class / data-* / data-testid 等属性变化;
      • 对新增/变更元素进行“疑似水印”判定(基于属性和类名中的 watermark 字样),并使用 !important 强行清除背景/蒙层。
    • 新增:全局高风险循环清理
      • 在用户点击高风险按钮后,启动定时任务周期性执行高风险清理,专门针对具有自愈逻辑的水印;
      • 结合 MutationObserver,使“闪一下又出现”的情况显著减少。
    • 结构调整:
      • 通用逻辑与站点专用逻辑(如 ZSXQ)模块化拆分,更便于后续扩展。

    v1.1

    • 初版功能整理(相较最原始草稿):
      • 通用低风险去水印:
      • 遍历页面元素,清理以 data:image 形式嵌入的背景水印;
      • 针对常见的 nullbackground 等特殊写法做修正;
      • Zsxq 专用处理:
      • 注入针对 Zsxq 的高优先级 CSS,清除其特定的 watermark 属性/类;
      • 专用 MutationObserver 监听其内部 DOM 变更,保持去水印效果。
      • 高风险手动清理按钮(Watermark Remover Suite 的核心入口):
      • 在页面左侧注入一个悬浮按钮,点击可执行全页面高风险清理(遍历所有元素并移除相关背景/蒙层);
      • 按钮支持拖动贴边与位置记忆(存储在 GM/localStorage 中),下次访问保持位置;
      • 按钮样式美化(渐变背景、阴影、hover 展开效果等)。
  • v1.1 2025-10-09
  • v1.1 2025-10-09