上学吧免会员查看答案

上学吧,免会员免VIP,即可在页面上直接查看答案。

// ==UserScript==
// @name         上学吧免会员查看答案
// @namespace    http://tampermonkey.net/sxb/
// @version      2.2.1
// @icon         data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAAzzGb/M8xm/zPMZv8zzGb/M8xm/zPMZv8zzGb/M8xm/zPMZv8zzGb/M8xm/zPMZv8zzGb/M8xm/zPMZv8zzGb/M8xm/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM8xm/zPMZv8AAAAAAAAAAAAAAAAAAAAAM5n//zOZ//8zmf//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADPMZv8zzGb/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADOZ//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzzGb/M8xm/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzmf//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM8xm/zPMZv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM5n//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADPMZv8zzGb/AAAAADOZ//8zmf//M5n//zOZ//8zmf//M5n//zOZ//8zmf//M5n//zOZ//8zmf//M5n//wAAAAAzzGb/M8xm/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzmf//M5n//wAAAAAAAAAAAAAAAAAAAAAAAAAAM8xm/zPMZv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzmf//AAAAAAAAAAAAAAAAAAAAADPMZv8zzGb/AAAAAAAAAAAAAAAAM5n//zOZ//8zmf//M5n//zOZ//8zmf//M5n//zOZ//8AAAAAAAAAAAAAAAAzzGb/M8xm/wAAAAAzmf//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADOZ//8AAAAAM8xm/zPMZv8AAAAAM5n//zOZ//8zmf//M5n//zOZ//8zmf//M5n//zOZ//8zmf//M5n//zOZ//8zmf//AAAAADPMZv8zzGb/AAAAAAAAAAAAAAAAM5n//wAAAAAAAAAAAAAAADOZ//8AAAAAAAAAADOZ//8AAAAAAAAAAAAAAAAzzGb/M8xm/wAAAAAAAAAAM5n//wAAAAAAAAAAAAAAADOZ//8AAAAAAAAAAAAAAAAAAAAAM5n//wAAAAAAAAAAM8xm/zPMZv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADPMZv8zzGb/M8xm/zPMZv8zzGb/M8xm/zPMZv8zzGb/M8xm/zPMZv8zzGb/M8xm/zPMZv8zzGb/M8xm/zPMZv8zzGb/AAAAAH/+AAB4/gAAf34AAH9+AAB/fgAAQAIAAH8+AAB/3gAAcA4AAF/6AABAAgAAd24AAG72AAB//gAAAAAAAA==
// @description  上学吧,免会员免VIP,即可在页面上直接查看答案。
// @author       chenshao
// @match        *://www.shangxueba.com/ask/*
// @match        *://m.shangxueba.com/ask/*
// @grant        GM_addStyle
// @grant        GM_getValue
// @grant        GM_setValue
// @grant        GM_xmlhttpRequest
// @require      https://cdn.jsdelivr.net/npm/sweetalert@2.1.2/dist/sweetalert.min.js
// @require      https://greasyfork.org/scripts/405869-tips4code/code/tips4Code.js
// @connect      www.yyxxs.cn
// @connect      localhost
// @run-at       document-end
// ==/UserScript==

