今天早上来写了一个 油猴脚本。用于自动填写百度云盘的提取码。
之前我也使用过其他的油猴脚本来自动获取提取码,感觉不好用,所以按照自己的操作和想法写了一个简单的脚本。
脚本的工作原理:
- 将固定格式的百度网盘链接复制到浏览器。
- 获取到浏览器请求的url,需要解码。
- 解码后获取到百度网盘的url和提取码。
- 重定向url 并输入提取码。
- 最后点击提取按钮。
这些本来是可以手动操作的,不过我嫌麻烦就自己写脚本来弄了。本着分享学习的态度发帖,如有问题请联系交流。
使用方法:
-
固定的格式复制到浏览器。
https://pan.baidu.com/s/1DJ9B1vQKwRw7ps_ULwb92g 提取码: t4hp
或者 不含空格
https://pan.baidu.com/s/1DJ9B1vQKwRw7ps_ULwb92g提取码:t4hp
- 回车等待就能直接打开提取内容。
脚本内容:
// ==UserScript==
// @name 获取到请求的url 然后转码,将链接地址和提取码提取出来,然后再自动输入,点击提取。
// @namespace http://tampermonkey.net/
// @version 1.0
// @description 自用
// @AuThor weiv
// @match https://pan.baidu.com/*
// @grant none
// ==/UserScript==
(function() {
'use strict';
const code_key = 'bd_get_code'
const regex_code_str = /提取码[:|:]\s*(\w){4}/
// 获取到请求的url 然后转码,将链接地址和提取码提取出来,然后再自动输入,点击提取。
let req = new XMLHttpRequest()
req.open('GET', document.location, false)
req.send(null)
const response_URL = req.responseURL
const decode_url = decodeURIComponent(response_URL)
if(isExeistCode(decode_url)) {
const url_code = getUrlCode(decode_url)
setLocalStorage(code_key, url_code[1])
window.location.href = url_code[0]
} else {
const code = getLocalStorage(code_key)
document.querySelector("#accessCode").value = code
document.querySelector('.submit-a.g-button-blue-large').click()
}
// 判断是否存在提取码。
function isExeistCode (decode_url) {
return regex_code_str.test(decode_url)
}
// 将解码后的url 进行提取。
function getUrlCode (decode_url) {
// 试了一下使用正则表达式提取url 和提取码。 不太方便,所以还是使用截取的方式简单点。
const bd_url = decode_url.substring(decode_url.indexOf('http'), decode_url.indexOf('提')).trim()
// 获取到 提取码:XXXX
const regex_code = /(\w){4}/
const get_code_str = regex_code_str.exec(decode_url)[0]
const get_code = regex_code.exec(get_code_str)[0]
return [bd_url, get_code]
}
// 将提取码存入缓存。
function setLocalStorage(setKey, setValue) {
// 增加元素
localStorage.setItem(setKey, setValue)
}
// 获取缓存的提取码。
function getLocalStorage(getKey) {
// 获取元素
return localStorage.getItem(getKey)
}
})();
内容分享结束。
|