乐趣区

关于javascript:HOWTO-如何写一个油猴子篡改猴-Tampermonkey脚本

什么是油猴子?

它是一款插件,用来在浏览器里运行自定义的 js 脚本,以补救某些网站的不够人性化问题。

最后油猴子诞生于 firefox 平台,以下面长处取得前端开发者的青眼。最后的油猴子叫 Greasemonkey,起初呈现了新的插件Tampermonkey,它兼容了油猴子的性能,而且反对跨浏览器运行。所以当初大家都广泛称Tampermonkey 为油猴子。

说到浏览器,大家用的可能都不太一样,有用 firefox,chrome 的,也有用微软 edge,苹果 safari 的,还有用 chromium 内核的 360 和 qq 浏览器,以及一些老旧的浏览器。

Tampermonkey 是一款收费的浏览器扩大和最为风行的用户脚本管理器,它实用于 Chrome, Microsoft Edge, Safari, Opera Next, 和 Firefox

360/qq 浏览器应该去他们的利用商店查问
safari 下的插件是付费的(10.15 当前变为付费,safari 的 win 版并不反对插件性能)

如何装置 Tampermonkey?

网址:https://www.tampermonkey.net/
下载适宜本人浏览器的插件

插件能干什么?

有了插件并不能实现什么性能,他只是一个平台,具体性能须要你去以下网站下载。
GreasyFork 和 OpenUserJS

这里曾经有很多的性能脚本,曾经能根本满足需要,搜寻到称心的脚本点击装置即可。Tampermonkey 反对脚本备份导出性能,不便你在不同平台共享脚本。

如果还满足不了需要,那就持续看上面的文章。

如何写一个脚本?

首先,要写一个脚本须要你满足一下技术需要:

  1. 把握 js 脚本
  2. 把握 jquery 模块 (可选)
  3. 正则表达式 (可选)
  4. 用控制台调试
  5. 公布脚本 (可选)

其中,jquery 并不是必须要把握,然而懂了它之后你的效率会事倍功半,不过这个模块有些网站会生效,这时候就须要用到根本 js 管制网页元素了。

创立一个脚本

点击插件按钮,新建脚本:

它蕴含了脚本的形容和构造,作为本人致力的结晶,你须要附上你的集体网站,以及本人的名字。同时对于脚本最重要的是脚本名称,脚本版本号,对脚本的形容,以及匹配网站。

这些内容随时都能够更改,包含脚本名称。

而最上面是脚本的内容,脚本默认启动严格模式,严格的益处是揭示代码出错。

代码搁置的地位就在 Your code here

匹配网站

如果是想全网站匹配,能够应用

// @include     *

如果蕴含具体网址能够用

  • 只匹配 b 站首页
// @match        https://www.bilibili.com/
  • 匹配全网
// @match            http*://*/*

or

// @include *
  • 排除匹配
// @exclude https://mail.google.com/*

扩大反对

因为提到用到 jquery,所以我这里退出了它

// @require https://cdn.staticfile.org/jquery/3.3.1/jquery.min.js

其余扩大依据你的需要来,你能够退出 vue 扩大,但尽量从简,很多插件甚至为了适应更多网站,甚至摈弃了 jquery

写怎么的一个脚本

为某个需要而生。
这里我有个想法,百度网盘在网上宽泛散布,但每次点击都要复制明码,非常麻烦,能不能通过脚本实现大部分性能?

网上有专用脚本来实现网盘的明码复制和主动填充,我这里看看本人是否实现。

试试吧~~

写代码

当初能够正式开始写代码了,但别急,代码在这里写,既艰涩又不直观,关上控制台吧,当然关上控制台之前,先要关上对应的网站,否则关上的控制台也无奈无效起作用。

  • 首先咱们要晓得网站的网址:window.location.href很不便就失去了,你能够在控制台试试看
  • 其次,如何取得网址的二级域名呢?答案是正则:\/\/(.+?\..*?)(\/|\?)

    • 我来简略论述一下正则的作用,它会查问网址以 // 结尾并以 /完结的字符串,某些字符是命令字符,所以要表白它的本意须要在后面加上 \ 形成 \? 来表白本来的意思。
  • 正则有了,那么执行正则失去域名
  • 判断域名如果不是百度网盘,那就搜索网盘和提取码,并把明码通过 # 整合到网盘链接上
  • 非百度网盘网址解决:

    • 全局搜寻 提取码 关键字
    • 而后通过正则 (码 | 问)[\s|:|:]*([a-zA-Z0-9]{4}) 把提取码复制进去
    • 通过对提取码左近的链接,找到跳转链链接:`find(‘a[href*=”pan.baidu.com”]’)
    • 提取它的链接:attr('href')
    • 拼接即可

      • 非凡:某些网站并不会间接贴出百度网站的网址,而是减少了个统计跳转链接,这时候须要 ajax 解析开展
      • 判断非百度网址 if(link.indexOf(‘https://pan.baidu.com’)!=0)
      • 执行解析$.ajax({type:'get',url:link, success:function(res){
      • 通过正则提取解析的百度网盘网址:(https:\/\/pan.baidu.com\/.*?\/(\d|\w|-)+)
      • 拼接网盘网址和提取码
  • 百度网盘网址解决:

    • 正则解析网址上的提取码:#([a-zA-Z0-9]{4})
    • 填入到惟一输入框中:$('input').first().val(提取码)
    • 主动关上,咱比拟懒 $('a[title=" 提取文件 "]').click()
  • 脚本写完,多个网站验证,还蛮不错的

提交脚本到网站

  1. 注册一个 greasyfork.org 的账号
  2. 须要筹备如下内容,不便理解脚本的作用,便于下载

    1. 脚本代码自身
    2. 对脚本的形容
    3. 脚本的运行截图
  3. 提交你的脚本
  4. 当前脚本更新须要再回来更新脚本,记住版本号是须要迭代的

成品

成品网址

    var label = 'Zszen'
    var regexp_codeback = /#([a-zA-Z0-9]{4})/
    var regexp_code = /(码 | 问)[\s|:|:]*([a-zA-Z0-9]{4})/
    var regexp_url = /(https:\/\/pan.baidu.com\/.*?\/(\d|\w|-)+)/
    var url = window.location.href;
    var res = /\/\/(.+?\..*?)(\/|\?)/.exec(url);
    var site = res[1];
    console.log(site);
    //parse
    if(site=="pan.baidu.com"){$('input').first().val(regexp_codeback.exec(url)[1]);
        $('a[title=" 提取文件 "]').click();}else{//deal
        var area = $(':contains(" 提取码 ")').last();
        if(area.length>0) replaceUrl(area);
        area = $(':contains(" 明码:")').last();
        if(area.length>0) replaceUrl(area);
    }

    function replaceUrl(area){var code = regexp_code.exec(area.text())[2];
        var atag = area.find('a[href*="pan.baidu.com"]');
        if(atag.length==0){atag = area.find('a');
        }
        var link = atag.attr('href');
        console.log(link);
        if(link.indexOf('https://pan.baidu.com')!=0){$.ajax({type:'get',url:link, success:function(res){link = regexp_url.exec(res)[0];
                area.find('a').attr('href', link + "#" + code);
            }});
        }else{area.find('a').attr('href', link + "#" + code);
        }
    }

成品网址 撒花, 欢送交换和反对

退出移动版