auto_verification

auto_key_verification

  1. // ==UserScript==
  2. // @name auto_verification
  3. // @version 1.1
  4. // @description auto_key_verification
  5. // @author we684123
  6. // @match https://eportal.lhu.edu.tw/index.do?*
  7. // @match https://eportal.lhu.edu.tw/login.do
  8. // @grant GM_xmlhttpRequest
  9. // @namespace none
  10. // @connect script.google.com
  11. // @connect script.googleusercontent.com
  12. // @run-at document-end
  13. // @domain https://script.google.com/
  14. // ==/UserScript==
  15.  
  16. //=============================================================================
  17. (function() {
  18. //以下設定用
  19. var account = ""; //選填,預設為空,你的龍華【帳號】,沒填不會幫忙輸入
  20. var password = ""; //選填,預設為空,你的龍華【密碼】,沒填不會幫忙輸入
  21. var identity = ""; //選填,預設為空,你的【提供用戶】身分碼(取得身分碼網址)
  22. var auto_login = true; //必填,預設為true,要不要自動按下 "登入" (登入首頁)
  23. var auto_next = true; //必填,預設為true,要不要自動按下 "下一步" (gmail確認)
  24. var auto_check = true; //必填,預設為true,要不要自動按下 "確認" (登入失敗頁面)
  25. var reslog = true; //必填,預設為false,載入回應log? //目前無用
  26. var wait_second = 15; //必填,預設為15秒,最低為1,當你網頁載入慢到炸的時候,
  27. //此程式要等你的電腦多久,如果圖片一直載不下來,你的瀏覽器可能會跟你說有大量腳本在運行
  28. //此乃正常現象,點"繼續"就好,如果還是不行,建議不要靠自動輸入,改手動吧。
  29.  
  30. //以上填完就好囉---------------------------------------------------
  31.  
  32. //位置定義
  33. var login_page = "eportal.lhu.edu.tw/index.do";
  34. var input_account = document.getElementsByTagName('input')[0];
  35. var input_password = document.getElementsByTagName('input')[1];
  36. var input_verification = document.getElementById("authcode");
  37. var verification_image = document.getElementsByTagName('img')[1];
  38. var login_button = document.getElementsByTagName('input')[3];
  39. var server_url = "https://script.google.com/macros/s/AKfycbxAzS75EtzljCtbvJ6l8EyQQISJmUIJ_V7gBHZh_BZ1BMEv_lvt/exec";
  40.  
  41. //=============================================================================
  42. if (String(location.href).search(login_page) > 1) {
  43. var d01 = new Date();
  44. //console.log(d01);
  45. var img = verification_image;
  46. var imgbase64 = getBase64Image(img);
  47. //console.log("img.complete?");
  48. //console.log(img.complete);
  49. if (imgbase64.length < 30) {
  50. console.log("imgbase64.length < 30");
  51. if (wait_second < 1) { //用個防呆
  52. var wait_second = 1;
  53. }
  54. for (var i = 0; i < wait_second * 10; i++) {
  55. sleep(100); //0.1s
  56. console.log("i = " + i);
  57. console.log(img.complete);
  58. var imgbase64 = getBase64Image(img);
  59. if (imgbase64.length > 30) {
  60. break;
  61. }
  62. }
  63. }
  64. console.log(imgbase64);
  65.  
  66. //之所以有下面這行這麼醜是因為gs傲嬌,搞成json居然不吃,只好字串處理了
  67. var post_data = identity + "~" + String(imgbase64);
  68. console.log("post_data:");
  69. console.log(post_data);
  70. //==========================================================================
  71. GM_xmlhttpRequest({ //post
  72. method: "POST",
  73. url: server_url,
  74. data: post_data,
  75. headers: {
  76. "Content-Type": "application/x-www-form-urlencoded"
  77. },
  78. onload: function(response) {
  79. //console.log (response.responseText);
  80. console.log("get response");
  81. try {
  82. var ans = JSON.parse(response.responseText)["return"];
  83. console.log("ans = ");
  84. console.log(ans);
  85. var ans2 = "null";
  86. //====================================================================
  87. if (ans == "沒資源,請升級vip或手動輸入") {
  88. ans2 = "沒資源,請升級vip或手動輸入";
  89. } else if (ans.length == 3) { //vision有時候會失誤,就當盡量救。
  90. ans2 = "I" + ans;
  91. } else {
  92. ans2 = ans;
  93. }
  94. //====================================================================
  95. if (account) {
  96. input_account.value = account;
  97. }
  98. if (password) {
  99. input_password.value = password;
  100. }
  101. } catch (e) {
  102. console.log("error text:");
  103. console.log(e);
  104. }
  105. console.log("end print");
  106. input_verification.value = ans2; //寫入
  107. var d02 = new Date();
  108. //console.log(d02);
  109. console.log("d02-d01");
  110. console.log(d02-d01);
  111. if (auto_login) {
  112. if (!(ans2 == "沒資源,請升級vip或手動輸入")) {
  113. login_button.click();
  114. }
  115.  
  116. }
  117. }
  118. });
  119. } else if (String(location.href).search('eportal.lhu.edu.tw/login.do') > 1) {
  120. //這是如果有跳轉頁面的話才需要的,所以這裡就不模組化了。
  121. try {
  122. if (auto_next) { //自動"下一步"
  123. document.getElementsByTagName('a')[0].click();
  124. }
  125. } catch (e) {
  126. if (auto_check) { //自動點"確認"
  127. document.getElementsByTagName('button')[0].click();
  128. }
  129. }
  130. } else {
  131. console.log("唉呀呀...失手了030....");
  132. }
  133. //alert('030 end //');
  134. })();
  135. //=============================================================================
  136. function getBase64Image(img) {
  137. var canvas = document.createElement("canvas");
  138. canvas.width = img.width;
  139. canvas.height = img.height;
  140. var ctx = canvas.getContext("2d");
  141. ctx.drawImage(img, 0, 0);
  142. var dataURL = canvas.toDataURL("image/png");
  143.  
  144. return dataURL.replace(/^data:image\/(png|jpg);base64,/, "");
  145. }
  146. //=============================================================================
  147. function sleep(milliseconds) {
  148. var start = new Date().getTime();
  149. for (var i = 0; i < 1e7; i++) {
  150. if ((new Date().getTime() - start) > milliseconds) {
  151. break;
  152. }
  153. }
  154. }
  155. //=============================================================================