+ 我要发布
我发布的 我的标签 发现
浏览器扩展
斑点象@Edge

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的账号 需要准备如下内容,方便了解脚本的作用,便于下载