Chrome插件与油猴脚本

news/2025/1/12 10:48:20/

Chrome插件与油猴脚本

  • 简介
    • 油猴脚本编写要点
    • 调试技巧

简介

开发过Chrome插件的开发者,都会被Chrome插件的content,background(service),popup,inject 等各种不同作用域的脚本搞得晕头转向,而且不同的脚本有不同的权限,比如我们要拦截页面的音频,发送到跨域服务器,并把结果填充到网页元素绑定的vue或者react实例中,则需要在content,background,inject等不同脚本中来回通讯。
所有有没有什么方法让我们在一个js文件中完成我们想做的功能呢?
有的!油猴插件。
安装了油猴插件,我们只需要调用油猴插件封装好的api,油猴插件本身帮我们解决chrome不同作用域脚本间的通讯。
完全造福让广大js开发者,不需要了解chrome插件那一套繁杂的规则就可以编写可用的脚本。
而按照油猴规范编写的js脚本就是油猴脚本。
PS:本文所述油猴插件包含几个分支:GreasyMonkey,TamperMonkey,Violentmonkey等,文章重点在于介绍油猴脚本,所有插件都能运行油猴脚本,不对插件做详细区别。

油猴脚本编写要点

油猴脚本的资源网上非常丰富,见 https://greasyfork.org/zh-CN 。
开发规范很简单,见 https://www.tampermonkey.net/documentation.php
这里主要写几个油猴脚本开发和普通js不同的几个地方:

// ==UserScript==
// @name         插件名称
// @namespace    插件命名空间
// @description  插件描述
// @author       插件作者
// @version      1.0.0
// @match        https://match.address/*
// @run-at       document-end
// @grant        unsafeWindow
// @grant        GM_xmlhttpRequest
// @grant        GM_notification
// @grant        GM_info
// @grant		 GM_getValue
// @grant		 GM_setValue
// @require      https://cdn.bootcss.com/blueimp-md5/2.10.0/js/md5.min.js
// @require		 https://cdn.jsdelivr.net/npm/linq-es2015@2.5.1/dist/linq.min.js
// ==/UserScript==
  • 脚本需要有头部声明,如上述内容
  • 脚本中使用的油猴api需要前置声明,见上述代码 @grant
  • 脚本中使用的第三方库需要前置声明,见上述代码@require
  • 脚本中使用window需要声明 unsafeWindow,并且代码中需要替换window为unsafeWindow.
  • 脚本中发送跨域请求需要使用GM_xmlhttpRequest
  • 脚本持久化数据读写需要使用GM_setValue/GM_getValue
  • 脚本中想要获取头部声明信息可以使用GM_info,比如获取脚本@version
  • 如果想要脚本有交互设置项,可以在网页中添加一个紧靠边缘自动收缩的弹窗,鼠标移入弹出设置窗体,配合持久化数据读写保存/修改配置。
  • 有时候为了拦截网页刚开始加载时的请求,需要设置@run-at 为document-start
  • 油猴提供了一些与浏览器交互的api。比如新开标签页,弹出通知。

所以通过油猴脚本来拦截网页请求就简单高效很多。
不过需要注意在油猴脚本中 发送跨域请求需要使用GM_xmlhttpRequest
并在前面声明
@grant GM_xmlhttpRequest

// ==UserScript==
// @name         Userscript Name
// @namespace    your name space
// @version      0.1
// @description  desc
// @author       You
// @run-at       document-end
// @match        https://*/*
// @grant        unsafeWindow
// @grant        GM_log
// ==/UserScript==(function() {'use strict';/*** 重载fetch,用于拦截网页发送的fetch请求*/let originFetch = fetch;window.unsafeWindow.fetch = async function (...args) {const response = await originFetch(...args);await response.clone().blob() // 如果是文本数据,可以使用json()等.then(data => {GM_log(data); // 获取拦截的数据}).catch(e=> GM_log(e));return response;}/*** 重载xhr的send,用于拦截网页发送的xhr请求*/let xhr = XMLHttpRequest.prototype;let originSend = xhr.send;xhr.send = async function (postData) {GM_log(postData);return originSend.apply(this, arguments);}
})();

