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

article/2025/11/5 7:36:04

📢博客主页:https://blog.csdn.net/mukes
📢欢迎点赞👍收藏⭐留言📝如有错误敬请指正!
📢本文由 mukes 原创,首发于 csdn

目录

    • 前言
    • 开发脚本之前的准备工作
      • 1.什么是油猴(Tampermonkey )
      • 2.安装油猴(Tampermonkey )
      • 3.新建一个油猴脚本
    • 脚本需求分析迭代过程
    • 最终代码


前言

之所以开发这个插件,是因为昨天在知乎看了一篇文章:为什么CSDN上很少人会去给文章点赞?,我引用一下其中一个答主的回答:

只有我自己写博客了,我才发发现这个问题,阅读几百上千,评论0,点赞 0 。可能是点赞的按钮不明显,我说说我自己看csdn博客的情况:程序遇到问题,网上查一下,按csdn的博文操作,没效果,关了继续查,有效果,继续工作。就这样了,很少去点赞,就算查了非常久的问题,结果发现在某个博主那里得到解决,也会留个评论吐槽顺便支持下博主,还是不会点赞。

这情况和我本人差不多,每次遇到问题,有时要看好几篇博文才能解决问题,而这几篇博文中恰好只有一篇才是最有价值的,也就是能解决我的问题的那篇,但是解决问题总不能白嫖吧?
至少点个赞或者留个评论如“博主666”之类的。
但是呢查文章多了发现写评论是真的浪费时间,于是我想,不如我把我一些评论事先写好,遇到对我有帮助的博文再一键点赞评论,说干就干,于是花了一点点时间就写好了这个脚本。


开发脚本之前的准备工作

1.什么是油猴(Tampermonkey )

首先,油猴油猴脚本有什么区别?
Tampermonkey 就是一款免费的浏览器扩展和最为流行的用户脚本管理器,它适用于 Chrome, Microsoft Edge, Safari, Opera Next, 和 Firefox 等等。你安装后你的浏览器不会发生任何变动,直到你开始安装一种叫做油猴脚本(用户脚本)的东西。

油猴脚本一般指用户脚本(User Script),ta 是一段 Javascript 代码,它们能够优化您的网页浏览体验。一般有包含但不限于以下几种功能:

  • 能为网站添加新的功能,比如本篇博文所介绍的csdn 手动一键点赞评论脚本。
  • 能使网站的界面更加易用,比如一些改变网站样式、排版的脚本等。
  • 能隐藏网站上烦人的部分内容,比如一些去广告的脚本。

博主日常用的比较多的油猴脚本网站:https://greasyfork.org/zh-CN/


2.安装油猴(Tampermonkey )

油猴官方下载地址:http://www.tampermonkey.net/
在这里插入图片描述
点进去你会发现上面有各个浏览器的选项;而下面则是下载地址,油猴扩展有两个版本,一个 stable 版本,一个 beta 版本,顾名思义,一个是稳定版,一个是测试版。下载稳定版就好了。

油猴支持的浏览器有 Chrome, Microsoft Edge, Safari, Opera Next, Firefox,和 UC 浏览器等等,各大主流浏览器几乎都支持了。


3.新建一个油猴脚本

安装好油猴后,在浏览器工具栏上点击油猴添加新脚本
在这里插入图片描述

接着跳转到脚本编写界面
在这里插入图片描述

图里的代码头是自带的,叫做元数据。每个用户脚本都含有一段元数据,用来向 Tampermonkey 描述这个脚本自身的信息:脚本名,作者,描述,执行规则等等

// ==UserScript==
// @name         New Userscript
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        http://*/*
// @grant        none
// ==/UserScript==

我粗略解释一下

// ==UserScript==
// @name         这里是你的编写的油猴脚本的名字
// @namespace    这个是命名空间;用来区分名称相同但是作者不同的用户脚本,一般都是写作者的个人网址,没有也可以写你的博客地址
// @version      0.1  这个是版本号
// @description  这个是功能描述,描述你的这个脚本是用来干嘛的
// @author       这个是作者的名字,比如我:mukes
// @match        这个是该脚本匹配的网址,支持通配符匹配
// @include		 这个也是该脚本匹配的网址,支持通配符匹配
// @exclude		 这个和 iclude 配合使用,排除匹配到的网址,优先于 include
// @grant        none 
// ==/UserScript==

match 和 include 是有一点区别的,区别在这?match更严格一点,它对 * 角色的含义设定了更严格的规则,详情点击这里

关于元数据更详细介绍:点击这里 或者 点击官方博客介绍

如果你不会 不想自己写一个脚本的话,那你可以去 油猴脚本网站 搜索你需要的脚本。