(function() {
    'use strict';
    /* global swal */
    /* global GM_addStyle */
    /* global GM_getValue */
    /* global GM_setValue */
    /* global GM_info */
    /* global GM_xmlhttpRequest */
    // ==============================参数配置
    let settingData = {
        storageNamePrefix: 'rukai_StorageName_', // 本地储存名称前缀
        // getAnswerUrl: 'http://localhost:8080/sxb/getanswer.php',
        getAnswerUrl: 'http://www.yyxxs.cn/sxb/getanswer.php',
    };
    // 验证码
    let veriCode = {
        getCode: () => {
            return GM_getValue(settingData.storageNamePrefix + 'veriCode');
        },
        setCode: (code) => {
            GM_setValue(settingData.storageNamePrefix + 'veriCode', code);
        }
    }

    // 添加新按钮
    let btnAnswer = {
        id: 'btnTampermonkey',
        innerText: '猴友查看答案',
        title: '免会员免VIP,即可查看答案',
        setStartState: () => {
            let btn = document.querySelector('#rukai_zjbtn');
            btn.removeEventListener('click', getRemoteAnswer);
            btn.innerText = '正在查询答案...';
        },
        setStopState: () => {
            let btn = document.querySelector('#rukai_zjbtn');
            btn.addEventListener('click', getRemoteAnswer);
            btn.innerText = btnAnswer.innerText;
        }
    }

    // 是否移动端
    let checkIsMobile = function() {
        let host = window.location.hostname;
        let isMobile = false;
        if (host.split('.')[0] === 'm') isMobile = true;
        return isMobile;
    }

    // 问题类别(ask:普通  jxjy:继续教育)
    let checkAskType = function() {
        let pathName = window.document.location.pathname;
        let askType = pathName.substring(1, pathName.substr(1).indexOf('/') + 1);
        return askType;
    }

    // 创建按钮
    let createBtnAnswer = function() {
        let askType = checkAskType();
        let btn;
        switch (askType) {
        case 'ask':
            btn = document.createElement('a');
            btn.className = 'zjbtn';
            break;
        }
        Object.assign(btn, btnAnswer);
        btn.id = 'rukai_zjbtn';
        btn.style.cssText = 'margin-top: 10px; background: red;';
        btn.addEventListener('click', getRemoteAnswer);
        return btn;
    }

    // #region 服务端查询答案
    let getCurrentUrl = (isEncode) => {
        let url = window.location.href;
        // url编码
        if (isEncode) {
            url = encodeURIComponent(url);
        }
        return url;
    };
    let getRemoteAnswer = () => {
        // 提示输入验证码
        let code = veriCode.getCode();
        // code = '';
        console.log('开始发起服务端请求,验证码为:' + code);
        if (!code) {
            showTips4Code();
            return;
        }
        // PC端、移动端
        let client = checkIsMobile() ? 'mobile' : 'pc';
        // 问题类别(ask:普通  jxjy:继续教育)
        let askType = checkAskType();
        // 发起请求
        let details = {
            method: 'GET',
            responseType: 'json',
            timeout: 20000, // 20秒超时
            url: settingData.getAnswerUrl + `?url=${getCurrentUrl(true)}&code=${code}&client=${client}&askType=${askType}&ver=${GM_info.version}&t=` + new Date().getTime(),
            onloadstart: function() {
                btnAnswer.setStartState();
            },
            onload: function(res) {
                // 分3种情况处理返回结果:0正常返回(参考源网站)、1验证码不正确(调用showTips4Code)、100其它错误(调用showErrorTips)
                console.log(res);
                if (res.status === 200) {
                    switch (res.response.retCode) {
                    case 0: // 正常返回
                        let answer = res.response.answer;
                        btnAnswer.setStopState();
                        processAnswer(answer, client);
                        break;
                    case 1: // 验证码不正确
                        showTips4Code('<u>验证码不正确</u> 或 <u>验证码已过期(请从公众号获取最新验证码)</u>');
                        break;
                    default: // 其它错误
                        showErrorTips(res, res.response.answer);
                        break;
                    }
                } else {
                    showErrorTips(res);
                }
            },
            ontimeout: (res) => {
                showErrorTips(res);
            },
            onerror: (res) => {
                showErrorTips(res);
            }
        };
        try {
            GM_xmlhttpRequest(details);
        } catch (error) {
            showErrorTips(error);
        }
    }
    // 处理服务端返回的答案(使用更加简单的方式显示答案,不再参考源网站处理方式)
    let processAnswer = function(answer, client) {
        switch (client) {
        case 'pc':
            $('.zjbtndiv').html(answer);
            // document.querySelector('#daanmaxdiv').innerHTML = answer;
            break;
        case 'mobile':
            $('#zuijiadiv').html(answer);
            $('#zuijiadiv').next().hide();
            // document.querySelector('#daanmaxdiv').innerHTML = answer;
            break;
        }
    }
    // 出错 统一提示
    let showErrorTips = (error, errorMessage) => {
        console.error(error);
        btnAnswer.setStopState();
        let errorContent = '请稍后重试或到公众号反馈,收到反馈后我会第一时间修复!';
        if (errorMessage) {
            errorContent = errorMessage;
        }
        swal('Sorry,查询答案出错', errorContent, 'error');
    }
    // #endregion 服务端查询答案

    // 在【查看最佳答案】下面新增按钮
    function setZjBtn(btn) {
        let askType = checkAskType();
        console.log(askType);
        let btnZJ = null;
        switch (askType) {
        case 'ask':
            btnZJ = document.querySelector('.zjbtn');
            if (!btnZJ) btnZJ = document.querySelector('.buymember');// 悬赏问题
            break;
        }
        if (!btnZJ) {
            setTimeout(() => {
                setZjBtn(btn);
            }, 300);
        } else {
            console.log('找到按钮【查看答案】:');
            // console.log(btnZJ);
            let parent = btnZJ.parentNode;
            parent.insertBefore(btn, btnZJ.nextSibling);
        }
    }

    // ########################################################
    const tips4Code = document.createElement('div');
    tips4Code.innerHTML = `
        <div id="rukai_divCode">
            <div class="rukai_CodeInput">
                <div id="rukai_error"></div>
                <input id="rukai_code" style="width: 32%" type="text" placeholder="输入验证码" />
                <button id="rukai_submitBtn" style="width: 80px" type="submit" class="rukai_submitBtn rukai_submitBtn-red">确定</button>
            </div>
            <div class="rukai_CodeImg"><img src="data:image/jpeg;base64,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" alt="微信扫描二维码" /></div>
            <div class="rukai_CodeTips">
                <div class="rukai_CodeTitle">获取验证码步骤(绝不收费)</div>
                <p>【1】扫描二维码,关注微信公众号</p>
                <p>【2】在公众号中回复 <strong style="color:#f00">上学</strong>,即可获得验证码</p>
                <p>【3】在上面中输入验证码,点击【确定】,就可以查询答案了</p>
                <p class="rukai_CodeLast">注:验证码不定期更新,如提示验证码过期,则需要按上面步骤重新获取</p>
            </div>
            <div class="rukai_clear"></div>
        </div>
    `;
    function showTips4Code(message) {
        swal({
            // title: '免费获取验证码步骤',
            content: tips4Code,
            // button: 'O K',
            button: false,
            className: 'swal-modal-autowidth'
        }).then((value) => {
            btnAnswer.setStopState();
        });
        // 验证码不正确或过期:给出提示
        let divErrorMessage = document.querySelector('#rukai_error');
        if (message) {
            divErrorMessage.innerHTML = message;
            divErrorMessage.style.display = '';
        } else {
            divErrorMessage.style.display = 'none';
        }
        document.querySelector('#rukai_code').focus();
        let submitBtn = document.querySelector('#rukai_submitBtn');
        submitBtn.removeEventListener('click', setCodeFromInput);
        submitBtn.addEventListener('click', setCodeFromInput);
    }

    function setCodeFromInput() {
        let code = document.querySelector('#rukai_code').value.trim();
        if (code.length > 0) {
            veriCode.setCode(code);
            swal.close();
            getRemoteAnswer();
        }
    }
    GM_addStyle(`
        #rukai_divCode{}
        #rukai_divCode .rukai_CodeInput{
            margin-bottom: 30px;
            margin-top: 50px;
        }
        #rukai_divCode .rukai_CodeTitle{
            font-size: 30px;
            font-weight: bold;
            margin-bottom: 20px;
        }
        #rukai_divCode .rukai_CodeImg{
            float: left;
        }
        #rukai_divCode .rukai_CodeImg img{
            width: 200px;
        }
        #rukai_divCode .rukai_CodeTips{
            float: left;
            text-align: left;
            padding-top: 10px;
        }
        #rukai_divCode .rukai_CodeTips p{
            white-space:nowrap;
            margin-bottom: 15px;
        }
        }
        #rukai_divCode .rukai_CodeTips p.rukai_CodeLast{
            margin-bottom: 0px;
        }
        #rukai_divCode .rukai_clear{
            clear: both;
            margin-bottom: 30px;
        }
        .swal-modal-autowidth{
            width: auto;
        }

        #rukai_code{
            width: 100%;
            border: 1px solid #ccc;
            padding: 7px 0;
            background: #F4F4F7;
            border-radius: 3px;
            padding-left:5px;
            -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075);
            box-shadow: inset 0 1px 1px rgba(0,0,0,.075);
            -webkit-transition: border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;
            -o-transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s;
            transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s
        }
        #rukai_code:focus{
            border-color: #66afe9;
            outline: 0;
            -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);
            box-shadow: inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)
        }
        /* 验证码 */
        .rukai_submitBtn {
            line-height: 1.499;
            position: relative;
            display: inline-block;
            font-weight: 400;
            white-space: nowrap;
            text-align: center;
            background-image: none;
            border: 1px solid transparent;
            -webkit-box-shadow: 0 2px 0 rgba(0,0,0,0.015);
            box-shadow: 0 2px 0 rgba(0,0,0,0.015);
            cursor: pointer;
            -webkit-transition: all .3s cubic-bezier(.645, .045, .355, 1);
            transition: all .3s cubic-bezier(.645, .045, .355, 1);
            -webkit-user-select: none;
            -moz-user-select: none;
            -ms-user-select: none;
            user-select: none;
            -ms-touch-action: manipulation;
            touch-action: manipulation;
            height: 32px;
            padding: 0 15px;
            font-size: 14px;
            border-radius: 4px;
            color: rgba(0,0,0,0.65);
            background-color: #fff;
            border-color: #d9d9d9;
        }
        .rukai_submitBtn-primary {
            color: #fff;
            background-color: #1890ff;
            border-color: #1890ff;
            text-shadow: 0 -1px 0 rgba(0,0,0,0.12);
            -webkit-box-shadow: 0 2px 0 rgba(0,0,0,0.045);
            box-shadow: 0 2px 0 rgba(0,0,0,0.045);
        }
        .rukai_submitBtn-red {
            color: #fff;
            background-color: #FF5A44;
            border-color: #FF5A44;
            text-shadow: 0 -1px 0 rgba(0,0,0,0.12);
            -webkit-box-shadow: 0 2px 0 rgba(0,0,0,0.045);
            box-shadow: 0 2px 0 rgba(0,0,0,0.045);
        }
        #rukai_error{
            color: #f00;
            margin-bottom: 30px;
        }
        /*修改上学吧网站的css*/
        span.gre{
            display: none;
        }
        div.replyCon{
            margin: 0px 0 10px 50px;
            /*line-height: 30px;*/
        }
        div.replyCon_mobile{
            margin: 0px 0 25px 0px;
        }
    `);

    // ==================================== 逻辑代码开始
    console.log('脚本 START');
    let btn = createBtnAnswer();
    setZjBtn(btn);
    console.log('脚本 END');
    // 查答案功能今天检查正常 #########
})();