油猴脚本编写初探:自动登录下载Oracle产品
Weblogic、JDK等都是Oracle产品,大家都知道Oracle的官网都是要注册登录之后才能下载产品的,实在非常麻烦。所以利用油猴脚本将这一系列过程脚本化:以后无需注册和登录,访问即可下载。😳😳😳
油猴介绍
大家都知道油猴是浏览器的插件,油猴GreaseMonkey(GM) 用户脚本的原理相当于在网页上插入一段 JavaScript(xx.js) 脚本,以实现对网页的定制和修改。
JS 所能实现的功能,GM 脚本都能实现。但 GM 它的强大并不限与此,还能实现如跨域请求(GM_xmlhttpRequest)、更改剪切版(GM_setClipboard)等原生 JS 无法实现的功能。
用户脚本的元数据🌟
元数据格式
// ==UserScript== |
元数据范例
// ==UserScript== |
值
属性名 | 作用 |
---|---|
name | 油猴脚本的名字 |
namespace | 命名空间,用来区分相同名称的脚本,一般写成作者名字或者网址就可以了 |
version | 脚本的版本号 |
icon | 可以指定脚本的图标,显示在脚本管理器中 |
description | 描述,用来告诉用户这个脚本是干什么用的 |
author | 作者名字 |
match | 这是一个数组,包含了脚本要运行的网页地址。可以使用通配符和正则表达式 |
exclude | 与match属性相反,指定脚本不应运行的网页地址 |
grant | 在元数据中声明使用哪些API函数 |
require | 如果脚本依赖其他js库的话,引用一个外部链接的脚本作为库使用(在运行脚本之前先加载其他库),常见用法是加载jquery。例如:// @require http://cdn.staticfile.org/jquery/2.1.1/jquery.min.js 【也可以引用本地文件】 |
resource | 用于定义脚本所需的外部资源,如CSS文件、图片等 |
connect | 当用户使用GM_xmlhttpRequest请求远程数据的时候,需要使用connect指定允许访问的域名,支持域名、子域名、IP地址以及*通配符 |
@run-at | 指定脚本的执行时机,不同的应用场景可能需要不同的执行时机 ,其中@run-at 的取值可以参见下表 |
元数据标记@run-at 的取值如下
取值 | 描述 |
---|---|
document-start | 指定脚本在DOM树开始的时候执行,需要脚本尽早执行的时候添加此声明。 |
document-end | 指定脚本在DOM数据加载完毕的时候执行 |
document-idle | 页面加载完毕的时候执行。当元数据没有@run-at声明时,脚本默认在此时机执行 |
main-menu | X浏览器的扩展声明,表示此脚本不自动执行,用户通过主菜单扩展选项手动执行。 |
context-menu | X浏览器扩展声明,表示此脚本不自动执行,用户通过长按菜单的扩展选项执行 |
tool-menu | X浏览器扩展声明,表示此脚本不自动执行,用户通过页面工具菜单的扩展选项执行 |
元数据标记@grant 的取值GM API
油猴提供了很多强大的 API,它们可以使很操作变得相当简单
注意每个 API 在使用前需要在元数据中用 @grant 进行声明,若你不打算使用这些 API,应当声明 @grant none
旧的 API GM_*
通常是同步的,而新的 API GM.*
是异步的
旧 API | 新 API | 说明 |
---|---|---|
GM_info | GM.info | 返回当前脚本的元数据 |
GM_addStyle | 为网页添加 CSS | |
GM_setValue | GM.setValue | 在本地储存值(只能是字符串),你可以将这个储存看作是 localStorage 一样的东西 |
GM_getValue | GM.getValue | 获取使用储存的值 |
GM_deleteValue | GM.deleteValue | 删除储存的值 |
GM_listValues | GM.listValues | 返回一个由所有储存值的键名组成的数组 |
GM_getResourceText | 获取元数据中定义的 @resource 的资源内容 | |
GM_getResourceURL | GM.getResourceUrl | 获取元数据中定义的 @resource 资源的 URL(base64 编码后的data:协议地址) |
GM_openInTab | GM.openInTab | 新标签页打开指定地址(用来绕过 Chrome 会阻止所有非用户触发的window.open的限制) |
GM_registerMenuCommand | 向油猴插件菜单中添加脚本指令(通常用于打开自己写的设置界面或者执行代码之类的) | |
GM_setClipboard | GM.setClipboard | 复制指定内容到剪贴板 |
GM_xmlhttpRequest | GM.xmlHttpRequest | 发送网络请求,且允许跨域 |
GM.notification | 浏览器通知 |
代码实现:自动登录下载Oracle产品🌟🌟🌟🌟
1:发现账号密码🌟
https://login.oracle.com/mysso/signon.jsp
有很多公开的能用的账号密码,可以直接用。(为了避免失效也可以自己注册用自己的。)
erfede@yopmail.com |
2:找准id🌟
有两种实现 其实差不多
3:脚本实现:auto_login_oracle🌟
// ==UserScript== |
4:脚本实现:auto_login_oracle_by_input🌟
// ==UserScript== |
其他:设置加载本地脚本
设置教程
https://bbs.tampermonkey.net.cn/thread-1550-1-1.html
思考🌟🌟
利用这些还能 设置自动定时刷新那些安全产品网页:防止漏看安全事件(值守必备)🌟、屏蔽网站广告🌟、知乎免登录看全文🌟、获取百度网盘直链🌟、CSDN免登录复制🌟、网易云免登录下载🌟等等。