脚本需求分析迭代过程

我不是做好需求分析再写代码的,因为当时脑子里面只有一个朦胧的概念而已,我就打算边写边实践边改代码。

v0.1.0版本
一开始的插件是一点开博文就自动点赞和评论
然后我发现我打开自己的博文也会点赞评论…我去,不行,得改( ̄. ̄)


v0.1.0版本
在脚本文件头加了排除自动点赞评论自己博文的一行代码

// @exclude      https://blog.csdn.net/mukes/article/details/*

刷着刷着博文,我发现一刷新页面又会自动评论Σ( ° △ °|||)︴,那我刷新几次岂不是就会评论几次?不行,得改( ̄▽ ̄)"


v0.3.0 版本
本来想写一个函数判断自己是否评论点赞了。结果突然冒出来一个想法:有一些文章对我零作用啊,我不想点赞和评论 >_<,为什么不改成手动一键点赞评论?so~此版本 卒╮(╯▽╰)╭


v0.4.0 版本
在浏览器页面添加一个按钮,直接把自动点赞评论改为手动点击在这里插入图片描述
虽然我前端渣得要死,但是我也知道这个按钮是真的丑,又得改╮( ̄▽ ̄)╭


v0.5.0 版本
我又双叒叕发现了一个问题,这个按钮固定在标签页的话,如果我阅读到文章末尾,那我岂不是又要按 “home” 键回到文章开头再点赞???能一步就一步,干嘛要变成两步呢?(>_<)

于是我找啊找,呀嘿~发现了 ≧◇≦
在这里插入图片描述

如何所示,csdn 博文页面一共有两个地方在阅读滑动鼠标的时候仍然保持不动的
那么选择哪里放按钮就显而易见了

按钮改了位置后,发现样式和csdn 自带的不一致(似乎混进了一个奇怪的东西 ):
似乎混进了一个奇怪的东西

留着 v1.0.0 版本再改吧,我已经看到胜利在向我招手了 b( ̄▽ ̄)d


v1.0.0 版本
此处插播一条消息:关于以上版本号为何这般命名,请参考我的另一篇博文:版本号命名规则
要改和网页端一样的样式的话,那就需要用到一个神奇的按键 F12 了,用谷歌浏览器打开博文:https://blog.csdn.net/mukes/article/details/103480696,点击 F12 ,跳出 DevTools 工具窗口,如下图:
-1

点击图中的箭头
然后再把鼠标移动到网页上一键三连这个元素上

由上图就可以获得很多信息了,比如 一键三连这个按钮的宽和高是74x28
背景颜色是#E33E33,字体颜色为#FFFFFF

想要看更具体的信息只需要点击一下该元素,然后在 DevTools 窗口中会自动跳到对应该元素的代码,而窗口的右边则是该元素详细的样式信息。
在这里插入图片描述

在样式我们又可以知道 一键三连 这个元素的圆角的边框属性为:border-radius: 4px;
因此我们只需要改我们这个插件按钮的:
宽和高,字体颜色,底色,以及圆角边框的属性就可以了,其他的细节就不用扣了。

button.style.width = "90px"; //按钮宽度
button.style.height = "20px"; //按钮高度
button.style.align = "center"; //文本居中
button.style.color = "white"; //按钮文字颜色
button.style.background = "#b46300"; //按钮底色
button.style.borderRadius = "4px"; //按钮四个角弧度

最终代码

