官方文档: https://www.tampermonkey.net/documentation.php#google_vignette

1.注释语法:

// @match https://passport.yhd.com/

// ==UserScript==
// @name 第一个脚本-HelloWorld
// @namespace https://learn.scriptcat.org/
// @version 0.1
// @description 第一个脚本!弹出HelloWorld对话框
// @author lanlang
// @match https://bbs.tampermonkey.net.cn/
// @grant none
// @run-at document-start
// @connect api.bilibili.com
// ==/UserScript==

说明:
@name: 脚本名称
@match: 匹配网站,*表示通配
@icon 用于设置脚本的图标
@grant 这个属性可用来申请GM_*函数和unsafeWindow权限。相当于放在脚本header里面告诉油猴扩展,你需要用些什么东西,然后它就会给你相应的权限。
默认的情况下,你的脚本运行在油猴给你创建的一个沙盒环境下,这个沙盒环境无法访问到前端的页面,也就无法操作前端的一些元素等。
如果在页面最前方声明// @grant none,那么油猴就会将你的脚本直接放在网页的上下文中执行,这是的脚本上下文(window)就是前端的上下文。但是这样的话就无法使用GM_*等函数,无法与油猴交互,无法使用一些更强的功能。
所以一般写脚本的时候是使用unsafeWindow与前端交互,而不使用// @grant none,这样就可以使用grant去申请油猴的一些更强的函数功能。
@run-at: 主要是设置脚本运行的时候
@connect: 设置允许通过的域名,使用 @connect 配置确保此跨域请求是计划内的行为

创建方式:
1)新建一个脚本
2)在指定网址,选择并新建自动匹配当前地址,例如:@match https://passport.yhd.com/

2.使用
1)对于系统函数进行劫持

(function() {
'use strict'; // 修改系统函数
// 1)系统函数重新赋值给一个新变量
let hookSetInterval = window.setInterval;
window.setInterval = function(a, b){
return hookSetInterval(a, 1000 * 10);
}
})();

注意:若是一开始就需要注入的系统函数, 需要设置run-at,在一开始就进行注入

2)http访问
GM_xmlhttpRequestAPI

// ==UserScript==
// @name 油猴中文网-自动关注up主
// @namespace https://bbs.tampermonkey.net.cn/
// @version 0.1
// @description 油猴中文网-自动关注up主
// @author Wyz
// @match https://bbs.tampermonkey.net.cn/
// @grant GM_xmlhttpRequest
// @connect api.bilibili.com
// ==/UserScript== (function() {
'use strict'; GM_xmlhttpRequest({
url:"https://api.bilibili.com/x/relation/modify",
method :"POST",
data:"fid=1037793830&act=1&re_src=11&jsonp=jsonp&csrf=e37f1881fd98f16756d16ab71109d37a",
headers: {
"Content-type": "application/x-www-form-urlencoded"
},
onload:function(xhr){
console.log(xhr.responseText);
}
});
})();

3) 插入新元素

let div = document.createElement("div");
div.innerHTML = '<span>span1</span><span>span2</span>';
// 插入到页面的body中
document.body.append(div);

4)添加监听器

div.addEventListener("click", function (ev) {
console.log(ev);
});

5) 引入外部JS文件
-- @require 需要使用这个来引入需要的JS文件

let script = document.createElement('script');
script.setAttribute('type', 'text/javascript');
script.src = "https://cdn.jsdelivr.net/npm/vue@2.6.12/dist/vue.min.js";
document.documentElement.appendChild(script);

6) 引入外部css资源
// @resource css https://blog.icodef.com/wp-content/themes/Kratos-3.0.7/assets/css/kratos.min.css?ver=3.2.4

// @resource SRIsecured1 http://example.com/favicon1.ico#md5=ad34bb...
// @resource SRIsecured2 http://example.com/favicon2.ico#md5=ac3434...,sha256=23fd34...
// @require https://code.jquery.com/jquery-2.1.1.min.js#md5=45eef...
// @require https://code.jquery.com/jquery-2.1.2.min.js#md5-ac56d...,sha256-6e789...
// @require https://code.jquery.com/jquery-3.6.0.min.js#sha256-/xUj+3OJU...ogEvDej/m4=

