西南交通大学(swjtu)教务网验证码识别
当前为
// ==UserScript==
// @name 通途
// @namespace http://tampermonkey.net/
// @version 1.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';
function get_random_img(callback){
let httpRequest = new XMLHttpRequest();//第一步:建立所需的对象 请求图片
httpRequest.open('GET','http://jwc.swjtu.edu.cn/vatuu/GetRandomNumberToJPEG?test='+new Date().getTime(), true);//第二步:打开连接 将请求参数写在url中 ps:"./Ptest.php?name=test&nameone=testone"
httpRequest.responseType = 'blob';
httpRequest.send();//第三步:发送请求 将请求参数写在URL中
/**
* 获取图片后进行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) {
let ran_img = document.querySelector("#randomPhoto > img"); //换图片
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_str(access_token,bs64_str){
let request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/webimage";
request_url = request_url + "?access_token=" + 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){
document.getElementById('ranstring').value = rand_str; //填写验证码
}
else{ //重来
throw "解析失败";
}
}
catch(err){
console.log(err);
if(err_num<=3){
err_num+=1;
console.log(err_num)
document.querySelector("#ranstring").placeholder = '失败,重试中...';
get_random_img(function( bs64_str){
let random_str = parse_img(bs64_str);
});
}else{
document.querySelector("#ranstring").placeholder = '失败,请自行输入';
debugger;
}
}
}
})
}
function parse_img(bs64_str){
GM_xmlhttpRequest({
method: "GET",
url: 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=Wd8p7GGkRpb6KXB4Qu5fByvj&client_secret=tQAxfDVDoW9OzreQY2VsR17TP9pTaDUy',
onload: function(response) {
let access_token =JSON.parse(this.responseText)["access_token"];
get_str(access_token,bs64_str);
}
})
}
//let bs64_str ;
let err_num = 1;
document.querySelector("#ranstring").placeholder = '尝试获取验证码中';
get_random_img(function( bs64_str){
parse_img(bs64_str)
})
})();