Violentmonkey(暴力猴)是一款开源的浏览器用户脚本管理器,以浏览器扩展的形式安装于 Chrome、Firefox、Edge 等支持 WebExtension 的浏览器中,用于安装、编辑、执行和管理用户脚本。[1] 它兼容绝大多数为 Greasemonkey 和 Tampermonkey 编写的脚本,采用 MIT 许可证发布,并把脚本数据同步到 Dropbox、OneDrive、Google Drive、WebDAV 等云存储。
定义
Violentmonkey 是一款浏览器扩展形式的用户脚本管理器。用户脚本是一小段 JavaScript 程序,由管理器在匹配的网址上注入并执行,用来调整页面布局、添加功能或完成重复性操作。[2] Violentmonkey 负责脚本的安装、存储、匹配、执行、更新与同步,并对外提供 GM 系列接口,使脚本能调用跨域请求、键值存储、样式注入、剪贴板写入等超出普通网页 JavaScript 的能力。[2] 它基于 WebExtension API 构建,因此可运行在具备该接口的多种浏览器上,并兼容大部分为 Greasemonkey 与 Tampermonkey 编写的脚本。[3]
原理
Violentmonkey 把代码分散在若干相互隔离的执行环境中,依靠扩展的消息传递机制串联。后台上下文持有完整的扩展接口权限,负责命令分发、脚本存储、更新检查与云同步;内容脚本在 document_start 阶段注入每个框架,充当页面与后台之间的桥梁;页面脚本上下文运行在页面的隔离世界或主世界中,能够访问页面的 window 对象和原生接口,GM 接口的实现则通过代理把请求转交给后台;面板、编辑器与弹窗属于扩展页面,通过运行时消息与后台通信。[2]
每个脚本开头的元数据块声明名称、版本、作者以及允许运行的网址范围。管理器解析这些字段后,依据 @include、@exclude、@match、@exclude-match 等规则对当前网址做模式匹配,决定是否执行;@run-at 则控制注入时机,可取值包括 document-start、document-body、document-end、document-idle。[2] 脚本按面板列表中显示的顺序依次执行,更新检查通过带 etag 或 last-modified 的条件请求完成,以减少不必要的流量。[2]
由于脚本代码直接在浏览器中执行,它所用的语法必须被浏览器原生支持,浏览器尚未实现的 ESNext 特性会以语法错误告终;ES 模块也因为脚本需要作为单文件注入而无法直接使用。[4]
发展历程
Violentmonkey 的项目仓库最早的活动记录可追溯到 2013 年 9 月。[5] 其 MIT 许可证文件署名为 Gerald,版权年份为 2017 年。[6] 在 Firefox 附加组件平台上,该扩展的创建时间记录为 2017 年 3 月 21 日,开发者署名为 Gerald 与 tophf。[7]
此后项目持续迭代,并在 beta 与稳定两个通道发布。2025 年前后,面向 Chrome 的 MV3 版本进入开发,要求 Chrome 或基于 Chromium 的浏览器版本不低于 135,而 MV2 版本则可回溯支持到 Chrome 86;官方说明中,Chrome 应用商店内的 Violentmonkey 已完成 Manifest V3 迁移。[8][1] 工具链方面,项目引入持续集成流程为 beta 之间的变更自动生成测试构建,并按稳定版、beta 版和测试构建分别分发。[3]
应用
Violentmonkey 的典型用途是在不改动网站源码的前提下改变网页行为,例如自定义页面样式、精简界面元素,或把重复的点击与填写流程自动化。[1] 面板提供已装脚本的列表,支持搜索、按执行顺序、名称、更新时间、访问时间或体积排序,以及批量启用、停用、更新与删除操作,删除的脚本会进入保留 7 天的回收站。[9] 编辑器提供语法高亮,可从网址、本地文件或模板创建脚本,并与外部编辑器通信。[2][1]
同步功能是它的重要组成部分。官方解释使用第三方同步服务的原因在于浏览器自带的存储同步接口是面向偏好设置设计的,容量上限约 100KB,且无法在 Chrome 与 Firefox 之间共享数据。[10] Violentmonkey 因此支持 Dropbox、OneDrive、Google Drive、WebDAV 以及兼容 S3 的存储服务,使同一份脚本在不同浏览器与设备间保持一致。[11] 数据还可通过 ZIP 压缩包导入导出,便于备份和迁移。
在移动端,Android 版 Firefox 可以直接安装该扩展,iOS 端不支持此类用户脚本管理器。[12]
局限
扩展本身不修改任何网页,页面上出现的变化全部来自已安装的脚本,因此其行为边界取决于用户选择安装的脚本。[1] 用户脚本运行在浏览器环境中,受浏览器 JavaScript 实现能力约束,依赖浏览器尚未支持语法的脚本无法运行。[4] 此外,部分脚本可能要求对 @match 规则做调整才能在 Violentmonkey 中正常匹配,这一兼容性细节在用户反馈中被多次提及。[13]
伴随 Chromium 浏览器推行 Manifest V3,扩展可用的接口范围发生变化,诸如同步 XHR 一类的高级能力不再可用,用户脚本管理器的实现方式随之调整。[14] 云同步依赖第三方服务,数据存放于所选服务商的账号之下。[10] 由于扩展需要访问用户在所有网站上的数据才能注入脚本,安装的权限范围较广。
参见
-
用户脚本 —— Violentmonkey 所管理并执行的对象,通常是一段 JavaScript 程序
-
Tampermonkey —— 同类用户脚本管理器,Violentmonkey 兼容其大部分脚本
-
Greasemonkey —— 早期的用户脚本管理器,奠定了脚本元数据格式
-
WebExtension —— Violentmonkey 所基于的浏览器扩展接口标准
-
Manifest V3 —— Chromium 浏览器的扩展规范,影响脚本管理器的实现方式
-
JavaScript —— 用户脚本使用的编程语言
参考资料
- Violentmonkey [引用日期2026-10-14]
- violentmonkey/violentmonkey | DeepWiki [引用日期2026-10-14]
- Get Violentmonkey [引用日期2026-10-14]
- Creating a userscript [引用日期2026-10-14]
- violentmonkey | Ecosystem Directory | market.dev [引用日期2026-10-14]
- LICENSE [引用日期2026-10-14]
- Violentmonkey [引用日期2026-10-14]
- Release BETA v2.41.2 · violentmonkey/violentmonkey [引用日期2026-10-14]
- deepwiki.com 上的网页 [引用日期2026-10-14]
- FAQ - Violentmonkey [引用日期2026-10-14]
- Advanced Features | violentmonkey/violentmonkey | DeepWiki [引用日期2026-10-14]
- Violentmonkey 暴力猴 – 下载适用于 Android 的 🦊 Firefox 扩展(zh-CN) [引用日期2026-10-14]
- Violentmonkey 暴力猴 的评价 [引用日期2026-10-14]
- How to Create and Run Custom User Scripts in Your Browser [引用日期2026-10-14]