首页 > 其他分享 >如何使用Tampermonkey开发并使用一个浏览器脚本

如何使用Tampermonkey开发并使用一个浏览器脚本

时间:2023-11-27 15:36:18浏览次数:44  
标签:脚本 box 浏览器 使用 网页 GM Tampermonkey 页面

准备工作

简介

Tampermonkey 是一款强大的浏览器扩展,它允许您定制网页的行为,改变和优化网页的展示方式或者功能以满足个人需求。通过编写自定义脚本,您可以实现许多有趣的功能,从自动化任务到改进网页界面,一切尽在掌握。
脚本一般指用户脚本(User Script),他是一段 Javascript 代码,它们能够优化您的网页浏览体验。

安装

首先,确保您已安装了 Tampermonkey 扩展。
油猴官方下载地址:http://www.tampermonkey.net/
image

油猴脚本网站:https://greasyfork.org/zh-CN/scripts
image

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

脚本编写和使用

新建脚本

点击 Tampermonkey 图标,然后选择 "添加新脚本"。
这将打开一个编辑器,您可以在其中编写脚本代码。
image

跳转到编写代码界面:
image

常见用户脚本标题

属性名 作用
name 油猴脚本的名字
namespace 命名空间,用来区分相同名称的脚本,一般写成作者名字或者网址就可以了
version 脚本的版本号
icon 可以指定脚本的图标,显示在脚本管理器中
description 描述,用来告诉用户这个脚本是干什么用的
author 作者名字
match 这是一个数组,包含了脚本要运行的网页地址。可以使用通配符和正则表达式
exclude 与match属性相反,指定脚本不应运行的网页地址
grant 用于指定脚本需要的特定浏览器权限,如GM_addStyle、GM_xmlhttpRequest等
require 如果脚本依赖其他js库的话,可以使用require指令,在运行脚本之前先加载其他库,常见用法是加载jquery
resource 用于定义脚本所需的外部资源,如CSS文件、图片等
connect 当用户使用GM_xmlhttpRequest请求远程数据的时候,需要使用connect指定允许访问的域名,支持域名、子域名、IP地址以及*通配符

常见API介绍

Tampermonkey 提供了一系列常用的 API,使您能够与页面交互和修改其行为。以下是一些常见的 Tampermonkey API:

权限名 功能
GM_setValue(name,defaultValue),GM_getValue(name,value) 用于在浏览器中存储和获取用户脚本的数据。这可以用于保存设置或其他信息。
GM_xmlhttpRequest(details) 允许用户脚本进行XMLHttpRequest请求,以便与远程服务器进行通信,获取数据等。
GM_setClipboard(data, info) 用于将文本复制到剪贴板,使用户脚本可以方便地与剪贴板交互。
GM_log(message) 用于在控制台中输出调试信息,方便脚本调试,可以使用F12开发者工具查看。
GM_addStyle(css) 像网页中添加自定义css,修改网页外观。
GM_notification(details, ondone), GM_notification(text, title, image, onclick) 设置网页通知,请参考文档获取用法。
GM_openInTab(url, loadInBackground) 允许在新标签页中打开指定的URL。
GM_registerMenuCommand(name, callback, options_or_accessKey) 允许用户脚本在浏览器中向用户脚本的菜单中添加一个新条目,并指定在选择菜单项时要调用的函数。

详情请查看油猴脚本文档。

实现CSDN 免登录复制

为了更好地理解脚本的工作原理,我们以一个实际示例来说明如何编写一个脚本。下面是一个用于允许用户在 CSDN 网站上免登录复制代码的脚本示例:

// ==UserScript==
// @name         CSDN 免登录复制
// @version      1.0
// @icon         https://blog.csdn.net/favicon.ico
// @description  CSDN 免登录复制,净化页面
// @match        *://*.csdn.net/*
// @grant        GM_addStyle
// ==/UserScript==

(function () {
  "use strict";

  // 添加样式以隐藏特定元素
  GM_addStyle(`
    /* 选择了所有 <pre> 和 <code> 元素,并设置它们的 user-select 属性为 auto
    // 这个规则的效果是允许用户可以复制这些元素中的文本内容*/
    pre,
    code {
      user-select: auto !important;
    }

   /* 这一部分选择了一系列元素,并将它们的 display 属性设置为 none !important。
    这个规则的效果是隐藏了页面上这些元素,以实现页面去除广告的目的。*/
    #blogExtensionBox,
    .hide-article-box,
    .insert-baidu-box,
    .signin,
    .wwads-horizontal,
    .wwads-vertical,
    .blog-top-banner,
    .blog_container_aside,
    .programmer1Box,
    .recommend-box,
    .recommend-nps-box,
    .template-box,
    .hide-preCode-box {
      display: none !important;
    }

    /* 将页面主要内容区域的宽度设置为100% */
    main {
      width: 100% !important;
    }

    /* 这个规则的效果是将页面中的某些元素的高度设置为自动,为了确保这些元素的内容可以根据需要进行展开。*/
    #article_content,
    main div.blog-content-box pre.set-code-hide {
      height: auto !important;
    }
  `);

  	// 移除登录限制类名
  	let buttons = document.querySelectorAll(".hljs-button");
  	buttons.forEach(button => {
   		button.classList.remove("signin");
   	  button.setAttribute("data-title", "免登录复制");
	  });

 	 // 添加点击事件以防止剪贴板劫持
	  let codeElements = document.querySelectorAll("code");
 		codeElements.forEach(code => {
    	code.setAttribute("onclick", "mdcp.copyCode(event)");
 	 });
})();
脚本注入页面前

