[脚本]中国大学生在线刷题 已更新

欲与妄想   ·  3个月前   ·   经验教程

脚本更新日期[2021-3-9]

基础安装

1.你需要在电脑上下载一个谷歌浏览器
下载地址为:https://www.google.cn/intl/zh-CN/chrome/


打开后是类似这样的界面

2.先做一些基础的设置。
你需要设置浏览器的默认引擎

3.配置引擎设置

选择百度搜索引擎。



下面开始正题

首先需要先下载一个Tampermonkey 油猴脚本

复制该链接

https://chrome.zzzmh.cn/info?token=dhdgffkkebhmkfjojejmpbldmpobfkfo

到谷歌浏览器的url地址中,然后回车,点击备用下载

这是一个rar压缩文件,需要解压,完成后有三个文件

保留第一个文件

然后在下图的操作中会用到

然后打开更多工具--拓展程序,把那个第一个文件拖进去,就会出现下面的界面

它会问你什么有危害主题啥的,你选择继续,但是会出现无法从该网站添加应用、扩展程序和用户脚本

你需要新建一个标签页,在地址栏输入:

chrome://flags/#extensions-on-chrome-urls

并按回车键


将值改为enabled


重启chrome

第二步:启用开发者模式


刷新该页面

再次添加扩展程序就可以了。

浏览器问题就看上面,没有就点击添加拓展程序

然后谷歌的工具栏会多一个东西(也就是插件)

再点击它

会出来接下来的界面,我们需要点击添加新脚本

把下图全选的内容删除(也就是起始内容),我们需要采用网上的脚本

复制下面的到这个新建的用户脚本中。

JavaScript

// ==UserScript==
// @name         大学生在线助手 - Pro
// @version      0.16
// @description  目前可以自动完成四史活动,这是包含题库的版本
// @author       bukkia
// @match        http://ssxx.univs.cn/*
// @match        https://ssxx.univs.cn/*
// @require https://cdn.jsdelivr.net/npm/ajax-hook@2.0.3/dist/ajaxhook.min.js
// @license        GPL3 license
// @namespace    https://univs.yattaze.eu.org
// @grant none
// ==/UserScript==
const config = {
    token: '倒卖废物死全家', // 有 rate limit 其它不限制
    loop: true, // true 为开启循环作答,会自动开始,结束了自动点返回(个人赛)
    //team: true, // true做团队的 注释取消掉就不再弹窗了
    target: [4,5,6,7] // 4 英雄篇 5 复兴篇 6 创新篇 7 信念篇
}
let answer = {}
let question_data = {}
ah.proxy({
    onRequest: async (config, handler) => {
        if(config.url.indexOf('/cgi-bin/race/answer/') > -1){
            let body = JSON.parse(config.body)
            if(answer[body.question_id] && answer[body.question_id].length > 0){
                body.answer = answer[body.question_id]
                question_data.answer = answer[body.question_id]
                config.body = JSON.stringify(body)
            }
        }
        handler.next(config)
    },
    onError: (err, handler) => {
        alert('出现错误,网络问题,可能是大学生在线网站挂了,也可能是题库挂了')
        location.reload()
    },
    onResponse: async (response, handler) => {
        if(response.config.url.indexOf('/cgi-bin/') > -1)
            try {
                let body = JSON.parse(response.response)
                if(response.config.url.indexOf('/cgi-bin/race/question/') > -1){
                    Math.random = ()=>{
                        return 0
                    }
                    question_data = body.data
                    let cloud_answer = (await axios.post('https://univs.yattaze.eu.org/api/get_answer',{
                        id: question_data.id,
                        options: question_data.options.map(o=>{
                            return {
                                id: o.id,
                                code: o.code
                            }
                        }),
                        version: 0.16,
                        token: config.token
                    })).data
                    if(cloud_answer.ok)
                        answer[cloud_answer.data.id] = cloud_answer.data.answer
                    else
                        answer = []
                    if(cloud_answer.msg)
                        alert(cloud_answer.msg)
                }else if(response.config.url.indexOf('/cgi-bin/portal/race/mode') > -1){
                    if(body.data.is_team && config.team == undefined){
                        config.team = confirm('检测到账号是有团队模式的,团体模式请按确认(ok),个人模式请按取消(cancel)')
                    }
                }
        } catch (error) {
            console.error(error)
        }
        handler.next(response)
    }
})
setInterval(()=>{
    // 单选按钮
    if(document.getElementsByClassName('el-checkbox__original').length > 0)
        document.getElementsByClassName('el-checkbox__original')[0].click() // [1] 是 B
    // 多选按钮
    else if(document.getElementsByClassName('el-radio__original').length > 0)
        document.getElementsByClassName('el-radio__original')[0].click() // [1] 是 B
    // 下一题
    // 无语了 这是带学生在线自己的bug还要我来修
    if(document.querySelector('.el-input__inner') && !document.querySelector('.el-dialog__wrapper').style.display){
        document.querySelector('.el-input__inner').value = '0000'
        document.querySelector('.el-input__inner').dispatchEvent(new Event('input'))
        document.querySelector('.common_btn2').click()

    }
    if(document.getElementsByClassName('exam_questions_cid').length && document.getElementsByClassName('el-loading-mask').length > 0 && document.getElementsByClassName('el-loading-mask')[0].getAttribute('style') == 'display: none;')
        if(document.getElementsByClassName('exam_questions_cid')[0].innerText == '20'){
            document.getElementsByClassName('question_btn ml5')[1].click()
            setTimeout(()=>{
                document.getElementsByClassName('question_btn ml5')[0].click()
            },700)
        } else {
            document.getElementsByClassName('question_btn ml5').forEach((x,id)=>{
                if(x.getAttribute('style') != 'display: none;'){
                    //localStorage.setItem("alreadyCode", "true")
                    x.click()
                }
            })
        }
},2000)


