惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

GbyAI
GbyAI
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Jina AI
Jina AI
H
Help Net Security
月光博客
月光博客
Y
Y Combinator Blog
I
InfoQ
博客园 - Franky
W
WeLiveSecurity
The Register - Security
The Register - Security
博客园 - 叶小钗
Google DeepMind News
Google DeepMind News
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Blog — PlanetScale
Blog — PlanetScale
H
Hacker News: Front Page
L
LangChain Blog
S
Security @ Cisco Blogs
Hacker News - Newest:
Hacker News - Newest: "LLM"
罗磊的独立博客
V2EX - 技术
V2EX - 技术
H
Heimdal Security Blog
博客园_首页
SecWiki News
SecWiki News
N
News and Events Feed by Topic
B
Blog RSS Feed
S
Secure Thoughts
TaoSecurity Blog
TaoSecurity Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
AI
AI
Google Online Security Blog
Google Online Security Blog
MongoDB | Blog
MongoDB | Blog
T
Troy Hunt's Blog
A
About on SuperTechFans
WordPress大学
WordPress大学
小众软件
小众软件
The Last Watchdog
The Last Watchdog
J
Java Code Geeks
PCI Perspectives
PCI Perspectives
博客园 - 聂微东
N
News | PayPal Newsroom
Schneier on Security
Schneier on Security
Help Net Security
Help Net Security
Martin Fowler
Martin Fowler
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
U
Unit 42
博客园 - 司徒正美
Forbes - Security
Forbes - Security
酷 壳 – CoolShell
酷 壳 – CoolShell
S
Security Affairs

博客园 - jack_Meng

使用油候脚本,移除页面无法选择文字 高中免费电子教辅资料合集 Windows防火墙关闭445端口:Windows在防火墙禁用echo-reply(type 0)、time-exceeded(type 11)、destination-unreachable(type 3)类型的ICMP包 WinForm 双屏开发中屏幕适配与窗口定位 高考志愿填报之计算机类专业院校报考指南(2026版) WebSocket 快速入门教程(附示例源码) 自动生成项目工具--AutoBuilder,一键干掉80%的重复CRUD工作 C#/.NET/.NET Core优秀项目和框架2026年5月简报 在Win10系统中,默认使用照片查看器 C#实现控制台多区域输出 解决: 您的连接不是私密连接,您目前无法访问 因为此网站使用了 HSTS 小说下载 网页版时间,可全屏显示 个人笔记本连接公共WIFI的安全措施 追更 HelloGitHub 一整年,年度盘点 基于Rust开发的m3u8下载器M3U8Quicker:支持断点续传、边下边播 新写了个直播录制工具,可录制抖音快手斗鱼直播 bing 每日一图 --- 桌面壁纸 一款基于 C# 开发的 Windows 10/11 系统增强优化工具 适合个人的免费域名 语雀里存了三年的笔记,导出到了本地插件----YuqueOut C# 也能像 Python 一样写脚本 | .NET 10 构建基于文件的应用 js 双击页面 开始/暂停 页面滚动 使用bat批量给txt追加内容 Python摄像头监控:运动检测+自动录像+时间水印 【译】告别繁琐查错:认识下新的 Visual Studio Debugger Agent Workflow 好消息,在 Visual Studio 中可以免费使用 GitHub Copilot 了! [C#] 零依赖高性能跨平台 Web 胶水库 -- PicoServer 我的第一款独立产品--TaskManager 写 EF Core 查询,优化查询语句 最新.NET新手入门学习网站合集(2026更新版) Avalonia UI:.NET 跨平台桌面开发的“真香”选择 一个 txt 生成并保存 mp3的 Python 脚本 开源可商用 .NET Office 转 PDF 工具/库 - MiniPdf c# 常用且免费的 AI 编程工具 CodeGeeX,在vs 2019中使用的 AI 大模型工具 支持在 vs studio 2019中安装的 免费的 AI 辅助工具 .Net Framework 使用Lazy<T>延迟初始化对象 微软官网wpf例程源码下载地址 GitHub“神级”项目学习网址 开源协议介绍 Windows 窗体控件和等效的 WPF 控件 sql server backup database 爬取七猫中文网小说 ASP.NET Core 内存缓存实战 CliWrap —— .NET 最优雅的命令行交互库 .NET 高级开发 | 设计、实现一个事件总线框架 一个基于 .NET Core + Vue3 构建的开源全栈平台 Admin 系统 C#/.NET/.NET Core优秀项目和框架2026年3月简报--工作流引擎 C# 如何减少代码运行时间:7 个实战优化技巧
油候脚本中,使用GM_info对象,打印脚本信息
jack_Meng · 2026-07-25 · via 博客园 - jack_Meng

