auto_key_verification
// ==UserScript==
// @name auto_verification
// @version 1.1
// @description auto_key_verification
// @author we684123
// @match https://eportal.lhu.edu.tw/index.do?*
// @match https://eportal.lhu.edu.tw/login.do
// @grant GM_xmlhttpRequest
// @namespace none
// @connect script.google.com
// @connect script.googleusercontent.com
// @run-at document-end
// @domain https://script.google.com/
// ==/UserScript==
//=============================================================================
(function() {
//以下設定用
var account = ""; //選填,預設為空,你的龍華【帳號】,沒填不會幫忙輸入
var password = ""; //選填,預設為空,你的龍華【密碼】,沒填不會幫忙輸入
var identity = ""; //選填,預設為空,你的【提供用戶】身分碼(取得身分碼網址)
var auto_login = true; //必填,預設為true,要不要自動按下 "登入" (登入首頁)
var auto_next = true; //必填,預設為true,要不要自動按下 "下一步" (gmail確認)
var auto_check = true; //必填,預設為true,要不要自動按下 "確認" (登入失敗頁面)
var reslog = true; //必填,預設為false,載入回應log? //目前無用
var wait_second = 15; //必填,預設為15秒,最低為1,當你網頁載入慢到炸的時候,
//此程式要等你的電腦多久,如果圖片一直載不下來,你的瀏覽器可能會跟你說有大量腳本在運行
//此乃正常現象,點"繼續"就好,如果還是不行,建議不要靠自動輸入,改手動吧。
//以上填完就好囉---------------------------------------------------
//位置定義
var login_page = "eportal.lhu.edu.tw/index.do";
var input_account = document.getElementsByTagName('input')[0];
var input_password = document.getElementsByTagName('input')[1];
var input_verification = document.getElementById("authcode");
var verification_image = document.getElementsByTagName('img')[1];
var login_button = document.getElementsByTagName('input')[3];
var server_url = "https://script.google.com/macros/s/AKfycbxAzS75EtzljCtbvJ6l8EyQQISJmUIJ_V7gBHZh_BZ1BMEv_lvt/exec";
//=============================================================================
if (String(location.href).search(login_page) > 1) {
var d01 = new Date();
//console.log(d01);
var img = verification_image;
var imgbase64 = getBase64Image(img);
//console.log("img.complete?");
//console.log(img.complete);
if (imgbase64.length < 30) {
console.log("imgbase64.length < 30");
if (wait_second < 1) { //用個防呆
var wait_second = 1;
}
for (var i = 0; i < wait_second * 10; i++) {
sleep(100); //0.1s
console.log("i = " + i);
console.log(img.complete);
var imgbase64 = getBase64Image(img);
if (imgbase64.length > 30) {
break;
}
}
}
console.log(imgbase64);
//之所以有下面這行這麼醜是因為gs傲嬌,搞成json居然不吃,只好字串處理了
var post_data = identity + "~" + String(imgbase64);
console.log("post_data:");
console.log(post_data);
//==========================================================================
GM_xmlhttpRequest({ //post
method: "POST",
url: server_url,
data: post_data,
headers: {
"Content-Type": "application/x-www-form-urlencoded"
},
onload: function(response) {
//console.log (response.responseText);
console.log("get response");
try {
var ans = JSON.parse(response.responseText)["return"];
console.log("ans = ");
console.log(ans);
var ans2 = "null";
//====================================================================
if (ans == "沒資源,請升級vip或手動輸入") {
ans2 = "沒資源,請升級vip或手動輸入";
} else if (ans.length == 3) { //vision有時候會失誤,就當盡量救。
ans2 = "I" + ans;
} else {
ans2 = ans;
}
//====================================================================
if (account) {
input_account.value = account;
}
if (password) {
input_password.value = password;
}
} catch (e) {
console.log("error text:");
console.log(e);
}
console.log("end print");
input_verification.value = ans2; //寫入
var d02 = new Date();
//console.log(d02);
console.log("d02-d01");
console.log(d02-d01);
if (auto_login) {
if (!(ans2 == "沒資源,請升級vip或手動輸入")) {
login_button.click();
}
}
}
});
} else if (String(location.href).search('eportal.lhu.edu.tw/login.do') > 1) {
//這是如果有跳轉頁面的話才需要的,所以這裡就不模組化了。
try {
if (auto_next) { //自動"下一步"
document.getElementsByTagName('a')[0].click();
}
} catch (e) {
if (auto_check) { //自動點"確認"
document.getElementsByTagName('button')[0].click();
}
}
} else {
console.log("唉呀呀...失手了030....");
}
//alert('030 end //');
})();
//=============================================================================
function getBase64Image(img) {
var canvas = document.createElement("canvas");
canvas.width = img.width;
canvas.height = img.height;
var ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0);
var dataURL = canvas.toDataURL("image/png");
return dataURL.replace(/^data:image\/(png|jpg);base64,/, "");
}
//=============================================================================
function sleep(milliseconds) {
var start = new Date().getTime();
for (var i = 0; i < 1e7; i++) {
if ((new Date().getTime() - start) > milliseconds) {
break;
}
}
}
//=============================================================================