# 注: require 和 resource 支持 window.crypto 校验,例如 SHA-256, MD5, SHA-1, SHA-384 和 SHA-512。

console.log(GM_getResourceURL("css"),GM_getResourceText("css"));
GM_addStyle(GM_getResourceText("css")); GM_getResourceText 会返数据的内容, GM_getResourceURL 则会返回数据的 dataURL, 本例中,即 data:text/css;base64,[base64] let script = document.createElement('link');
script.setAttribute('rel', 'stylesheet');
script.setAttribute('type', 'text/css');
script.href = "https://blog.icodef.com/wp-content/themes/Kratos-3.0.7/assets/css/kratos.min.css?ver=3.2.4";
document.documentElement.appendChild(script);

脚本:

1) 打印hook cookie

https://github.com/JSREI/js-cookie-monitor-debugger-hook?tab=readme-ov-file

2) 监听页面跳转事件(页面被重定向情况)

// ==UserScript==
// @name 页面跳转监控
// @namespace http://tampermonkey.net/
// @version 2024-08-21
// @description try to take over the world!
// @author You
// @match *://*/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=tampermonkey.net
// @grant none
// @run-at document-start
// ==/UserScript==

(function() {
'use strict';
    // 页面跳转前debug
    //window.onbeforeunload = () => {
        // debugger;
    // return false;
    //}

// 添加监听时间
    window.addEventListener('beforeunload', function(e){
        // Cancel the event
        e.preventDefault();
        // Chrome requires returnValue to be set
        e.returnValue = '自定义文本';

debugger;
});

})();

Chrome插件之油猴(详尽版本)的更多相关文章

  1. 【接单】找我付费定制Python工具软件或网站开发、Chrome浏览器插件、油猴脚本

    各位可付费找我定制Python工具软件或网站开发.Chrome插件.油猴脚本.自动化软件,可通过我做的软件来评判我的实力,一定要先和我沟通你的需求,做不了的我也不会接. 费用50元起,通过淘宝APP或 ...

  2. 浏览器插件之王-Tampermonkey(油猴脚本)

    大家电脑都在使用浏览器,相信大家对浏览器插件也不陌生,浏览器插件是安装在浏览器里面,对浏览器功能进行拓展的脚本,现在的主流浏览器都有各种各样的插件如图: 这些插件让我们的上网方便了许多,有去广告的插件 ...

  3. chrome内核浏览器插件的使用--Tampermonkey(油猴插件)

    Tampermonkey(油猴插件),这个插件是一个用于改造你浏览器打开的网站的插件.它可以在你打开的网页中注入任意js脚本,以达到你想要的外加功能.可以说非常不错.很多时候也值得使用. 这是个chr ...

  4. 你竟然不装油猴插件-Chrome神器TamperMonkey

    油猴插件是一款可以在chrome浏览器中使用油猴脚本的插件.理解为脚本运行的平台 脚本 是一段代码,安装之后,有些脚本能为网站添加新的功能,有些能使网站的界面更加易用,有些则能隐藏网站上烦人的部分内容 ...

  5. 使用Tampermonkey(油猴) 插件,重新实现了,百度搜索热点过滤功能

    昨天晚上,花了点时间学习了Chrome插件的制作方法,并书写了<Chrome 百度搜索热点过滤插件 - 开源软件>这一文章,简单地介绍自己实现的百度搜索热点过滤神器的原理和使用方式,并进行 ...

  6. 自用chrome+油猴脚本,使用迅雷下载百度云大文件,一键离线下载

    油猴是有名的火狐浏览器插件(Greasemonkey),当然也有Chrome版本(tampermonkey),甚至IE.Safari.Opera都有……虽然这些插件是由不同的开发者开发出来的,界面也可 ...

  7. 超好用的谷歌浏览器、Sublime Text、Phpstorm、油猴插件合集

    原文:超好用的谷歌浏览器.Sublime Text.Phpstorm.油猴插件合集 - 『精品软件区』 - 吾爱破解 - LCG - LSG |安卓破解|病毒分析|破解软件|www.52pojie.c ...

  8. Mac的Safari安装油猴插件(Tampermonkey)

    Mac的Safari安装油猴插件(Tampermonkey) 官方的AppStore是没有油猴插件(Tampermonkey)的,官方插件不仅少,功能被阉割,相对弱小,还收费.嗯,这很苹果第三方拓展. ...

  9. Tampermonkey油猴脚本管理插件-最强浏览器插件的安装使用全攻略

      对于接触过谷歌浏览器插件的“玩家”们来说,应该没有人没听说过Tampermonkey用户脚本管理器,也就是中文所说的“油猴”这个chrome插件了. 油猴号称全商店最强的浏览器插件绝非浪得虚名,一 ...

  10. 【转】NPAPI 插件无法在 Chrome 42 版及更高版本上正常运行

    原文网址:https://support.google.com/chrome/answer/6213033 NPAPI 插件无法在 Chrome 42 版及更高版本上正常运行 您可以利用插件在浏览器中 ...

