AnswerTip

http://tampermonkey.net/

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

// ==UserScript==
// @name         AnswerTip
// @description  http://tampermonkey.net/
// @version      0.32
// @author       polygon
// @icon         data:image/png;base64,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
// @match        https://changjiang.yuketang.cn/*/exercise/*
// @match        https://changjiang-exam.yuketang.cn/exam/*
// @match        https://changjiang.yuketang.cn/*
// @match        https://www.xuetangx.com/*/exercise/*
// @match        https://mooc1.chaoxing.com/work/doHomeWorkNew*
// @match        https://examination.xuetangx.com/exam/*
// @match        https://onlineexamh5new.zhihuishu.com/*
// @grant        GM_xmlhttpRequest
// @grant        GM_addStyle
// @grant        GM_getValue
// @grant        GM_setValue
// @grant        GM_addElement
// @run-at       document-end
// @namespace http://tampermonkey.net/
// ==/UserScript==
(function() {
    const order = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I']
    const n = 10
    const wait = 3  // s
    const configs = {
        'onlineexamh5new.zhihuishu.com': {
            main: '.examPaper_subject',  // 答案要展示的父级元素节点,会append到该Node下
            question: '.subject_describe',  // 问题,题目所在位置,其innerText属性是问题(不含选项)
            options: '.subject_node p span, .node_detail p',  // 每个选项的位置,会根据它匹配多个Node
            select: 'onChecked',  // 点击后,相应属性增加值,因为有的选项需要多次点击,所以增加此用于判断是否点击上
            // 一些自定义添加的答案区域style
            style: `
                background-color: #f5f5f5;
                height: 200px;
                overflow-y: scroll;
            `
        },
        'changjiang.yuketang.cn': {
            main: '.item-body',  // 答案要展示的父级元素节点,会append到该Node下
            question: '.problem-body',  // 问题,题目所在位置,其innerText属性是问题(不含选项)
            options: '.item-body ul li label',  // 每个选项的位置,会根据它匹配多个Node
            select: 'is-checked',  // 点击后,相应属性增加值,因为有的选项需要多次点击,所以增加此用于判断是否点击上
            // 一些自定义添加的答案区域style
            style: `
                background-color: #f5f5f5;
            `
        },
        'changjiang-exam.yuketang.cn': {
            main: '.item-body',
            question: 'h4',
            options: '.item-body ul li label',
            select: 'is-checked',
            style: `
                background-color: #f5f5f5;
                height: 200px;
                overflow-y: scroll;
            `
        },
        'www.xuetangx.com': {
            main: '.courseActionLesson',
            question: '.leftQuestion',
            options: '.leftradio',
            select: 'active',
            style: `
                background-color: #fcfcfc;
                border: 1px solid hsla(0,0%,81.2%,.31);
                width: 500px;
                height: 200px;
                overflow-y: scroll;
            `
        },
        'mooc1.chaoxing.com': {
            main: '.TiMu',
            question: '.Zy_TItle div p',
            options: 'ul li',
            select: 'Hover',
            style: `
                background-color: #fcfcfc;
                height: 200px;
                overflow-y: scroll;
            `
        },
        'examination.xuetangx.com': {
            main: '.subject-item',
            question: '.item-body',
            options: 'ul li',
            select: 'is-checked',
            style: `
                background-color: #fcfcfc;
                height: 200px;
                overflow-y: scroll;
            `
        }
    }
    let url = window.location.href
    let host = Object.keys(configs).filter((host) => {
        if (url.includes(host)) {
            return true
        }
        return false
    })
    if (host.length == 0) return
    const config = configs[host[0]]
    GM_addStyle(`
            .answer-polygon {
                ${config.style};
                font-size: 14px;
                border-radius: 4px;
                padding: 10px 15px;
                margin-bottom: 20px;
                text-align: left;
                font-family: -apple-system,SF UI Text,Arial,PingFang SC,Hiragino Sans GB,Microsoft YaHei,WenQuanYi Micro Hei,"sans-serif";
            }
        `)
    let cookieSet = () => {
        GM_xmlhttpRequest({
            method: 'POST',
            url: 'https://tiku.fenbi.com/android/tourist/enter',
            responseType: 'json',
            onload: (xhr) => {
                const data = xhr.response
                let cookie = `userid=${data.userId}; tourist=${data.touristToken};`
                console.log(cookie)
            }
        })
    }
    let clickOption = (optionNodes, text) => {
        optionNodes.forEach((optionNode) => {
            let option_text = optionNode.innerText.replaceAll('[p]', '').replaceAll('[/p]', '').split('\n').slice(-1)
            console.log(option_text, text)
            if (option_text.includes(text)||text.includes(option_text)) {
                let id = setInterval(() => {
                    if (!optionNode.innerHTML.includes(config.select)) {
                        optionNode.click()
                    } else {
                        clearInterval(id)
                    }
                }, 3000)
            }
        })
    }
    let answerParser = (data, answerNode, optionNodes, mainNode) => {
        let s = ''
        let answer_groups = []
        for (let i=0;i<n;i++) {
            let item = data['questionList'][i]
            // 1 题目
            s += item['content'].replaceAll('[', '<').replaceAll(']', '>') + '<br/>'
            const re = new RegExp("[`~!@#$^&*()=|{}':;',\\[\\].<>/?~!@#¥……&*()——|{}【】‘;:”“'。,、?%+_]", 'g');
            let same = item['content'].replaceAll(re, '').includes(mainNode.getAttribute('currentQuestion').replaceAll(re, '').split('\n')[0])
            if (same) {
                answer_groups.push([])
            }
            // 2 正确答案
            // 2.1 选项形式 ABCD
            if (item['correctAnswer'].hasOwnProperty('choice')) {
                let choice_indexes = item['correctAnswer']['choice'].split(',')
                if (choice_indexes.length > 0) {
                    let choice_orders = []
                    for (let j=0;j<choice_indexes.length;j++) {
                        let choice_order = order[parseInt(choice_indexes[j])]
                        if (!choice_orders.includes(choice_order)) {
                            choice_orders.push(choice_order)
                        }
                    }
                    s += '<p>' + choice_orders.join('') + '</p><br/>'
                    // choice_orders = ['A', 'B', 'C']
                    // 选项
                    if (item['accessories'].length > 0){
                        item['accessories'] = item['accessories'].filter((item) => {
                            return (item.hasOwnProperty('options'))
                        })
                        if (item['accessories'].length > 0 && item['accessories'][0]['options'].length > 0) {
                            let options = item['accessories'][0]['options']
                            for (let j=0;j<options.length;j++) {
                                let option = options[j].replace('[p]', '').replace('[/p]', '')
                                if (choice_orders.includes(order[j])) {
                                    if (same) {
                                        answer_groups[answer_groups.length-1].push(options[j])
                                    }
                                    // if (same) clickOption(optionNodes, options[j])
                                    s += `<b>[${order[j]}] ` + option + '</b><br/>'
                                } else {
                                    s += `[${order[j]}] ` + option + '<br/>'
                                }

                            }

                        }
                    }
                }
            // 2.2 文字描述形式
            } else if (item['correctAnswer'].hasOwnProperty('answer')) {
                let text = item['correctAnswer']['answer']
                    .replace('', '<br/>')
                    .replace('\u0001', '<br/>')
                    .replace('\x01', '<br/>')
                    .replace(/-+/g, '<br/>')
                    .replaceAll('[', '<')
                    .replaceAll(']', '>')
                    .replace(';;', ';')
                if (same) {
                    text.replace('<p>', '')
                        .replace('</p>', '')
                        .split('<br/>')
                        .forEach((option_text) => {
                            answer_groups[answer_groups.length-1].push(option_text)
                            // clickOption(optionNodes, option_text)
                        })
                }
                s += '<b>' + text + '</b>'
            }
            if (i < n-1) {
                s += '<br/><hr/><br/>'
            }
        }
        // 判断是否为多选
        let multi = false
        answer_groups.forEach((group) => {
            if (group.length > 1) {
                multi = true
            }
        })
        if (multi) {
            answer_groups = answer_groups.filter((group) => {
                return group.length > 1
            })
        }
        let answers = []
        if (answer_groups.length == 1) {
            answers = answer_groups[0]
        } else {
            // 取交集
            // 得到所有答案元素
            let answer_items = []
            answer_groups.forEach((group) => {
                group.forEach((item) => {
                    if (!answer_items.includes(item)) {
                        answer_items.push(item)
                    }
                })
            })
            answers = answer_items.filter((item) => {
                let b = true
                answer_groups.forEach((group) => {
                    if (!group.includes(item)) {
                        b = false
                    }
                })
                return b
            })
        }
        console.log(answers)
        answers.forEach((answer) => {
            clickOption(optionNodes, answer)
        })
        answerNode.innerHTML = s
    }
    let searchAnswer = (text, answerNode, optionNodes, mainNode) => {
        GM_xmlhttpRequest({
            method: 'POST',
            url: 'https://schoolapi.fenbi.com/college/android/search-item/search?format=ubb&searchType=2&text=' + encodeURIComponent(text),
            responseType: 'json',
            onload: (xhr) => {
                let res = xhr.response
                let enc = res['data']
                if (enc == null) {
                    if (res.errMessage.includes('次数')) {
                        cookieSet()
                    }
                    answerNode.innerHTML = xhr.response.errMessage
                    setTimeout(() => {
                        mainNode.setAttribute('currentQuestion', '')
                    }, wait * 1000);
                    return
                }
                // 解密
                let t = new Date().valueOf()
                GM_xmlhttpRequest({
                    method: 'POST',
                    url: `http://101.35.131.22:5500/decrypt`,
                    headers:  {
                        "Content-Type": "application/x-www-form-urlencoded"
                    },
                    data: `enc=${enc}`,
                    responseType: 'text',
                    onload: (xhr) => {
                        let data = JSON.parse(xhr.responseText)
                        answerParser(data, answerNode, optionNodes, mainNode)
                    }
                })
            },
            ontimeout: function () {
                answer.innerHTML = "No Sugesstion"
            }
        })
    }
    cookieSet()
    let id = setInterval(() => {
        let mainNodes = document.querySelectorAll(config.main)
        if (mainNodes.length == 0) return
        clearInterval(id)
        mainNodes.forEach(function(mainNode) {
            mainNode.setAttribute('currentQuestion', '')
            setInterval(() => {
                let questionNode = mainNode.querySelector(config.question)
                if (questionNode == null) return
                let text = questionNode.innerText.slice(0, 233)
                if (text == mainNode.getAttribute('currentQuestion')) return
                mainNode.setAttribute('currentQuestion', text)
                let answerNode = mainNode.querySelector('.answer-polygon')
                if (answerNode == null) {
                    answerNode = document.createElement('div')
                    answerNode.setAttribute('class', 'answer-polygon')
                    mainNode.append(answerNode)
                }
                try {
                    answerNode.innerHTML = 'searching...'
                } catch {
                    return
                }
                let optionNodes = mainNode.querySelectorAll(config.options)
                searchAnswer(text, answerNode, optionNodes, mainNode)
            }, 6000)
        })
    }, 233)
})();