通途

西南交通大学(swjtu)教务网验证码识别

目前為 2020-03-14 提交的版本,檢視 最新版本

// ==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)
    })

})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址