油猴脚本教程——元数据块

开发环境使用脚本猫扩展

点击跳转脚本猫官网

我的CSDN个人主页

什么是油猴脚本?

依赖浏览器扩展运行的一段javascript代码,主要用于辅助工作。

什么是元数据块?

用于向浏览器扩展,向脚本网站描述该脚本的信息。

一个示例:

javascript 复制代码
// ==UserScript==
// @name         New Userscript Y7VA-1
// @namespace    https://docs.scriptcat.org/
// @version      0.1.0
// @description  try to take over the world!
// @author       You
// @match        https://*/*
// @grant        none
// @noframes
// ==/UserScript==

(function() {
    'use strict';

    // Your code here...
})();

油猴脚本开发的元数据块大致分为如下几个类型,基础信息、网站匹配、权限声明、运行时机、扩展字段、脚本猫专属。

一,基础信息

1,脚本名称

javascript 复制代码
// @name 去广告脚本

2,命名空间(唯一标识符)

javascript 复制代码
// @namespace https://github.com/xxx

建议使用github主页地址,这样不会重复,也可以使用别的平台的主页作为唯一标识符,如果本地两个脚本名称与命名空间都一样,那么更新脚本是有可能会更新错误,建议使用账号主页地址,从而保证命名空间唯一性。

3,版本号

javascript 复制代码
// @version 0.0.1

用于区别同一脚本的不同版本,建议使用三个数字,第一个数字代表大的版本变动,就像python2与python3一样,第二个数字表示功能上的迭代,第三个数字表示bug修复,或者小改动。

4,功能描述

javascript 复制代码
// @description 这是一个......

描述脚本功能,建议写,方便使用者知道脚本大致功能。

5,作者

javascript 复制代码
// @author 白猫&

二,网站匹配

@match:精准匹配网址(推荐)

@include:兼容旧版,通配匹配

@exclude:排除不生效的网址

javascript 复制代码
// 只在百度首页生效
// @match        https://www.baidu.com/
// 在所有B站页面生效
// @match        https://*.bilibili.com/*
// 排除百度贴吧
// @exclude      https://tieba.baidu.com/*

通配符规则:

*匹配任意字符(除域名斜杠外)

https://*/* 匹配所有 HTTPS 网站

三,权限声明

用于开启油猴提供的专属 API(如跨域请求、存储、弹窗),不写会默认无权限。也就是允许调用扩展写好的功能。

javascript 复制代码
// 允许跨域请求
// @grant        GM_xmlhttpRequest
// 本地存储(读/写)
// @grant        GM_setValue
// @grant        GM_getValue
// 弹窗通知
// @grant        GM_notification
// 无权限(纯原生JS脚本)
// @grant        none

四,运行时机

用于控制脚本加载的时机。

javascript 复制代码
// 页面开始加载时运行(最早)
// @run-at       document-start
// DOM加载完成时运行(默认,推荐)
// @run-at       document-end
// 页面完全加载(图片/样式都加载完)
// @run-at       document-idle

五,扩展字段

javascript 复制代码
// 图标(脚本列表显示)
// @icon         https://www.baidu.com/favicon.ico
// 脚本主页
// @homepageURL  https://github.com/xxx
// 支持的油猴版本
// @require      https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js
// 引入外部CSS
// @resource     customCSS https://cdn.xxx.com/style.css

1,图标

javascript 复制代码
// @icon         https://www.baidu.com/favicon.ico

支持常用类型jpg、ico、png图片类型。还支持base64编码和url链接的图片,建议base64,不会因为网络问题,也不会因为网址变化而导致图片加载不出来。

2,引用其它脚本或引用库。

javascript 复制代码
// @require      https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js

当代码较为庞大时,可以拆分为多个,使用该方法引入。当需求第三方库时,也可使用该方法。

六,脚本猫专属元数据块

脚本猫审核规则

@antifeature规则 如果含有以下不受用户欢迎的功能,

需要在脚本的头部添加@antifeature属性,如果多个,每一项一行
referral-link:该脚本会修改或重定向到作者的返佣链接

ads:该脚本会在访问的页面上插入广告

payment:该脚本需要付费才能够正常使用

miner:该脚本存在利用用户资源但不为用户产生收益或收益极其微弱的行为

membership:该脚本需要注册会员/关注公众号才能正常使用

tracking:该脚本会追踪你的用户信息

试一试

javascript 复制代码
// ==UserScript==
// @name         api演示
// @namespace    https://blog.csdn.net/m0_70933482
// @version      1.0.0
// @description  演示 GM_setValue / GM_getValue / GM_notification
// @author       白猫&
// @match        https://blog.csdn.net/m0_70933482*
// @grant        GM_setValue
// @grant        GM_getValue
// @grant        GM_notification
// @run-at       document-end
// ==/UserScript==

(function() {
    'use strict';
	// 获取访问数字
    let count = GM_getValue("visit_count", 0);
	count++;
	
	// 保存访问数字
    GM_setValue("visit_count", count);

	// 弹出提示
    GM_notification({
        title: "油猴脚本已运行",
        text: "你本次访问是第 " + count + " 次打开网页",
        timeout: 3000  // 3秒后自动关闭
    });

    console.log("已保存访问次数:", count);

})();

提示:

控制台:

相关推荐
谭光志2 小时前
如何从零开始实现一个 AI Agent CLI
前端·javascript·ai编程
丷丩2 小时前
MapLibre GL JS第25课:添加栅格瓦片源
开发语言·javascript·gis·mapbox·maplibre gl js
半个落月2 小时前
彻底搞懂 JavaScript 变量提升(Hoisting)—— 从现象到底层原理
前端·javascript
天蓝色的鱼鱼3 小时前
画1万个图形就卡成PPT?试试这款国产高性能2D引擎
前端·javascript
wuxia21183 小时前
用Node.js为网站首页绑定数据
javascript·node.js
云水一下3 小时前
JavaScript 从零基础到精通系列:异步编程与网络请求
前端·javascript
এ慕ོ冬℘゜4 小时前
手写生产级 jQuery Toast 轻量提示组件|零插件依赖、动画流畅、极简高
前端·javascript·jquery
大家的林语冰5 小时前
Express 团队官宣:全新网站正式上线,Logo 重做,支持两个主版本文档无缝切换!
javascript·node.js·express
时寒的笔记6 小时前
LF11期_day19~20 补环境(二)入门案例
javascript