// ==UserScript==
// @name          csdn 手动一键点赞评论
// @namespace     https://blog.csdn.net/mukes
// @version       0.0.6
// @description  打开博文,点击一键点赞评论按钮后自动为该博文点赞以及评论,前提是已经登录 csdn 博客
// @author       mukes
// @include      *://blog.csdn.net/*/article/details/*
// @include      *.blog.csdn.net/article/details/*
// ==/UserScript==
(function() {'use strict';var button = document.createElement("button"); //创建一个按钮button.textContent = "一键点赞评论"; //按钮内容button.style.width = "90px"; //按钮宽度button.style.height = "28px"; //按钮高度button.style.align = "center"; //文本居中button.style.color = "white"; //按钮文字颜色button.style.background = "#e33e33"; //按钮底色button.style.border = "1px solid #e33e33"; //边框属性button.style.borderRadius = "4px"; //按钮四个角弧度    button.addEventListener("click", clickBotton) //监听按钮点击事件function clickBotton(){setTimeout(function(){var comment=["针不戳呀,写的针不戳!","学习了!b( ̄▽ ̄)d","本文不错( ̄ˇ ̄),值得学习!(= ̄ω ̄=)","感谢博主的分享!(^ ^)/▽▽\(^ ^)","感谢博主,你的文章让我得到一些收获!( ̄ˇ ̄)"];var STARTNUMBER = -1;var ENDNUMBER = 5;var temp_count = Math.floor(Math.random()*(STARTNUMBER-ENDNUMBER+1))+ENDNUMBER ;//取STARTNUMBER-ENDNUMBER之间的随机数 [STARTNUMBER,ENDNUMBER]document.getElementsByClassName("tool-item-comment")[0].click(); //打开评论区document.getElementById("comment_content").value = comment[temp_count]; //随机把一条预先写好的评论赋值到评论框里面document.getElementsByClassName("btn-comment")[0].click(); //发表评论document.getElementById("is-like").click() //点赞。把该代码注释后只会一键评论},100);// setTimeout 0.1秒后执行}var like_comment = document.getElementsByClassName('toolbox-list')[0]; //getElementsByClassName 返回的是数组,所以要用[] 下标like_comment.appendChild(button); //把按钮加入到 x 的子节点中})(); //(function(){})() 表示该函数立即执行

最终效果:
在这里插入图片描述
动态展示效果:
在这里插入图片描述
ps:如果你觉得博主写得针不戳的话,欢迎点赞收藏 ~(゜ - ゜) つロ 干杯~
如有疑问,欢迎留言讨论~
pps:如何想测试脚本可行性的话,欢迎在此界面测试,同时也把你的个性留言秀出来吧๑乛◡乛๑

最后:
感谢以下 3 位博主在我编写这个脚本时做出的巨大贡献:
https://blog.csdn.net/u010598445/article/details/108880602
https://blog.csdn.net/jayandchuxu/article/details/79113755
https://dyqdzh.blog.csdn.net/article/details/107399298

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


http://chatgpt.dhexx.cn/article/awltCnuq.shtml

相关文章

浏览器辅助神器:油猴脚本使用教程

「油猴脚本」是一段脚本代码&#xff0c;通过它可以让浏览器实现各种各样的扩展功能&#xff0c;和浏览器扩展的作用类似。 比如获去链接重定向、微博页面精简、去广告等&#xff0c;相当于给浏览器开了个挂&#xff0c;可以说是浏览器的辅助神器了&#xff01; 相信很多用户…

4r照片尺寸是多大_4R照片是什么尺寸,跟普通照片有什么区别? – 手机爱问

2013-01-25 照片尺寸对照表像素&#xff0c;规格&#xff1f; 数码相机和可冲印照片最大尺寸对照表&#xff1a; 照片规格(英寸) (厘米) (像素) 1寸 2。5*3。5cm 413*295 身份证大头照 3。 3*2。2 390*260 2寸 3。5*5。3cm 626*413 小2寸(护照) 4。8*3。3cm 567*390 5 寸 5x3。…

计算机一级照片错误怎么改,电脑上要怎么修改一寸照片大小

怎么修改电脑上的一寸照片大小呢&#xff1f;只要借助电脑自带的画图软件&#xff0c;就能解决一寸照片的修改问题&#xff0c;其他照片也适用此法。 1、找到想要修改的一寸照&#xff0c;右击&#xff0c;在下拉列表中选择【打开方式】——【画图】。“画图”软件是我们电脑自…

Java 应用一般架构

原文链接&#xff1a;http://www.iteye.com/news/31115 当我们架设一个系统的时候通常需要考虑到如何与其他系统交互&#xff0c;所以我们首先需要知道各种系统之间是如何交互的&#xff0c;使用何种技术实现。 1. 不同系统不同语言之间的交互 现在我们常见的不同系统不同语…

JVM与Java体系结构

JVM与Java体系结构 前言 开发人员如何看待上层框架 一些有一定工作经验的开发人员&#xff0c;打心眼儿里觉得SSM、微服务等上层技术才是重点&#xff0c;基础技术并不重要&#xff0c;这其实是一种本末倒置的“病态”。 如果我们把核心类库的API比做数学公式的话&#xff…

JAVA//JAVA基本程序设计架构

java applet是在网页中运行的java程序。 1. JAVA整形 JAVA的整形范围和运行的机器无关&#xff0c;这就导致JAVA可移植性较好。 长整型后加上L/l&#xff1b;十六进制有前缀0x或0X&#xff1b;八进制前缀为0&#xff1b; 从JAVA7开始&#xff0c;可在数值前面加上0b/0B表示…

JAVA开发与架构(一个JAVA架构师的必备技能和素养)

最近领导有问&#xff0c;你们眼中的JAVA架构师当如何&#xff1f;特此在这篇博文中回复。 架构一词的解析&#xff1a;软件架构来源于软件工程&#xff0c;而软件工程的思想来源于建筑工程。所以架构一词其实也是来源于建筑学。从建筑学中我们很容易理解架构。在建筑学中&…

Java架构的演变

1、概述 本文以淘宝作为例子&#xff0c;介绍从一百个并发到千万级并发情况下服务端的架构的演进过程&#xff0c;同时列举出每个演进阶段会遇到的相关技术&#xff0c;让大家对架构的演进有一个整体的认知&#xff0c;文章最后汇总了一些架构设计的原则。 2、基本概念 在介…

JAVA架构之路(一)

JAVA架构之路 目前java主流技术介绍&#xff0c;图片来自网络截图&#xff0c;如觉得侵权请联系删除。 JAVA主流开源技术栈 为什么使用微服务架构 微服务架构 主流领先技术 JAVA基础知识学习路线池

史上最全最详细的Java架构师成长路径图,程序员必备

从新手码农到高级架构师&#xff0c;要经过几步&#xff1f;要多努力&#xff0c;才能成为为人倚重的技术专家&#xff1f;本文将为你带来一张程序员发展路径图&#xff0c;但你需要知道的是&#xff0c;天下没有普适的道理&#xff0c;具体问题还需具体分析&#xff0c;实践才…

Java三种技术架构

Java语言的三种技术架构&#xff1a; J2SE&#xff1a;JAVA 2 Platform Standard Edition (标准版) SE是为开发普通桌面和商务应用程序开发的解决方案&#xff0c;这是学习其他两者的基础。 J2EE &#xff1a;JAVA 2 Platform Enterprise Edition &…

java中的各种架构

常见包名的含义&#xff1a; dao 数据库操作&#xff0c;增删改查&#xff0c;jdbc中具体的数据处理model 一般是javabean对象&#xff0c;与数据库的某个表相关联service 供外部调用&#xff0c;等于对dao&#xff0c;model等进行了包装bean getter,setter方法util:工具类&am…

JAVA架构与开发(JAVA架构是需要考虑的几个问题)

在企业中JAVA架构师主要负责企业项目技术架构&#xff0c;企业技术战略制定&#xff0c;技术框架搭建&#xff0c;技术培训和技术攻坚的工作。 在JAVA领域&#xff0c;比较多的都是web项目。用于解决企业的数字化转型。对于JAVA架构师而言&#xff0c;平时对项目的架构主要考虑…

全网最全的 Java 各类技术栈架构图汇总(建议收藏)

点击上方“Java基基”&#xff0c;选择“设为星标” 做积极的人&#xff0c;而不是积极废人&#xff01; 每天 14:00 更新文章&#xff0c;每天掉亿点点头发... 源码精品专栏 原创 | Java 2021 超神之路&#xff0c;很肝~中文详细注释的开源项目RPC 框架 Dubbo 源码解析网络应…

Java架构介绍(一)

java语言平台架构 java语言的平台架构由下面四部分组成&#xff1a; java编程语言java的class文件格式java应用程序接口&#xff08;API&#xff09;java虚拟机 这四部分的关系如下图所示&#xff1a; 可以看到&#xff0c;java编程环境分为两个时期&#xff0c;编译时和运行时…

Java架构

1.java 类加载器架构 2. JVM 架构 3. Java 技术体系 4.线程运行架构 5.Java 体系&#xff08;编译与运行&#xff09;结构 6.JMS 技术架构 JMS(Java Message Service)组成特点&#xff1a; JMS provider 实现JMS接口和规范的消息中间件&#xff0c;也就是我们的MQ服务器 JMS p…

笔记本电脑 (天梯图) 处理器 和 显卡

游戏本一般是i5-9300H起步&#xff0c;低于这个标准的游戏本不建议购买。另外需要注意的是不要被10代CPU唬住了&#xff0c;拿最近卖的比较火的i5-10210U来说&#xff0c;其性能还不如8代的i5-8300H 我们以移动版GTX1650为分界线&#xff0c;游戏本的显卡一般都在此之上&#…

处理器CPU天梯图,显卡天梯图(性能排名图)

本文转载自&#xff1a; https://www.cnblogs.com/little-white/p/3324393.html 作者&#xff1a;little-white 转载请注明该声明。 自己网上找的几个图&#xff0c;仅供参考&#xff0c;买电脑可以看看了~

(最新)cpu天梯图 (CPU)- Processor Benchmarks

cpu天梯图&#xff0c;cpu Benchmarks见下列网址&#xff1a; PassMark CPU Benchmarks - Single Thread PerformanceCPU UserBenchmarks - 1206 Processors ComparedCPU-Z Benchmark - CPU-Z VALIDATORProcessor Benchmarks - Geekbench BrowserCPU Benchmarks for Lucas-Leh…