您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
西南交通大学(swjtu)教务网验证码识别
当前为
// ==UserScript== // @name 通途 // @namespace http://tampermonkey.net/ // @version 2.0 // @description 西南交通大学(swjtu)教务网验证码识别 // @author kaka // @match http://jwc.swjtu.edu.cn/service/login.html // @connect aip.baidubce.com // @connect localhost // @grant unsafewindow // @grant GM_xmlhttpRequest // @grant GM_getValue // @grant GM_setValue // @run-at document-idle // ==/UserScript== (function() { 'use strict'; let setting = { ran_img : document.querySelector("#randomPhoto > img"), //验证码图片元素 ran_img_url:'http://jwc.swjtu.edu.cn/vatuu/GetRandomNumberToJPEG?test='+new Date().getTime(),//验证码图片请求url ran_text : document.getElementById('ranstring'),//验证码填写元素 other_data:['document.querySelector("#password")',//其它必填项#######################自动处理,下次跟新再说(逃 'document.querySelector("#username")'],//必须是字符串,目前想不到更好的解决办法 submit:document.querySelector("#submit2"),//登陆按钮 err_total:5, //各环节允许最大错误 apis:[['iKGARn6BhGgU82W9xzLUIatb','hES0Zae2iLdP1iotenC8zlGo9qA3r0Hc'], ['UjcQzcjSpyYGrXKyPy3dBdoW','65GqKnF5jH3QR9ZEIr8j1ppKWuDRLgI7'], ['Vt2YOiA6CZTnnpaZCEHLTTl6','LIeZdRFmg8odzPCLR8yPPdNeZDKA7yWM'], ['xCEG3OUq0mKzIThFiGPh9AES','mpCK1RI4sFIkX79QDDy6qO2GmCCGC6TS']], } function autologin(){ if(other_data_done()){//其它信息也填了就登陆 setting.submit.click(); } } function enter_login(){ document.onkeydown = function(ev){ var e = ev || event; if(e.keyCode ==13){ setting.submit.click(); } }} function other_data_done(){ if(eval(setting.other_data.join('.value&&')+'.value')){return true} } function get_random_img(callback){ let httpRequest = new XMLHttpRequest(); httpRequest.open('GET',setting.ran_img_url, true); httpRequest.responseType = 'blob'; httpRequest.send(); /** * 获取图片后进行base64编码 */ httpRequest.onreadystatechange = function () { if (httpRequest.readyState == 4 && httpRequest.status == 200) { let img = httpRequest.response; var reader = new FileReader(); reader.readAsDataURL(img); reader.onload = function (e) { setting.ran_img.src = e.target.result; // console.log("!!!!!!!!!!!!!") // console.log(ran_img.src); let bs64_str_temp = e.target.result; let bs64_str = bs64_str_temp.split(",")[1]; callback(bs64_str); } }; }; } function get_access_url(){ let randomapi = setting.apis[setting.ran_api_num]; return 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id='+randomapi[0]+'&client_secret='+randomapi[1] } function setCookie(cname, cvalue, exp) { var d = new Date(); d.setTime(d.getTime() + (exp*1000)-5000); var expires = "expires="+d.toUTCString(); document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/"; } function getCookie(cname) { var name = cname + "="; var ca = document.cookie.split(';'); for(var i = 0; i < ca.length; i++) { var c = ca[i]; while (c.charAt(0) == ' ') { c = c.substring(1); } if (c.indexOf(name) == 0) { return c.substring(name.length, c.length); } } return ""; } function get_access(){ let access_token = getCookie("access_token_"+setting.ran_api_num); if (access_token != "") {//access未过期 setting.access_token =access_token } else { try{ GM_xmlhttpRequest({ method: "GET", url:get_access_url(), onload: function(response) { let access_token =JSON.parse(this.responseText)["access_token"]; let expires =JSON.parse(this.responseText)["expires_in"]; setCookie("access_token_"+setting.ran_api_num, access_token, expires); setting.access_token = access_token } }) } catch(err){ console.log('获取access_token失败'); if( err_access_num<=setting.err_total){ err_access_num+=1; get_access() }else{ setting.ran_text.placeholder = '失败,请自行输入'; debugger; } } } } function get_str(bs64_str){ let request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/webimage"; request_url = request_url + "?access_token=" + setting.access_token; let data = 'image='+encodeURIComponent(bs64_str); //alert(encodeURIComponent(bs64_str)); GM_xmlhttpRequest({ method: 'POST', url: request_url, data: data, headers: { 'charset': 'UTF-8', "Content-Type": "text/plain" }, onload: function(response) { // console.log("baidu_response"); console.log(response.responseText) try{ let temp = JSON.parse(response.responseText); let rand_str = temp['words_result'][0]['words']; if(rand_str.length == 4){ setting.ran_text.value = rand_str; //填写验证码 if(other_data_done()){//其它信息也填了就登陆 setting.submit.click(); } }else{ //重来 throw "解析失败"; } } catch(err){ console.log(err); if(err_num<=setting.err_total){ err_num+=1; console.log(err_num) setting.ran_text.placeholder = '失败,重试中...'; get_random_img(function( bs64_str){ get_str(bs64_str) }); }else{ setting.ran_text.placeholder = '失败,请自行输入'; return; } } } }) } //let bs64_str ; let err_num = 1; let err_access_num = 1; setting.ran_api_num = Math.floor(Math.random() * setting.apis.length) enter_login(); setting.ran_text.placeholder = '尝试获取验证码中'; get_random_img(function( bs64_str){ get_access(); get_str(bs64_str) }); //setInterval(autologin,3000) autologin();//针对浏览器预先填写的用户 })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址