//Math.floor = ()=>{return 'aaaa'}
if(config.loop)
    setInterval(()=>{
        // 点击首页图片 然后开始比赛 这里偷懒了 判断一个页面图片 > 6 就执行
        if(document.getElementsByTagName('img').length > 6){
            document.getElementsByTagName('img')[config.target[+new Date() % config.target.length]].click()
        }
        // 团体模式
        if(document.getElementsByClassName('card_mode').length == 1 && document.getElementsByClassName('card_mode')[0].getAttribute('style') !== 'display: none;'){
            if(config.team)
                document.getElementsByTagName('img')[3].click()
            else
                document.getElementsByTagName('img')[2].click()

        }
        // 点击返回
        if(document.getElementsByClassName('result_back_btn').length > 0){
            document.getElementsByClassName('result_back_btn')[0].click()
        }
    },2000)




然后CTRL+S 快捷键保存(是键盘上的。。)

然后自动转到这个页面

然后回到我们答题的界面。



登录以后,然后就是一波连续的刷题,完成自己会不动的。最好界面停在那个刷题界面,因为有时侯离开,就不运行了,再回到界面才可以,你还可以跟别人pk获得积分。。

还有一个问题:有时候会让你重复输入token,可以不用输了,只要之前输过一次就行了

每次答完题需要手动退出答题界面,然后再进入答题界面即可自动答题


20 Reply   |  Until 1个月前 | 6576 View

19912774570 2个月前 回复帖子 | 点评 | Support  1 | Against  0

为什么复制这个脚本之后版本是0.16的,而你这个却是0.6的版本。还有如何去答题界面。望解答,谢谢。

评论列表

  • 加载数据中...

编写评论内容

欲与妄想 2个月前 回复帖子 | 点评 | Support  1 | Against  0

19912774570

2个月前

为什么复制这个脚本之后版本是0.16的,而你这个却是0.6的版本。还有如何去答题界面。望解答,谢谢。

这个版本就是0.16的

进入答题地址登陆后会自动运行脚本答题

答题地址:http://dxs.moe.gov.cn/zx/gxdt/-wszzczl-gxdjlhd.shtml

评论列表

  • 加载数据中...

编写评论内容

zzq 2个月前 回复帖子 | 点评 | Support  1 | Against  0

我用的是microsoft edge浏览器,本身自带油猴脚本。添加新脚本之后,在答题界面没有显示输入token是为什么?

 

评论列表

  • 加载数据中...

编写评论内容

欲与妄想 2个月前 回复帖子 | 点评 | Support  1 | Against  0

zzq

2个月前

我用的是microsoft edge浏览器,本身自带油猴脚本。添加新脚本之后,在答题界面没有显示输入token是为什么?

 

脚本已更新,不需要输入token,重新复制保存脚本即可

评论列表

  • 加载数据中...

编写评论内容

幽林独孤 2个月前 回复帖子 | 点评 | Support  1 | Against  0

为什么脚本会运行失败?一直在刷新界面????

评论列表

  • 加载数据中...

编写评论内容

1245797772 1个月前 回复帖子 | 点评 | Support  1 | Against  0

到备用下载呢就看不懂了

评论列表

  • 加载数据中...

编写评论内容

欲与妄想 1个月前 回复帖子 | 点评 | Support  1 | Against  0

幽林独孤

2个月前

为什么脚本会运行失败?一直在刷新界面????

用的是谷歌浏览器嘛

评论列表

  • 加载数据中...

编写评论内容

欲与妄想 1个月前 回复帖子 | 点评 | Support  1 | Against  0

1245797772

1个月前

到备用下载呢就看不懂了

下载解压以后,会有一个CRX文件,打开谷歌浏览器的插件安装界面,将那个CRX文件拖入浏览器窗口即可安装油猴插件

评论列表

  • 加载数据中...

编写评论内容

幽林独孤 1个月前 回复帖子 | 点评 | Support  1 | Against  0

欲与妄想

1个月前

用的是谷歌浏览器嘛

是的,后台有好多行代码前面都有感叹号是什么问题?

评论列表

  • 加载数据中...

编写评论内容

欲与妄想 1个月前 回复帖子 | 点评 | Support  1 | Against  0

幽林独孤

1个月前

是的,后台有好多行代码前面都有感叹号是什么问题?

啥?没听明白,能截个图吗

评论列表

  • 加载数据中...

编写评论内容
LoginCan Publish Content