随机推荐

  1. SpringMVC获取请求参数

    目录 通过ServletAPI获取 通过控制器方法的形参获取请求参数 @RequestParam @RequestHeader @CookieValue 通过POJO获取请求参数 解决获取请求参数的乱 ...

  2. 【YashanDB知识库】表收集统计信息默认阈值引起SQL执行效率差

    [问题分类]性能优化 [关键字]统计信息,阈值,执行计划 [问题描述]表新增87w数据自动收集统计信息任务没有启动导致SQL执行计划变差 [问题原因分析] CUS_REGISTER_READ 数据总量 ...

  3. Centos7.9安装Docker和Docker compose

    什么是docker环境 Docker环境是指在计算机中安装和配置了Docker引擎的运行环境.Docker是一种容器化平台,它提供了一种轻量级的虚拟化技术,能够将应用程序及其依赖项打包成一个独立的容器 ...

  4. C++创建与调用dll动态链接库(MinGW64 Dev-C++)

    本文使用的是dev-c++,如果涉及到VC++中不一样的操作,也会适当进行区分. 项目一:创建DLL 1.创建一个DLL类型的项目,当前命名为dlltest,并选择合适的路径进行保存.  2.在生成的 ...

  5. Serilog文档翻译系列(二) - 设置AspNetCore应用程序

    Serilog 日志记录适用于 ASP.NET Core.此包将 ASP.NET Core 的日志消息通过 Serilog 进行路由,使你可以将有关 ASP.NET 内部操作的信息写入与应用程序事件相 ...

  6. JSP——简介-快速入门

    JSP 简介       JSP 快速入门       <%@ page contentType="text/html;charset=UTF-8" language=&qu ...

  7. Google 应用出海计划 | 指南针 第六期强势回归启动报名

  8. AD域下,普通用户环境下安装软件需要管理员权限的解决办法

    原理:将AD域普通用户添加到管理组中,使其拥有管理员权限 做法: 1.切换到AD域管理员账户: 2.计算机 -> 管理 -> 用户和组 -> 组 -> Administrato ...

  9. 14. 迭代器、生成器、模块与包、json模块

    1.迭代器 1.1 迭代器介绍 迭代器是用来迭代取值的工具 每一次迭代得到的结果会作为下一次迭代的初始值,单纯的重复并不是迭代 # while循环实现迭代取值 a = [1, 2, 3, 4, 5, ...

  10. 全网最适合入门的面向对象编程教程:55 Python字符串与序列化-字节序列类型和可变字节字符串

    全网最适合入门的面向对象编程教程:55 Python 字符串与序列化-字节序列类型和可变字节字符串 摘要: 在 Python 中,字符编码是将字符映射为字节的过程,而字节序列(bytes)则是存储这些 ...