javascript - HOWTO 如何写一个油猴子(篡改猴 / Tampermonkey)脚本 - 个人文章 - SegmentFault 思否
什么是油猴子?
它是一款插件,用来在浏览器里运行自定义的js脚本,以弥补某些网站的不够人性化问题。
最初油猴子诞生于firefox平台,以上面优点获得前端开发者的青睐。最初的油猴子叫Greasemonkey,后来出现了新的插件Tampermonkey,它兼容了油猴子的功能,而且支持跨浏览器运行。所以现在大家都普遍称Tampermonkey为油猴子。
Tampermonkey 是一款免费的浏览器扩展和最为流行的用户脚本管理器,它适用于 Chrome, Microsoft Edge, Safari, Opera Next, 和 Firefox。
如何安装Tampermonkey ?
网址: https://www.tampermonkey.net/
下载适合自己浏览器的插件
如何写一个脚本 ?
首先,要写一个脚本需要你满足一下技术需求:
掌握js脚本
掌握jquery模块 (可选)
正则表达式 (可选)
用控制台调试
发布脚本 (可选)
其中,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()
脚本写完,多个网站验证,还蛮不错的
提交脚本到网站
注册一个greasyfork.org的账号
需要准备如下内容,方便了解脚本的作用,便于下载
参考