zoukankan      html  css  js  c++  java
  • firefox油猴脚本编写.md

    油猴脚本编写

    简介

    油猴可以方便的用自定义js内嵌到网页中。支持多种浏览器。

    用户脚本是什么?

    用户脚本是一段代码,它们能够优化您的网页浏览体验。安装之后,有些脚本能为网站添加新的功能,有些能使网站的界面更加易用,有些则能隐藏网站上烦人的部分内容。在 Greasy Fork 上的用户脚本都是由用户编写并向全世界发表的,您可以免费安装,轻松体验。

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

    例子

    消除浏览器的警告弹窗(alert)

    • 需求: 在一个刷课网页上,当页面时间达到一定时间后,会弹出confirm()alert()弹窗,保证没有挂机行为。

    • 思路: 使用js劫持,重写confirm()alert()函数

    步骤

    1. 新建用户脚本image-20210220112543953

    image-20210220112643813

    1. 进行重写alert()confirm()函数
    // ==UserScript==
    // @name         MYTEST
    // @namespace    http://tampermonkey.net/
    // @version      0.1
    // @description  try to take over the world!
    // @author       You
    // @match        http://xxxx/*
    // @run-at       document-start 
    // @grant        none
    // ==/UserScript==
    
    (function() {
       'USE SCRIPTS';
        window.confirm = function(s) {
            return true;
        };
        window.alert = function(s) {
            console.log(s);
        }
    })();
    

    说明: 第8行的document-start保证脚本在网页加载之前运行,这样可以覆盖掉网页本身的confirm()alert()函数。

    ==UserScript== 与 ==/UserScript== 之间的内容是元注释,写给油猴插件看的,常用的标签:
    
        name 脚本名字
        namespace 命名空间,一般用你的域名就好
        version 版本,每次检查更新,版本变化了才会真正更新脚本
        match 指在什么网站生效,可以使用 * 通配符
        include 同 match
        exclude 排除的网站
        icon 脚本图标,可以是 url 或 base64
        require 依赖的资源,可以加载 cdn 的库。比如我需要加载 otplib 的库,总不能把源代码拷一份在脚本里吧。
        run-at 脚本运行的时机:
            document-start 尽早执行;
            document-body 有 body 标签时执行;
            document-end 网页加载完(DOMContentLoaded);
            document-idle 在 DOMContentLoaded 之后执行,这是默认值;
            context-menu 只 Chrome 系浏览器有效,在右键菜单时执行
        grant 是申请的权限,可以有多个,值是需要使用的函数的方法
    
    常用需要声明权限的方法有:
    
    // @grant        GM_getValue //获取保存的值
    // @grant        GM_setValue //保存设置项
    // @grant        GM_openInTab //在新标签页打开
    // @grant        GM_xmlhttpRequest //ajax 请求,声明这个权限才能跨域
    // @grant        GM_setClipboard //访问剪切板
    // @grant        GM_registerMenuCommand //在插件图标上注册一个菜单
    // @grant        unsafeWindow //访问全局的 window 对象,不声明的话访问的 window 其实是沙盒 window 并不能影响全局
    

    一般的js函数劫持:

    (function(){
        var _alert = alert;
        windows.alert = function(s){
            // 劫持代码
            _alert(s);
            // ...
        }
    })();
    
  • 相关阅读:
    常见 Web 安全攻防总结
    传统方式接口测试返回值json验证
    Springboot中RestTemplate -- 用更优雅的方式发HTTP请求
    mock简单的json返回
    MySQL数据库学习笔记(五)----MySQL字符串函数、日期时间函数
    MySQL数据库学习笔记(四)----MySQL聚合函数、控制流程函数(含navicat软件的介绍)
    MySQL数据库学习笔记(三)----基本的SQL语句
    MySQL数据库学习笔记(一)----MySQL 5.6.21的安装和配置(setup版)
    python实现广度优先搜索
    php递归
  • 原文地址:https://www.cnblogs.com/nsfoxer/p/14420061.html
Copyright © 2011-2022 走看看