Tampermonkey(油猴脚本)获取并打印当前脚本名称

方法 1:直接用 GM_info(最标准、推荐)

// ==UserScript==
// @name         测试脚本名称
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  获取脚本名
// @author       You
// ==/UserScript==

(function() {
    'use strict';

    // GM_info 内置对象,不需要额外权限
    const scriptName = GM_info.script.name;
    const fullInfo = GM_info;

    console.log('当前脚本名称:', scriptName);
    console.log('脚本完整信息:', fullInfo);

})();

GM_info 常用可读字段

GM_info.script.name          // 脚本名称(@name 内容)
GM_info.script.version       // 版本号
GM_info.script.description   // 描述
GM_info.script.author        // 作者
GM_info.script.namespace     // 命名空间
GM_info.script.filename      // 脚本本地文件名(.user.js)

方法 2:打印本地脚本文件名

console.log('脚本本地文件名称:', GM_info.script.filename);

方法 3:封装成一行日志函数(直接调用)

function logWithScriptName(...args) {
    const name = GM_info.script.name;
    console.log(`[${name}]`, ...args);
}

// 使用示例
logWithScriptName('开始执行', new Date());
logWithScriptName('加载成功');

兼容性说明

  1. Tampermonkey、Violentmonkey、Greasemonkey 都支持 GM_info,无需添加 // @grant
  2. 如果旧版极个别环境失效,可以加授权(不影响):

最终效果示例

[测试脚本名称] 开始执行 2026-07-25T...

打印方法名

如何还需要在日志中输出当前调用的方法名,可以使用如下

// ==UserScript==
// @name         日志带脚本名+函数名工具
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  控制台打印:[脚本名]-[函数名] 日志
// @grant        GM_info
// ==/UserScript==

(function() {
    'use strict';

    // 获取脚本名称
    const SCRIPT_NAME = GM_info.script.name;

    /**
     * 获取调用方函数名
     * @returns {string} 函数名,匿名返回anonymous,全局调用返回global
     */
    function getCallerFuncName() {
        const stack = new Error().stack;
        // 堆栈第二行是调用log函数的那一层
        const match = stack.split('\n')[2]?.match(/at (\w+)/);
        return match ? match[1] : 'global';
    }

    /**
     * 统一日志打印
     * @param  {...any} args 要打印的内容
     */
    function log(...args) {
        const funcName = getCallerFuncName();
        console.log(`[${SCRIPT_NAME}]-[${funcName}]`, ...args);
    }

    // ========== 使用示例 ==========
    // 1. 全局直接调用
    log('全局执行日志');

    // 2. 在自定义函数内调用
    function testFuncA() {
        log('函数A执行了', 123, {a:1});
    }

    function testFuncB() {
        testFuncC();
    }

    function testFuncC() {
        log('嵌套函数C日志');
    }

    testFuncA();
    testFuncB();

})();

打印效果示例

[日志带脚本名+函数名工具]-[global] 全局执行日志
[日志带脚本名+函数名工具]-[testFuncA] 函数A执行了 123 {a: 1}
[日志带脚本名+函数名工具]-[testFuncC] 嵌套函数C日志

补充说明

  1. 匿名函数判断

    如果调用处是匿名箭头函数,会显示 anonymous,比如:
(()=>{
    log('匿名函数内容');
})();
  1. 简化极简版(不想封装函数直接用)

const scriptName = GM_info.script.name;
const fnName = new Error().stack.split('\n')[2].match(/at (\w+)/)[1];
console.log(`[${scriptName}][${fnName}]`, '内容');
  1. 兼容性 

    Tampermonkey、Violentmonkey 全部兼容,不需要额外权限。