您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
能够通过网络请求的方式直接帮您跳过网课的学习阶段,但是考试答题还是需要自己完成的哦;本脚本仅做交流学习技术使用,请勿将此脚本用于收费或非法用途。
// ==UserScript== // @name HITSZ安全教育课程学习脚本 // @namespace https://www.chiro.work/ // @version 0.20 // @description 能够通过网络请求的方式直接帮您跳过网课的学习阶段,但是考试答题还是需要自己完成的哦;本脚本仅做交流学习技术使用,请勿将此脚本用于收费或非法用途。 // @author Chiro // @match http://weiban.mycourse.cn/* // @grant none // ==/UserScript== (function() { 'use strict'; function getQueryString(name) { let querys = window.location.href.split('?')[1].split('&'); for (let q of querys) { let qs = q.split('='); if (qs.length <= 1) continue; if (qs[0] === name) return qs[1]; } return null; } function sleep (time) { return new Promise((resolve) => setTimeout(resolve, time)); } async function main() { await sleep(2000); if (window.location.href === 'http://weiban.mycourse.cn/#/') { console.log("主页"); // 进入学习任务选择页面 $('.mod-more').click(); setTimeout(onchange, 1000); } else if (window.location.href === 'http://weiban.mycourse.cn/#/learning-task-list') { console.log("学习任务选择页面"); // 引导点击下面的两个任务 $(".mod-headline").text("脚本 :点击下面的一个学习任务"); $('.task-block').onclick = () => { setTimeout(onchange, 1000); }; } else if (window.location.href === 'http://weiban.mycourse.cn/#/course?projectType=pre' || window.location.href.startsWith('http://weiban.mycourse.cn/#/course?projectId')) { console.log("课程列表页面"); let stats = $('div.state'); let found = false; for (let i=1; i<stats.length; i++) { let sp = stats[i].textContent.split('/'); if (sp[0] === sp[1]) continue; console.log($('h3')[i - 1].textContent, stats[i].textContent); $('a.btn')[i - 1].click(); found = true; break; } if (!found) { history.go(-1); setTimeout(onchange, 1000); } setTimeout(onchange, 1000); } else if (window.location.href.startsWith('http://weiban.mycourse.cn/#/course/list')){ console.log('微课列表页面'); // 请求微课信息 let formData = { str: '', append(tag, val) { if (this.str.length !== 0) this.str += '&'; this.str += tag + '=' + val; } }; try { let user = JSON.parse(localStorage.getItem('user')); formData.append('userProjectId', getQueryString('projectId')); formData.append('chooseType', getQueryString('subjectType')); formData.append('categoryCode', getQueryString('categoryCode')); formData.append('name', ''); formData.append('userId', user.userId); formData.append('tenantCode', user.tenantCode); formData.append('token', user.token); // 假装网络不好 let response = await fetch(`https://weiban.mycourse.cn/pharos/usercourse/listCourse.do?timestamp=${parseInt(new Date().getTime() / 1000) - 10}`, { method: 'POST', body: formData.str, headers: { 'Content-Type': 'application/x-www-form-urlencoded' } }); let data = await response.json(); console.log('got data', data); let promises = []; let functions = []; for (let d of data.data) { if (d.finished != 2) continue; // 请求完成这个微课 let formData2 = { str: '', append(tag, val) { if (this.str.length !== 0) this.str += '&'; this.str += tag + '=' + val; } }; formData2.append('userProjectId', getQueryString('projectId')); formData2.append('userId', user.userId); formData2.append('tenantCode', user.tenantCode); formData2.append('token', user.token); let courseId = d.resourceId; formData2.append('courseId', courseId); console.log('studying', d.resourceName); // await fetch(`https://weiban.mycourse.cn/pharos/usercourse/study.do?timestamp=${parseInt(new Date().getTime() / 1000) - 5}`, { // @萝叽:去掉“网卡了”的模拟 await fetch(`https://weiban.mycourse.cn/pharos/usercourse/study.do?timestamp=${Date.now()}`, { method: "POST", body: formData2.str, headers: { 'Content-Type': 'application/x-www-form-urlencoded' } }); // await sleep(20); // @萝叽:增长等待时间,防止脚本检测 await sleep(10 * 1000); console.log('finishing', d.resourceName); await fetch(`https://weiban.mycourse.cn/pharos/usercourse/finish.do?userCourseId=${d.userCourseId}&tenantCode=${user.tenantCode}`, { method: "GET", mode: "no-cors", headers: { "Content-Type": "application/x-www-form-urlencoded" }, credentials: "include", Referer: `https://mcwk.mycourse.cn/course/A25001/A25001.html?userCourseId=${d.userCourseId}&tenantCode=${user.tenantCode}&type=1` }); } console.log("完成所有微课"); history.go(-1); } catch(e) { console.error("失败", e); } setTimeout(onchange, 1000); } else if (window.location.href.startsWith('http://weiban.mycourse.cn/#/course/detail')) { } } async function onchange() { console.log("onchange"); await main(); } onchange(); })();