// ==UserScript== // @name 国家安全知识竞赛秒过(ScriptCat后台脚本) // @namespace Ne-21 // @version 1.0.4 // @description 国家安全知识竞赛秒过100分,浏览器启动后自动执行,ScriptCat专用后台脚本,后台脚本是脚本猫特有的脚本所以不支持油猴。 // @author Ne-21 // @crontab * * once * * // @connect gjaqzsjs.haedu.cn // @grant unsafeWindow // @grant GM_xmlhttpRequest // @grant GM_log // @grant GM_notification // @grant GM_getValue // @background // @debug // ==/UserScript== /* ==UserConfig== UserInfo: schoolName: title: 学校名称 description: 学校名称 type: select values: ['安阳工学院', '安阳师范学院', '安阳学院', '河南财经政法大学', '河南财政金融学院', '河南城建学院', '河南大学', '河南工程学院', '河南工学院', '河南工业大学', '河南警察学院', '河南开封科技传媒学院', '河南科技大学', '河南科技学院', '河南科技学院新科学院', '河南科技职业大学', '河南理工大学', '河南牧业经济学院', '河南农业大学', '河南师范大学', '河南中医药大学', '华北水利水电大学', '黄河交通学院', '黄河科技学院', '黄淮学院', '洛阳理工学院', '洛阳师范学院', '南阳理工学院', '南阳师范学院', '平顶山学院', '商丘工学院', '商丘师范学院', '商丘学院', '新乡学院', '新乡医学院', '新乡医学院三全学院', '信阳农林学院', '信阳师范学院', '信阳学院', '许昌学院', '郑州财经学院', '郑州大学', '郑州工程技术学院', '郑州工商学院', '郑州工业应用技术学院', '郑州航空工业管理学院', '郑州经贸学院', '郑州科技学院', '郑州轻工业大学', '郑州商学院', '郑州升达经贸管理学院', '郑州师范学院', '郑州西亚斯学院', '中原工学院', '中原科技学院', '周口师范学院', '安阳幼儿师范高等专科学校', '安阳职业技术学院', '长垣烹饪职业技术学院', '河南测绘职业学院', '河南地矿职业学院', '河南对外经济贸易职业学院', '河南工业和信息化职业学院', '河南工业贸易职业学院', '河南工业职业技术学院', '河南护理职业学院', '河南机电职业学院', '河南检察职业学院', '河南建筑职业技术学院', '河南交通职业技术学院', '河南经贸职业学院', '河南林业职业学院', '河南农业职业学院', '河南女子职业学院', '河南轻工职业学院', '河南水利与环境职业学院', '河南司法警官职业学院', '河南推拿职业学院', '河南物流职业学院', '河南信息统计职业学院', '河南医学高等专科学校', '河南艺术职业学院', '河南应用技术职业学院', '河南职业技术学院', '河南质量工程职业学院', '鹤壁能源化工职业学院', '鹤壁汽车工程职业学院', '鹤壁职业技术学院', '黄河水利职业技术学院', '济源职业技术学院', '焦作大学', '焦作工贸职业学院', '焦作师范高等专科学校', '开封大学', '开封文化艺术职业学院', '兰考三农职业学院', '林州建筑职业技术学院', '洛阳科技职业学院', '洛阳职业技术学院', '漯河食品职业学院', '漯河医学高等专科学校', '漯河职业技术学院', '南阳科技职业学院', '南阳农业职业学院', '南阳医学高等专科学校', '南阳职业学院', '平顶山工业职业技术学院', '平顶山职业技术学院', '濮阳石油化工职业技术学院', '濮阳医学高等专科学校', '濮阳职业技术学院', '汝州职业技术学院', '三门峡社会管理职业学院', '三门峡职业技术学院', '商丘医学高等专科学校', '商丘职业技术学院', '嵩山少林武术职业学院', '新乡职业技术学院', '信阳航空职业学院', '信阳涉外职业技术学院', '信阳职业技术学院', '许昌电气职业学院', '许昌陶瓷职业学院', '许昌职业技术学院', '永城职业学院', '郑州财税金融职业学院', '郑州城市职业学院', '郑州电力高等专科学校', '郑州电力职业技术学院', '郑州电子商务职业学院', '郑州电子信息职业技术学院', '郑州工业安全职业学院', '郑州轨道工程职业学院', '郑州黄河护理职业学院', '郑州理工职业学院', '郑州旅游职业学院', '郑州商贸旅游职业学院', '郑州澍青医学高等专科学校', '郑州体育职业学院', '郑州铁路职业技术学院', '郑州卫生健康职业学院', '郑州信息工程职业学院', '郑州信息科技职业学院', '郑州亚欧交通职业学院', '郑州幼儿师范高等专科学校', '郑州职业技术学院', '周口职业技术学院', '驻马店幼儿师范高等专科学校', '驻马店职业技术学院', '信阳艺术职业学院', '周口文理职业学院', '洛阳文化旅游职业学院', '郑州城建职业学院', '郑州医药健康职业学院', '铁道警察学院', '郑州大学体育学院', '平顶山文化艺术职业学院'] loginNum: title: 登录账号 description: 登录账号 type: text default: loginPas: title: 登录密码 description: 登录密码 type: text password: true default: time: title: 做题时长 description: 用来修改试卷的做题时长 type: number default: 550 min: 100 # 最小值 max: 590 # 最大值 unit: 秒 # 表示单位 ==/UserConfig== */ var schoolName = GM_getValue('UserInfo.schoolName'), login_num = GM_getValue('UserInfo.loginNum'), login_pas = GM_getValue('UserInfo.loginPas'); return new Promise((resolve, reject) => { if (schoolName == "" || login_num == "" || login_pas == "") { GM_log('请设置相关登录信息', "error") GM_notification('国安小助手:请设置相关登录信息'); reject() } var array = ['安阳工学院', '安阳师范学院', '安阳学院', '河南财经政法大学', '河南财政金融学院', '河南城建学院', '河南大学', '河南工程学院', '河南工学院', '河南工业大学', '河南警察学院', '河南开封科技传媒学院', '河南科技大学', '河南科技学院', '河南科技学院新科学院', '河南科技职业大学', '河南理工大学', '河南牧业经济学院', '河南农业大学', '河南师范大学', '河南中医药大学', '华北水利水电大学', '黄河交通学院', '黄河科技学院', '黄淮学院', '洛阳理工学院', '洛阳师范学院', '南阳理工学院', '南阳师范学院', '平顶山学院', '商丘工学院', '商丘师范学院', '商丘学院', '新乡学院', '新乡医学院', '新乡医学院三全学院', '信阳农林学院', '信阳师范学院', '信阳学院', '许昌学院', '郑州财经学院', '郑州大学', '郑州工程技术学院', '郑州工商学院', '郑州工业应用技术学院', '郑州航空工业管理学院', '郑州经贸学院', '郑州科技学院', '郑州轻工业大学', '郑州商学院', '郑州升达经贸管理学院', '郑州师范学院', '郑州西亚斯学院', '中原工学院', '中原科技学院', '周口师范学院', '安阳幼儿师范高等专科学校', '安阳职业技术学院', '长垣烹饪职业技术学院', '河南测绘职业学院', '河南地矿职业学院', '河南对外经济贸易职业学院', '河南工业和信息化职业学院', '河南工业贸易职业学院', '河南工业职业技术学院', '河南护理职业学院', '河南机电职业学院', '河南检察职业学院', '河南建筑职业技术学院', '河南交通职业技术学院', '河南经贸职业学院', '河南林业职业学院', '河南农业职业学院', '河南女子职业学院', '河南轻工职业学院', '河南水利与环境职业学院', '河南司法警官职业学院', '河南推拿职业学院', '河南物流职业学院', '河南信息统计职业学院', '河南医学高等专科学校', '河南艺术职业学院', '河南应用技术职业学院', '河南职业技术学院', '河南质量工程职业学院', '鹤壁能源化工职业学院', '鹤壁汽车工程职业学院', '鹤壁职业技术学院', '黄河水利职业技术学院', '济源职业技术学院', '焦作大学', '焦作工贸职业学院', '焦作师范高等专科学校', '开封大学', '开封文化艺术职业学院', '兰考三农职业学院', '林州建筑职业技术学院', '洛阳科技职业学院', '洛阳职业技术学院', '漯河食品职业学院', '漯河医学高等专科学校', '漯河职业技术学院', '南阳科技职业学院', '南阳农业职业学院', '南阳医学高等专科学校', '南阳职业学院', '平顶山工业职业技术学院', '平顶山职业技术学院', '濮阳石油化工职业技术学院', '濮阳医学高等专科学校', '濮阳职业技术学院', '汝州职业技术学院', '三门峡社会管理职业学院', '三门峡职业技术学院', '商丘医学高等专科学校', '商丘职业技术学院', '嵩山少林武术职业学院', '新乡职业技术学院', '信阳航空职业学院', '信阳涉外职业技术学院', '信阳职业技术学院', '许昌电气职业学院', '许昌陶瓷职业学院', '许昌职业技术学院', '永城职业学院', '郑州财税金融职业学院', '郑州城市职业学院', '郑州电力高等专科学校', '郑州电力职业技术学院', '郑州电子商务职业学院', '郑州电子信息职业技术学院', '郑州工业安全职业学院', '郑州轨道工程职业学院', '郑州黄河护理职业学院', '郑州理工职业学院', '郑州旅游职业学院', '郑州商贸旅游职业学院', '郑州澍青医学高等专科学校', '郑州体育职业学院', '郑州铁路职业技术学院', '郑州卫生健康职业学院', '郑州信息工程职业学院', '郑州信息科技职业学院', '郑州亚欧交通职业学院', '郑州幼儿师范高等专科学校', '郑州职业技术学院', '周口职业技术学院', '驻马店幼儿师范高等专科学校', '驻马店职业技术学院', '信阳艺术职业学院', '周口文理职业学院', '洛阳文化旅游职业学院', '郑州城建职业学院', '郑州医药健康职业学院', '铁道警察学院', '郑州大学体育学院', '平顶山文化艺术职业学院']; var schoolId = array.findIndex((item)=>item === schoolName) + 1 GM_xmlhttpRequest({ method: 'POST', url: 'http://gjaqzsjs.haedu.cn/Login/auth', headers: { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36', 'Origin': 'http://gjaqzsjs.haedu.cn/', "Content-type": "application/x-www-form-urlencoded; charset=UTF-8", }, data: 'unit_code=' + encodeURIComponent(schoolId) + '&student_id=' + encodeURIComponent(login_num) + '&password=' + encodeURIComponent(login_pas), onload: function (xhr) { var res = JSON.parse(xhr.responseText) if (res.code == 2000) { GM_log('登录状态:' + res.msg, "info") GM_log('欢迎使用,来自' + res.data.unit_char + '的' + res.data.name + '同学') GM_log('开始检测今日是否答题') var date = new Date(), y = date.getFullYear() + '', m = date.getMonth() + 1 + '', d = date.getDate() + '', nowdate = y + (m.length == 1 ? '0' + m : m) + (d.length == 1 ? '0' + d : d); resolve(nowdate) } else { GM_log('登录状态:' + res.msg, "error") GM_notification('国安小助手:登陆失败'); reject() } } }) }).then(async (nowdate) => { await new Promise((resolve, reject) => { GM_xmlhttpRequest({ method: 'POST', url: 'http://gjaqzsjs.haedu.cn//Answer/getRecord', headers: { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36', 'Origin': 'http://gjaqzsjs.haedu.cn/', "Content-type": "application/x-www-form-urlencoded; charset=UTF-8", "Referer": "http://gjaqzsjs.haedu.cn/gjaq_dati/page/record.html?date=" + nowdate }, data: 'date=' + encodeURIComponent(nowdate), onload: function (xhr_1) { var res = JSON.parse(xhr_1.responseText); if (res.code == 4421) { GM_log(res.msg, "info"); GM_log('开始提交答案...', "info"); resolve(); } else { GM_log('今日已答题', "info"); GM_notification('国安小助手:今日已答题'); reject(); } } }); }); var answer = [ { 'number': 66, 'answer': 'C' }, { 'number': 329, 'answer': 'D' }, { 'number': 466, 'answer': 'D' }, { 'number': 171, 'answer': 'A' }, { 'number': 414, 'answer': 'A' }, { 'number': 242, 'answer': 'C' }, { 'number': 422, 'answer': 'B' }, { 'number': 529, 'answer': 'ABCD' }, { 'number': 599, 'answer': 'ABC' }, { 'number': 654, 'answer': 'ABCD' }, { 'number': 694, 'answer': 'ABCD' }, { 'number': 548, 'answer': 'CD' }, { 'number': 553, 'answer': 'ABD' }, { 'number': 1020, 'answer': 'B' }, { 'number': 1046, 'answer': 'A' }, { 'number': 880, 'answer': 'B' }, { 'number': 1079, 'answer': 'B' }, { 'number': 920, 'answer': 'A' }, { 'number': 830, 'answer': 'B' }, { 'number': 1049, 'answer': 'A' } ]; return await new Promise((resolve_1, reject_1) => { GM_xmlhttpRequest({ method: 'POST', url: 'http://gjaqzsjs.haedu.cn/Answer/submitAnswer', headers: { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36', 'Origin': 'http://gjaqzsjs.haedu.cn/', "Content-type": "application/x-www-form-urlencoded; charset=UTF-8", }, data: 'answer=' + JSON.stringify(answer) + '&use_time=' + encodeURIComponent(time), onload: function (xhr_3) { var res_1 = JSON.parse(xhr_3.responseText); if (res_1.code == 4600) { GM_log(res_1.msg + ",请登录网页查看成绩。", "info"); GM_notification('国安小助手:试卷提交成功,请登录网页查看成绩。'); resolve_1(); } else { GM_log(res_1.msg, "error"); reject_1(); } } }); }); })