【开发者自荐】PagePatch:按 URL 规则注入自定义 CSS 与 JavaScript

项目 信息
软件名称 PagePatch — Custom CSS & JS
应用平台 Google Chrome 135 或更高版本
推荐类型 【开发者自荐】
是否收费 免费,源代码公开
一句简介 按 URL 规则,为指定网页加载自定义 CSS 和 JavaScript。

为什么做 PagePatch

平时会用自定义 CSS 清理网页上的广告、浮层和不需要的模块,也会偶尔加一点 JavaScript 改善操作。

现有工具各有所长:
Stylus 是很成熟的用户样式管理器,但主要解决 CSS
Stylish 有方便的主题库,但同样以样式为主
Custom Style Script 同时支持 CSS 和 JavaScript,不过设置页偏工具化,规则多起来后不太容易整理。

我还遇到过一个比较具体的使用场景:有些广告很多的网页,关闭该站点的 JavaScript 后反而更适合阅读,但 Custom Style Script 的 CSS 代码和 CSS 链接也可能因此无法载入。它的 CSS 注入实际上依赖在页面的 JavaScript 主环境中执行一段函数;PagePatch 则把 CSS 与 JavaScript 分开处理,内联 CSS 直接通过 Chrome 的样式注入接口应用,CSS 不依赖网页自身的 JavaScript 是否开启。

于是我写了 PagePatch,希望它保持简单,同时把规则管理、权限范围和界面体验做得更清楚一些。

主要功能

  • 使用标准 Chrome Match Pattern 匹配网页,例如 https://example.com/**://*.example.com/*
  • 每条规则可以组合多个远程 CSS 链接、内联 CSS、远程 JavaScript 链接和内联 JavaScript。
  • CSS、JavaScript 链接均按列表顺序处理;单个远程 JavaScript 加载失败不会阻止后续脚本。
  • 每条规则可以单独启用或停用,也可以按规则名称、页面 URL 或资源 URL 搜索。
  • 支持 SPA 地址变化,不必完整刷新页面即可重新匹配规则。
  • JavaScript 可按规则选择 Chrome 隔离的 USER_SCRIPT 环境,或与网页共享状态的 MAIN 环境。
  • Options 页面支持 Command+S / Ctrl+S 快捷键保存。
  • 规则、语言和主题偏好保存在本地。

与几款常用工具的区别

工具 更适合的用途 JavaScript 权限与隐私
PagePatch 同一套规则中组合 CSS 与 JS、加载远程资源 支持,可选隔离环境或页面环境 商店声明不收集数据;仅为匹配页面和远程 JS 来源按需申请站点权限
Stylus 管理大量用户样式,使用成熟的样式编辑器和社区样式 不支持 商店声明不收集数据;由于需要在网页上应用样式,站点访问范围较广
Stylish* 从主题库中查找并安装现成主题 不支持 Chrome 商店目前披露会收集“网页浏览记录”,扩展介绍称可在设置中关闭自动数据收集
Custom Style Script 为网页快速添加 CSS 与 JS 支持 商店声明不收集数据;但默认申请 <all_urls>,并在所有页面及 iframe 运行内容脚本

*Stylish 还有一段广为流传的隐私争议。2018 年,安全研究者 Robert Heaton 披露 Stylish 会将用户访问的网址连同唯一标识符发送至服务器,随后 Chrome 和 Firefox 商店一度将其下架。这是历史事件,不代表当前版本仍以当时完全相同的方式工作;不过截至本文发布时,Chrome 商店的隐私信息仍明确列出了“网页浏览记录”,扩展介绍也写明自动数据收集可以在设置页关闭。对隐私敏感的用户需要自行权衡。

使用方法

  1. 从 Chrome 应用商店安装 PagePatch。
  2. 点击浏览器工具栏中的 PagePatch 图标,打开设置页。
  3. 点击左侧规则列表旁的 +,填写页面匹配规则,例如 https://example.com/*
  4. 按需要添加 CSS 链接、自定义 CSS、JS 链接或自定义 JS。
  5. 如使用 JavaScript,可选择默认的隔离环境,或切换到页面环境;只应在页面环境中运行可信代码。
  6. 保存规则,并允许 Chrome 请求的对应站点权限。

Chrome 138 或更高版本如果要运行 JavaScript 规则,还需要进入扩展详情页,开启“允许用户脚本”。只使用 CSS 时不需要这一步。

截图预览

下载与项目地址

后续计划

  • 支持将规则应用到页面中的 iframe。

目前的限制

  • 不能修改 chrome:// 页面、Chrome 应用商店等受保护页面。
  • 停用规则会立即移除 CSS,但 JavaScript 已经造成的页面变化通常需要刷新后才能完全恢复。
  • 远程 JavaScript 按经典用户脚本运行,不支持相对模块导入。

项目刚刚发布,欢迎通过 GitHub Issues 反馈实际网页中的兼容性问题和使用建议。