拦截并修改数据可以参考这里转发的一篇文章:
油猴脚本重写fetch和xhr请求

调试技巧

有时候我们想要使用外部编辑器编辑js脚本,此时可以在油猴插件中添加下面的脚本内容,引用外部实际的脚本文件路径
注意match、run-at、grant等属性从引用的实际脚本内容中复制。
另外需要在浏览器中开启油猴插件的允许访问文件网址

// ==UserScript==
// @name         测试
// @description  通过这种方式,可以使用外部编辑器修改js文件。
// @version      1.0.0
// @match        https://*.yourwebsite.com/*
// @require      file://E:\path\to\your\test.user.js
// ==/UserScript==

http://www.ppmy.cn/news/494907.html

相关文章

油猴的简介和安装

目录 1.油猴简介 2.油猴插件安装 方法1 方法2 3.获取油猴脚本 4.脚本的使用 4.1 脚本的设置及功能 4.2 安装油猴脚本 4.3 新建脚本 5.脚本编写方法 功能注释 脚本权限 编写脚本 1.油猴简介 油猴脚本是一款免费的浏览器扩展和最为流行的用户脚本管理器&#xff0c…

油猴脚本安装教程

文章首发自个人博客:https://github.laiczhang.com/2019/07/13/油猴脚本安装教程/ 简介 tampermonkey俗称油猴,油猴是一款免费实用且强悍的浏览器插件,它可以实现各种意想不到的功能。如观看VIP电影、解除网页防止复制粘贴功能、直接下载云盘…

油猴脚本(Tampermonkey)的安装和使用小结

0x00 前言 文章中的文字可能存在语法错误以及标点错误,请谅解; 如果在文章中发现代码错误或其它问题请告知,感谢! 浏览器:Firefox 93.0 0x01 油猴脚本(Tampermonkey)安装和使用 1.油猴脚本(Tampermonkey)简介 Ta…

如何开发一个油猴脚本- 从零开始编写一个油猴脚本

📢博客主页:https://blog.csdn.net/mukes 📢欢迎点赞👍收藏⭐留言📝如有错误敬请指正! 📢本文由 mukes 原创,首发于 csdn 目录 前言开发脚本之前的准备工作1.什么是油猴(Tampermonke…

手机如何安装GreasyFork油猴js脚本?

文章目录 前言一、狐猴浏览器(安卓)(谷歌微软插件)二、Iceraven浏览器(火狐)(安卓)三、Via浏览器(安卓)四、alook浏览器(苹果)(安卓)五、kiwi浏览器(安卓)哪里找到自己想要的JS脚本? 前言 狐猴浏览器支持谷歌和微软两大插件,拥有巨量插件并满足国人使用…

油猴浏览器插件含下载安装使用教程(附赠脚本)

油猴脚本大家一定不陌生, Tampermonkey 是一款免费的浏览器扩展和最为流行的用户脚本管理器,它适用于 Chrome, Microsoft Edge, Safari, Opera Next, 和 Firefox。虽然有些受支持的浏览器拥有原生的用户脚本支持,但 Tampermonkey 将在您的用户…

【教程】油猴脚本开发入门教程

目录 先决条件配置本地开发环境【可选】快速插入复杂的 HTML设置 CSS 样式发布与更新你的脚本常见标签简析connectgrantincluderequire 常见应用程序接口简析GM_xmlhttpRequestGM_addStyle 参考与拓展 先决条件 安装油猴插件。了解基本的 js 语言知识。请首先阅读配置本地开发…

油猴脚本手机版|油猴tampermonkey手机版

手机浏览器中的功能太少,想下载一些插件?那么推荐你先安装个油猴脚本手机版,也就是油猴tampermonkey手机版,这是备受大家喜欢的一款类似电脑浏览器中的油猴一样的手机插件脚本,相信在电脑中使用过该插件的小伙伴们都知…