脚本注入页面前,页面可能会有一些限制,如复制受限,脚本的注入使您能够绕过这些限制。
image

登录前
click绑定拦截了复制方法,复制按钮绑定了signin类限制访问
image

登录后
image

注入脚本

image

脚本注入页面后
image

发布脚本

上传脚本

油猴脚本支持好几个网站,其中目前最主流的是GreasyFork,登录这个网站注册一个账号,然后进入用户页面选择发布你编写的脚本,然后填写脚本代码和各项信息。
https://greasyfork.org/zh-CN/users
image
``
这样脚本就可以提交上去了,其他人也可以搜索到并安装脚本了。

标签:脚本,box,浏览器,使用,网页,GM,Tampermonkey,页面
From: https://www.cnblogs.com/leayun/p/17859448.html

相关文章

  • js 闭包使用一例
    有如下js:functionstartTimer(sentence){alert('start');sentence.longPressTimer=setTimeout(function(){alert(sentence);//此处sentence为undefined},1000);}functionendTimer(sentence){alert('end');cle......
  • 遇到Qt使用UI文件无法连接信号问题
    1.手动加载UI文件代码如下: 以上代码pushButton按钮在状态切换时,无法接收到信号,经过调试发现调用"connect"时变量“lineWidget”各个成员都是空指针,但是"connect"函数并没有报异常。2.查看"setupUI"函数,其片段如下: 可以发现,其实创建对象都是在"setupUi"中完成。3......
  • Linux使用堡垒机
    一、linux系统使用1.安装puttygensudoapt-getinstallputty2.进入pem所在文件执行转换命令puttygenmykey.pem-omykey.ppk即可生成ppk文件。chmod700mykey.pem控制权限才可以用linux使用putty即可二、macos/linux的堡垒机方法:chmod600~/secret/wang.pe......
  • 使用github rest api 按pr维度统计工作量思路
    1.准备组装必要参数1.基本参数在header中需要包含验证token2.功能参数#{baseApi}/#{org}/#{repo}/功能参数?since=#{date}&until=#{date}&per_page=#{num}&page=#{num}since和until用来确定时间范围,per_page和page组合用来翻页2.根据时间段获取pr对应commit的sha值......
  • 英语词根单词记忆. 包含大量自己对于词根的理解. 方便大家记忆使用.
    2021-12-17,9点25======下面我们用vscode打开.来编辑文件.使用这个软件的原因是因为,这个软件只要你tab同级的行号的右边就会自动出现一个向下箭头,就可以进行折叠,方便快速找到逻辑层次.#资料来源考研英语词汇大全词根+词缀记忆法俞敏洪编著https://www.etymonline.c......
  • Live Server插件打开浏览器时:该网页无法正常运作,127.0.0.1未发送任何数据的问题解决
    一、问题复现今天使用VsCode写HTML代码时,使用LiveServer打开预览时,发现浏览器显示“该网页无法正常运作,127.0.0.1未发送任何数据”的问题。二、解决办法1.在左侧工具栏找到扩展商店,找到LiveServer,然后点击对应的小齿轮,进入插件设置。2.选择ExtensionSettings3.进入......
  • java集合框架(一)Map的常见使用及循环的五中方式
    Map循环遍历的五种方法先使用Map方法定义数据Mapmap=newHashMap();map.put(0,"张三");map.put(1,"李四");map.put(2,"王五"); 1.通过key的set集合进行遍历,然后通过key来取map的valueSetset=map.keySet();for(Object......
  • 为什么 IDEA 建议去掉 StringBuilder,而要使用 “+” 拼接字符串?
    作者:京东零售姜波来源:京东云开发者社区各位小伙伴在字符串拼接时应该都见过下面这种提示:内容翻译:报告StringBuffer、StringBuilder或StringJoiner的任何用法,这些用法可以用单个java.lang.String串联来替换。使用字符串串联可以使代码更短、更简单。只有当得到的串联至少与原......
  • 如何将tcpdump抓取的数据包存入文件,供wireshark使用
    使用tcpdump命令的-w参数 tcpdump-nvvv-ieth0port34999-wredis-34999.pcap 注意:要使用-w的方式,将抓到的包,保存到文件中,不要使用 >或者>>重定向的方式,这样生成的文件wireshark程序无法读取到,会报文件错误。......
  • 4款优质国产办公软件,支持内网环境使用,可免费试用
    在现代社会中,办公软件已成为企业必不可少的工具之一。与此同时,随着信息安全和数据保护意识的提升,越来越多的企业开始关注是否有适用于内网环境的国产办公软件。今天给大家分享4款优质国产办公软件,它们不仅支持内网环境使用,还可免费试用,帮助企业提高办公效率。01、小鱼易连(视频会议......