// ==UserScript== // @name 隐心百度云盘钥匙 // @namespace http://tampermonkey.net/ // @version 1.2 // @description 百度云盘钥匙,在浏览器中打开云盘分享链接后,会自动填写云盘提取码。 // @author Yisin // @match *://pan.baidu.com/* // @match *://*/* // @require https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.0/jquery.min.js // @grant GM_xmlhttpRequest // @supportURL meek.com.cn // @downloadURL none // ==/UserScript== (function() { 'use strict'; var isBDY = false; var URL_STORE = {}; function getLocationKey(){ var key = ""; var url = document.location.href; if(url.indexOf('//pan.baidu.com/s/') != -1){ key = document.location.pathname.substring(4); } else if(url.indexOf('//pan.baidu.com/share/init') != -1){ key = getUrlParam(null, "surl"); } if(/^1[^\s]+/g.test(key)){ key = key.substring(1); } return key; } function getUrlKey(url){ var key = ""; if(url.indexOf('//pan.baidu.com/s/') != -1){ key = url.substring(url.indexOf('//pan.baidu.com/s/') + 18); } else if(url.indexOf('//pan.baidu.com/share/init') != -1){ key = getUrlParam(url, "surl"); } if(/^1[^\s]+/g.test(key)){ key = key.substring(1); } return key; } function getUrlParam(u, param) { var url = u || location.href; var reg = new RegExp("(" + param + ")=([^&#]*)", "g"), matched = url.match(reg); return matched && matched[0] ? matched[0].replace(param + "=", "") : null; } function LoadPass(bdyKey, callback){ var bdyUrl = 'https://pan.baidu.com/s/' + bdyKey; var bdyPass = ""; if(window['localStorage']){ bdyPass = localStorage.getItem(bdyUrl); } if(bdyPass && bdyPass.length == 4){ console.info(bdyUrl,"->",bdyPass); if(callback){ callback(bdyPass); } if(isBDY){ $('.verify-input input').val(bdyPass); $('.g-button.g-button-blue-large').click(); } } else { var weburl = 'http://ypsuperkey.meek.com.cn/api/items/BDY-' + bdyKey + '?access_key=4fxNbkKKJX2pAm3b8AEu2zT5d2MbqGbD&client_version=web-client&' + new Date().getTime(); GM_xmlhttpRequest({ method: 'GET', url: weburl, headers: {"Accept": "application/json"}, contentType: "application/json", dataType: 'json', onload: function(response){ if(response.statusText == 'OK'){ try{ var res = JSON.parse(response.responseText); bdyPass = res.access_code; console.info(bdyUrl,"->",bdyPass); if(bdyPass && bdyPass.length == 4){ if(window['localStorage']){ localStorage.setItem(bdyUrl, bdyPass); } if(callback){ callback(bdyPass); } if(isBDY){ $('.verify-input input').val(bdyPass); $('.g-button.g-button-blue-large').click(); } } }catch(e){} } } }); } } function CheckUrl(weburl, callback){ GM_xmlhttpRequest({ method: 'GET', url: weburl, contentType: "text/html", onload: function(response){ callback(response.statusText == 'OK'); } }); } function ShowBDYPass(url, pass){ if(URL_STORE[url]){ return; } URL_STORE[url] = pass; var $div = $('#BDY-DIV-BOX'); if(!$div.length){ $div = $('
'); $div.css({ "position": "fixed", "width": "450px", "height": "100px", "overflow": "auto", "font-size": "13px", "top": 0, "left": '-435px', "border": "2px solid #5555ff", "background": "#ff0000", "color": "#ffffff", "z-index": 9999999 }); $div.hover(function(){ $div.css('left', 0); }, function(){ $div.css('left', '-435px'); }); $('html').append($div); } if(pass == '链接已失效'){ pass = ',' + pass; } else { pass = ',提取码:' + pass; } $div.append('
' + url + pass + '
'); } function BaiduPan(url){ this.url = url; this.code = ''; } BaiduPan.prototype = { load: function(){ var that = this; var bdyKey = getUrlKey(that.url); if(bdyKey){ CheckUrl(that.url, function(suc){ if(suc){ LoadPass(bdyKey, function(pass){ ShowBDYPass(that.url, pass); }); } else { ShowBDYPass(that.url, "链接已失效"); } }); } } }; if(/^(http|https):\/\/pan.baidu.com\//g.test(document.location.href)){ isBDY = true; var bdyKey = getLocationKey(); if(bdyKey){ LoadPass(bdyKey); } } else { var html = $('body').html(); if(html){ var arrs = html.match(/(http|https):\/\/pan.baidu.com\/s\/[a-zA-Z0-9_-]+/g); if(arrs && arrs.length){ var index = 0; for(var i = 0; i < arrs.length; i++){ console.info(arrs[i]); new BaiduPan(arrs[i]).load(); } } } } })();