大家好,我是石小石!一个热爱技术分享的开源社区贡献者,小册《油猴脚本实战指南》作者。
初识谷歌扩展插件
很早以前,我就被谷歌扩展商店里的各种插件所吸引,比如能屏蔽广告的 Adblock

能定义标签页界面的 Infinity 新标签页、用来格式化 JSON 的开发小工具,还有截图工具,甚至是 Vue.js devtools
、Redux DevTools
这样面向开发者的调试利器。

这些插件让我第一次意识到:浏览器原来还能这么强大 。当我了解到这些插件其实是用 JavaScript 开发的时,我立刻产生了浓厚的兴趣。
我兴奋地想着------如果我能掌握插件开发,是不是就能随心所欲地给网页加上各种炫酷的功能?
比如:
- 给所有网页加个悬浮记事本,随手记录灵感
- 选中英文自动翻译,读文档效率飙升
- 解锁 VIP 视频播放限制,一键倍速追剧
- 批量工具栏、自定义快捷操作......
当时脑海里一下冒出了很多点子,觉得这是前端开发和浏览器能力结合后最有趣的事情之一。
放弃谷歌插件开发
但是,当我真正开始学习谷歌插件开发时,才发现一切都在阻碍我学习,阻碍我进步。
首先,官方文档需要科学上网才能访问,而且内容更新滞后、结构复杂,阅读体验如同嚼蜡,让人望而却步。虽然社区中确实有一些翻译版的中文文档,但不是过于简略,就是内容零散,真正遇到问题时依然求助无门。
更让人无语的是,发布插件还必须支付 5 美元注册开发者账号,虽然金额不大,但对于初学者而言,这种"先交钱才能玩"的门槛实在令人心烦。
如果说上面这些是外部因素,那真正让我打退堂鼓的,是插件开发本身过于繁琐的开发流程和结构设计。一个最简单的功能,比如在页面上加个按钮、请求一个接口,都要牵扯到 manifest 配置、内容脚本、背景脚本、通信机制等一整套系统架构。尤其是当我尝试使用跨域请求时,还要专门配置权限字段,调试起来非常麻烦。而现在的 Manifest V3 又引入了 Service Worker 替代原来的 background 页面,进一步加重了开发复杂度。就算功能写出来了,每次调试还要手动在扩展页面中重新加载,修改一点点小功能都很低效。
作为一个偏向"业务导向"的前端开发者,我更希望快速把想法落地,哪怕功能写得简陋一点也没关系。可是谷歌插件开发显然不适合这样"快速验证"的思路,它更像是在搭建一个完整的小型应用。遗憾的是,我并没有太多时间深入研究这些体系和规范,于是我那些关于"网页增强小工具"的美好设想,也就搁置了。
转战油猴开发
早在大学时期,我就听说过网上有一些"神级脚本",比如自动抢火车票、精确操控 4399 的黄金矿工专挖钻石之类的传说级操作,当时只是觉得牛逼。直到某一天,我忽然恍然大悟:我不就是个写 JavaScript 的前端吗?如果我能让自己写的代码在网页里跑起来,不就是脚本开发者了吗?
于是,我发现了油猴,确切来说是Tampmonkey
这个东西。
Tampermonkey 是一个浏览器插件,通过它,我们可以在任意网页执行我们编写好的 JavaScript 脚本。也就是说,借助油猴,我就可以像写网页一样去增强甚至"接管"任意站点的功能------这不就是和开发谷歌原生插件一个效果吗。
我开始研究它的开发方式,很快惊喜地发现:油猴的脚本开发几乎没有门槛。如果你只是想改个 DOM、加点样式、弹个窗口,根本不需要了解任何 API,完全可以把它当成一个"网页 JS 注入器"来用。写一段你熟悉的 JavaScript,点保存,刷新页面,你的功能就上线了。开发、调试、上线一气呵成,最多 10 秒钟,你就能让自己成为别人口中的"脚本大神"。
就这样,在短短半小时内,我成功开发并运行了我的第一个油猴脚本------在公司后台页面上添加了一个"批量操作"按钮,极大地提升了我的工作效率。
从此,对油猴的喜爱便一发不可收拾。
如何学习油猴脚本开发
对于简单的脚本,我们几乎不需要学习油猴的API,了解基本用法就能上手。但如果涉及到一些突破浏览器限制的高级功能,如跨域请求 、数据共享等高级功能就需要掌握一些核心 API。
油猴的 API 并不复杂,如果你学习能力强,完全可以通过官方教程一步步实践。
如果你学习成本有限,不想看繁琐、无趣的官方教程,也可以查看其他教程。
当然社区也有一些很不错的脚本,比如VIP视频播放、百度网盘直链下载助手、SVIP解析、解除网页复制等。你可以尝试下载体验这些脚本,也可以学习这些脚本的源码。