个人名片:
🐼作者简介:一名大三在校生,喜欢AI编程🎋
🐻❄️个人主页🥇:落798.
🐼个人WeChat:hmmwx53
🕊️系列专栏:🖼️
- 零基础学Java——小白入门必备🔥
- 重识C语言——复习回顾🔥
- 计算机网络体系———深度详讲
- HCIP数通工程师-刷题与实战🔥🔥🔥
- 微信小程序开发——实战开发🔥
- HarmonyOS 4.0 应用开发实战——实战开发🔥🔥🔥
- Redis快速入门到精通——实战开发🔥🔥🔥
🐓每日一句:🍭我很忙,但我要忙的有意义!
欢迎评论 💬点赞👍🏻 收藏 📂加关注+
文章目录
- 前言:
- 什么是「油猴」?
- Tampermonkey油猴用户脚本API文档
- 用户脚本 Header
- `@name`
- `@copyright`
- @version
- @description
- @icon64,@icon64URL
- @grant
- `@author`
- `@require`
- @resource
- @include
- @match
- @run-at
- @updateURL
- @downloadURL
- @supportURL
- @webRequest
- @unwrap
- 应用程序编程接口
- 不安全的窗口
- 子资源完整性
- 欢迎添加微信,加入我的核心小队,请备注来意
前言:
相信大家都了解浏览器插件,而在众多的扩展中,就不得不提到一个浏览器插件——Tampermonkey。中文俗称油猴。
相信很多人也听说过,大家可以把他理解为一个用户脚本管理器。它本身是无法为我们发挥什么作用的,它主要依靠各大社区编写的扩展脚本(JavaScript代码)运行在浏览器上,来改变被访问网页的功能,提升我们的网页浏览体验 。
什么是「油猴」?
「油猴」,Greasemonkey,简称 GM,可以简单理解为脚本管理器。
通过给油猴管理器安装各类脚本,可以让大部分 HTML 为主的网页更方便易用,比如:全速下载网盘文件、去广告、悬停显示大图、Flash/HTML5 播放器转换、阅读模式等。有点像给 Chrome 的插件装上插件。
知名的油猴管理器有很多,Tampermonkey、Greasemonkey、Violentmonkey 做的都不错,我们在这介绍对各大浏览器平台适配的最好的 Tampermonkey 管理器。
Tampermonkey油猴用户脚本API文档
官网地址:https://www.tampermonkey.net/documentation.php?ext=dhdg#api:GM_openInTab
相信熟悉浏览器的都知道,尤其是大名鼎鼎的Chrome浏览器,丰富的扩展程序让很多人体验到了浏览器的神奇之处,而一个没有安装扩展程序的浏览器也是不完整的。
用户脚本 Header
@name
脚本的名称。
国际化是通过添加命名区域设置的附录来完成的。
// @name A test
// @name:de Ein Test
@namespace
脚本的命名空间。
@copyright
在脚本编辑器标题中显示的版权声明,位于脚本名称的正下方。
@version
脚本版本。这用于更新检查,每次更新时都需要增加。
@description
一个简短的重要描述。
国际化是通过添加命名区域设置的附录来完成的。
// @description This userscript does wonderful things
// @description:de Dieses Userscript tut wundervolle Dinge
@icon、@iconURL@defaulticon
低分辨率的脚本图标。
@icon64,@icon64URL
此脚本图标为 64x64 像素。如果此标记,但给定图像将在选项页面的某些位置缩放。@icon@icon
@grant
@grant用于将功能列入白名单,对象和一些功能强大的功能。GM_*GM.*unsafeWindowwindow
// @grant GM_setValue
// @grant GM_getValue
// @grant GM.setValue
// @grant GM.getValue
// @grant GM_setClipboard
// @grant unsafeWindow
// @grant window.close
// @grant window.focus
// @grant window.onurlchange
由于关闭和聚焦选项卡是一项强大的功能,因此也需要将其添加到语句中。 如果紧随其后,沙盒将被禁用。在此模式下,没有任何功能,但该属性将可用。@grant@grantnoneGM_*GM_info
// @grant none
如果未提供任何标记,则假定为空列表。但是,这与使用 .@grantnone
@author
脚本作者。
@homepage、@homepageURL、@website@source
在选项页面上用于从脚本名称链接到给定页面的作者主页。请注意,如果标签以其内容开头,也将用于此目的。@namespacehttp://
@antifeature
此标记允许脚本开发人员披露他们是否通过脚本获利。例如,GreasyFork 需要它。
语法:<tag> <type> <description>
<type>
可以具有以下值:
广告
跟踪
矿工
// @antifeature ads We show you ads
// @antifeature:fr ads Nous vous montrons des publicités
// @antifeature tracking We have some sort of analytics included
// @antifeature miner We use your computer's resources to mine a crypto currency
国际化是通过添加命名区域设置的附录来完成的。
@require
指向在脚本本身开始运行之前加载并执行的 JavaScript 文件。 注意:加载方式的脚本及其“use strict”语句可能会影响用户脚本的严格模式!@require
// @require https://code.jquery.com/jquery-2.1.4.min.js
// @require https://code.jquery.com/jquery-2.1.3.min.js#sha256=23456...
// @require https://code.jquery.com/jquery-2.1.2.min.js#md5=34567...,sha256=6789...
// @require tampermonkey://vendor/jquery.js
// @require tampermonkey://vendor/jszip/jszip.js
请查看子资源完整性部分,了解如何确保完整性的更多信息。
允许使用多个标签实例。
@resource
预加载可通过脚本和脚本访问的资源。GM_getResourceURLGM_getResourceText
// @resource icon1 http://www.tampermonkey.net/favicon.ico
// @resource icon2 /images/icon.png
// @resource html http://www.tampermonkey.net/index.html
// @resource xml http://www.tampermonkey.net/crx/tampermonkey.xml
// @resource SRIsecured1 http://www.tampermonkey.net/favicon.ico#md5=123434...
// @resource SRIsecured2
允许使用多个标签实例。
@include
脚本应运行的页面。允许使用多个标签实例。 @include不支持 URL 哈希参数。您必须匹配没有哈希参数的路径,并使用 window.onurlchange
// @include http://www.tampermonkey.net/*
// @include http://*
// @include https://*
// @include /^https:\/\/www\.tampermonkey\.net\/.*$/
// @include *
注意:在编写类似的东西时,许多脚本开发人员希望脚本只运行,但事实并非如此。 它也运行在。
因此,Tampermonkey 的解释包含有点像 .Every before 仅匹配除字符之外的所有内容,以确保仅匹配 URL 方案。 此外,如果这样的 包含 after ,则这些字符串之间的所有内容都被视为主机,匹配除字符之外的所有内容。这同样适用于直接跟随 .@includes://@match*😕/:@include/😕//*😕/
@match
在 Tampermonkey 中,该指令用于指定脚本应在其上运行的网页。 的值应为与希望运行脚本的页面匹配的 URL 模式。以下是您需要设置的 URL 模式的各个部分:@match@match
// @match <protocol>://<domain><path>
protocol - 这是 URL 的第一部分,在冒号之前。它指定页面使用的协议,例如 或 。 两者都匹配。httphttps*
domain - 这是 URL 的第二部分,在协议和两个斜杠之后。它指定网站的域名,例如 .您可以通过这种方式使用通配符来匹配它的任何子域,例如 .tmnk.com*.tmnk.nettmnk.netwww.tmnk.net
path - 这是域名后面的 URL 部分,可能包含其他子目录或文件名。您可以使用通配符来匹配路径的任何部分。*
@run-at
定义注入脚本的时刻。与其他脚本处理程序相反,定义脚本想要运行的第一个可能时刻。这意味着可能会发生这样的情况,即使用该标记的脚本可能会在加载文档后执行,因为获取所需的脚本需要很长时间。无论如何,在给定注入时刻之后发生的所有 DOMNodeInserted 和 DOMContentLoaded 事件都会被缓存并在注入脚本时传递到脚本。@run-at@require
@updateURL
用户脚本的更新 URL。 注意:需要标记才能使更新检查正常工作。@version
@downloadURL
定义检测到更新时将从中下载脚本的 URL。如果使用值 none,则不会执行更新检查。
@supportURL
定义用户可在其中报告问题并获得个人支持的 URL。
@webRequest
@webRequest获取匹配的 JSON 文档GM_webRequest的参数。它甚至允许在加载用户脚本之前应用规则。rule
@unwrap
将没有任何包装器和沙箱的用户脚本注入到页面中,这可能对 Scriptlet 有用。
应用程序编程接口
不安全的窗口
该对象提供对运行 Tampermonkey 的页面对象的访问,而不是对 Tampermonkey 扩展的对象的访问。这在某些情况下很有用,例如当用户脚本需要访问页面上定义的 JavaScript 库或变量时。unsafeWindowwindowwindow
子资源完整性
子资源完整性 (SRI) 是一项安全功能,允许用户脚本开发人员确保其用户脚本中包含的外部资源(例如 JavaScript 库和 CSS 文件)未被篡改或修改。这是通过生成资源的加密哈希并将其包含在 和 标记中来实现的。安装用户脚本后,Tampermonkey 将计算资源的哈希值并将其与包含的哈希值进行比较。如果两个哈希值不匹配,Tampermonkey 将拒绝加载资源,防止攻击者将恶意代码注入您的用户脚本。@require@resource
有关合适的“属性”,请参阅相应的文档。例如:
脚本标记
img 标签
样式标签
GM_addElement('script', {
textContent: 'window.foo = "bar";'
});
GM_addElement('script', {
src: 'https://example.com/script.js',
type: 'text/javascript'
});
GM_addElement(document.getElementsByTagName('div')[0], 'img', {
src: 'https://example.com/image.png'
});
GM_addElement(shadowDOM, 'style', {
textContent: 'div { color: black; };'
});
注意:此功能是实验性的,API 可能会发生变化。
GM_addStyle(css)
将给定样式添加到文档中,并返回注入的样式元素。
GM_download(详细信息)、GM_download(url、名称)
GM_download
允许用户脚本从指定的 URL 下载文件并将其保存到用户的本地计算机。
该函数采用以下参数:GM_download
详细信息可以具有以下属性:
url
:要下载的文件的 URL。这必须是有效的 URL,并且必须指向用户可访问的文件。
名称: 用于下载文件的名称。 这应包括文件扩展名,例如 .txt 或 .pdf。 出于安全原因,文件扩展名需要在 Tampermonkey 的选项页面上列入白名单
标头: 包含要包含在下载请求中的 HTTP 标头的对象。 看GM_xmlhttpRequest了解更多详情。
saveAs
: 一个布尔值,指示是使用用户的默认下载位置,还是提示用户选择其他位置。 此选项仅适用于浏览器 API 模式。
冲突操作: 一个字符串,用于控制当具有此名称的文件已存在时发生的情况。此选项仅适用于浏览器 API 模式。 可能的值为 和 。 请查看此链接了解更多详情。uniquifyoverwriteprompt
onload:下载成功完成时调用的函数。
onerror:下载失败或取消时调用的函数。
进行中如果此下载取得了一些进展,则要执行的回调。
ontimeout如果此下载因超时而失败,则要执行的回调。
onerror 回调的 download 参数可以具有以下属性:
error:错误原因
not_enabled - 用户未启用下载功能
not_whitelisted - 请求的文件扩展名未列入白名单
not_permitted - 用户启用了下载功能,但未授予下载权限
not_supported - 浏览器/版本不支持下载功能
not_succeeded - 下载未启动或失败,details 属性可能会提供更多信息
详细信息:有关该错误的详细信息
返回具有以下属性的对象:
abort:可以调用以取消此下载的函数。
如果使用,它将返回一个 promise,该 promise 解析为下载详细信息,并且还具有一个函数。GM.downloadabort
欢迎添加微信,加入我的核心小队,请备注来意
👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