// ==UserScript==
// @name 🎯学习通全能助手|【💡我不明白】|✨超星尔雅|🌐自动化答题课程不暂停
// @namespace 余恋研喜
// @version 3.7.4
// @description 进入超星学习页面后自动加载控制面板,集中管理脚本状态、配置项和日志。自动识别章节任务,支持倍速播放/挂机模式,结课后可自动跳到下一章。章节测试可一键开启自动答题、自动保存与自动提交;支持导入题库 token 提高准确率。运行日志实时显示所有动作,提供清空、导出按钮,方便排查问题。学习进度面板展示当前任务、百分比、学习时长等信息,便于掌握脚本执行情况。
// @author 雪中送碳
// @run-at document-end
// @storageName wbmb
// @match *://*.chaoxing.com/*
// @match *://*.edu.cn/*
// @match *://*.nbdlib.cn/*
// @match *://*.hnsyu.net/*
// @match *://*.ac.cn/*
// @icon http://pan-yz.chaoxing.com/favicon.ico
// @grant unsafeWindow
// @grant GM_xmlhttpRequest
// @grant GM_setValue
// @grant GM_getValue
// @grant GM_addValueChangeListener
// @grant GM_info
// @connect mooc1-1.chaoxing.com
// @connect mooc1.chaoxing.com
// @connect mooc1-2.chaoxing.com
// @connect passport2-api.chaoxing.com
// @connect 14.29.190.187
// @connect cx.icodef.com
// @connect tk.swk.tw
// @license GPL-3.0-or-later
// @original-script https://scriptcat.org/script-show-page/878/
// @original-author unrival
// @original-license GPL-3.0-or-later
//如果脚本提示添加安全网址,请将脚本提示内容填写到下方区域,一行一个,如果不会,请加群询问
//安全网址请填写在上方空白区域
// ==/UserScript==
(() => {
// 配置
var token = GM_getValue('tikutoken'),
jumpType = 1, // 0:智能模式,1:遍历模式,2:不跳转
disableMonitor = 0, // 0:无操作,1:解除多端学习监控
accuracy = 70, // 章节测试正确率百分比
randomDo = 1, // 找不到答案自动选
backGround = 0, // 是否对接超星挂机小助手
autoLogin = 0, // 掉线是否自动登录
phoneNumber = '', // 自动登录的手机号
password = ''; // 自动登录的密码
// 常量定义
const CONSTANTS = {
LOG_MAX_LENGTH: 50,
LOOP_INTERVAL: 500,
MIN_BROWSER_VERSION: 86,
BACKGROUND_CHECK_INTERVAL: 15,
CONFIRM_INTERVAL: 2000,
BUTTON_CLASSES: {
DEFAULT: 'btn btn-default',
SUCCESS: 'btn btn-success'
}
};
// 全局变量
var host = 'http://14.29.190.187:54223/',
rate = GM_getValue('unrivalrate', '1'),
ctUrl = 'http://tk.swk.tw/api/search.php',
isCat = GM_info.scriptHandler == 'ScriptCat',
_w = unsafeWindow,
_d = _w.document,
_l = _w.location,
_p = _l.protocol,
_h = _l.host,
isFf = _w.navigator.userAgent.includes("Firefox"),
isMobile = _w.navigator.userAgent.includes("Android"),
stop = false,
cVersion = 999,
jq = _w.top.$ || _w.top.jQuery;
// 工具函数
const getQueryVariable = (variable) => {
const q = _l.search.substring(1).split("&");
for (const param of q) {
const [key, val] = param.split("=");
if (key === variable) return val;
}
return null;
};
const getCookie = (name) => `; ${document.cookie}`.split(`; ${name}=`).pop().split(';')[0];
const handleImgs = (s) => {
if (!s) return '';
return s.replace(/
]*src=["']([^"']+)["'][^>]*>/gi, (match, url) => {
return url.replace(/^https?:\/\//, '');
});
};
// 时间格式化工具函数
const formatTime = (date = new Date()) => {
const pad = (n) => String(n).padStart(2, '0');
return {
hour: pad(date.getHours()),
minute: pad(date.getMinutes()),
second: pad(date.getSeconds())
};
};
const formatDuration = (seconds = 0) => {
const total = Math.max(0, Math.floor(Number(seconds) || 0));
const h = Math.floor(total / 3600);
const m = Math.floor((total % 3600) / 60);
const s = total % 60;
const pad = (n) => String(n).padStart(2, '0');
if (h > 0) {
return `${pad(h)}:${pad(m)}:${pad(s)}`;
}
return `${pad(m)}:${pad(s)}`;
};
const trim = (s) => {
if (!s) return '';
const replacements = {
'javascript:void(0);': '',
' ': '',
',': ',',
'。': '.',
':': ':',
';': ';',
'?': '?',
'(': '(',
')': ')',
'"': '"',
'"': '"',
'!': '!',
'-': ' '
};
let result = handleImgs(s);
for (const [old, new_] of Object.entries(replacements)) {
result = result.replaceAll(old, new_);
}
return result.replace(/(<([^>]+)>)/ig, '')
.replace(/^\s+/ig, '')
.replace(/\s+$/ig, '');
};
// 获取页面参数(初始值,后续可能会被重新赋值)
let classId = getQueryVariable('clazzid') || getQueryVariable('clazzId') ||
getQueryVariable('classid') || getQueryVariable('classId');
let courseId = getQueryVariable('courseid') || getQueryVariable('courseId');
let UID = getCookie('_uid') || getCookie('UID');
let FID = getCookie('fid');
// 重写confirm函数
_w.confirm = () => true;
setInterval(() => {
_w.confirm = () => true;
}, CONSTANTS.CONFIRM_INTERVAL);
// 规范化倍速值
rate = parseFloat(rate) === parseInt(rate) ? parseInt(rate) : parseFloat(rate);
try {
_w.top.unrivalReviewMode = GM_getValue('unrivalreview', '0') || '0';
_w.top.unrivalDoWork = GM_getValue('unrivaldowork', '1') || '1';
_w.top.unrivalAutoSubmit = GM_getValue('unrivalautosubmit', '1') || '1';
_w.top.unrivalAutoSave = GM_getValue('unrivalautosave', '0') || '0';
} catch (e) { }
if (_l.href.indexOf("knowledge/cards") > 0) {
let allowBackground = false,
spans = _d.getElementsByTagName('span');
for (let i = 0, l = spans.length; i < l; i++) {
if (spans[i].innerHTML.indexOf('章节未开放') != -1) {
if (_l.href.indexOf("ut=s") != -1) {
_l.href = _l.href.replace("ut=s", "ut=t").replace(/&cpi=[0-9]{1,10}/, '');
} else if (_l.href.indexOf("ut=t") != -1) {
spans[i].innerHTML = '此课程为闯关模式,请回到上一章节完成学习任务!'
return;
}
break;
}
}
_w.top.unrivalPageRd = String(Math.random());
if (!isFf) {
try {
cVersion = parseInt(navigator.userAgent.match(/Chrome\/[0-9]{2,3}./)[0].replace('Chrome/', '')
.replace('.', ''));
} catch (e) { }
}
var busyThread = 0,
getStr = (str, start, end) => {
let res = str.substring(str.indexOf(start), str.indexOf(end)).replace(start, '');
return res;
},
scripts = _d.getElementsByTagName('script'),
param = null;
for (let i = 0, l = scripts.length; i < l; i++) {
if (scripts[i].innerHTML.indexOf('mArg = "";') != -1 && scripts[i].innerHTML.indexOf(
'==UserScript==') == -1) {
param = getStr(scripts[i].innerHTML, 'try{\n mArg = ', ';\n}catch(e){');
}
}
if (param == null) {
return;
}
try {
vrefer = _d.getElementsByClassName('ans-attach-online ans-insertvideo-online')[0].src;
} catch (e) {
vrefer = _p + '//' + _h + '/ananas/modules/video/index.html?v=2022-1118-1729';
}
GM_setValue('vrefer', vrefer);
GM_setValue('host', _h);
var base222 = `data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAGyAbIDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD6pooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiio7gM0MiocMVIH1xQBW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`
_d.getElementsByTagName("html")[0].innerHTML = `
学习通小助手
保存
请前往网址tk.swk.tw领取密钥
🔧作者是大四牛马,大二的时候已经对本专业不感兴趣了却转不了专业,大三上学期连挂三门,奖学金离我而去,而且身心俱疲🔧
📚学化学救不了我的毕设,所以大四我考研计算机了(还胖了8近),而且为了顺利毕业,将挂的科重修回来了📚
🚀也祝福大家都能找到自己热爱的事业,而不是被不感兴趣的课程耽误,祝学业顺利——2026.01.24🚀
提示:使用 Ctrl+3 快速切换到日志
[00:00:00]如果此提示不消失,说明页面出现了错误,请联系作者
📖 使用说明
2️⃣
如任务点没通过,先通过浏览器右上角拓展图标(拼图形状)关闭脚本,检查是视频还是章节检测任务点没通过。
- 视频任务点没通过:请关闭倍数
- 章节检测任务点没通过:请先领取密钥以激活答题功能
`;
// 日志系统(优化版)
var logs = {
logArry: [],
logElement: null,
logContainer: null,
// 初始化日志元素(延迟获取,确保DOM已加载)
init: function() {
if (!this.logElement) {
this.logElement = _d.getElementById('log');
this.logContainer = _d.querySelector('#tab-log .panel-body');
}
},
// 滚动到底部
scrollToBottom: function() {
this.init();
if (this.logElement) {
// 使用requestAnimationFrame确保DOM更新后再滚动
requestAnimationFrame(() => {
this.logElement.scrollTop = this.logElement.scrollHeight;
// 如果logElement本身不可滚动,滚动其父容器
if (this.logContainer) {
this.logContainer.scrollTop = this.logContainer.scrollHeight;
}
});
}
},
addLog: function (str, color = "black") {
if (this.logArry.length >= CONSTANTS.LOG_MAX_LENGTH) {
this.logArry.shift();
}
const time = formatTime();
const logEntry = `[${time.hour}:${time.minute}:${time.second}] ${str}`;
this.logArry.push(logEntry);
this.init();
if (this.logElement) {
this.logElement.innerHTML = this.logArry.join('
');
// 只在日志tab可见时才自动滚动
const logTab = _d.getElementById('tab-log');
if (logTab && logTab.classList.contains('active')) {
this.scrollToBottom();
}
}
}
},
clampPercent = (value) => {
if (typeof value !== 'number' || isNaN(value)) return 0;
return Math.max(0, Math.min(100, Math.round(value)));
},
progressTracker = {
state: {
taskName: '暂无任务',
percent: 0,
type: '-',
detail: '等待任务开始'
},
elements: {
name: null,
percent: null,
bar: null,
detail: null,
type: null
},
init: function () {
if (!this.elements.name) {
this.elements = {
name: _d.getElementById('progressTaskName'),
percent: _d.getElementById('progressTaskPercent'),
bar: _d.getElementById('progressBarFill'),
detail: _d.getElementById('progressTaskDetail'),
type: _d.getElementById('progressTaskType')
};
}
return this.elements.name && this.elements.percent && this.elements.bar && this.elements.detail && this.elements.type;
},
render: function () {
if (!this.init()) return;
this.elements.name.textContent = this.state.taskName;
this.elements.percent.textContent = this.state.percent + '%';
this.elements.bar.style.width = this.state.percent + '%';
this.elements.bar.setAttribute('aria-valuenow', this.state.percent);
this.elements.detail.textContent = this.state.detail;
this.elements.type.textContent = '类型:' + this.state.type;
},
update: function (patch = {}) {
this.state = Object.assign({}, this.state, patch);
if (typeof this.state.percent !== 'number') {
this.state.percent = 0;
}
this.state.percent = clampPercent(this.state.percent);
this.render();
},
reset: function (message = '等待任务开始') {
this.update({
taskName: '暂无任务',
percent: 0,
type: '-',
detail: message
});
}
},
getTaskName = (item) => {
if (!item) return '未命名任务';
if (item['name']) return item['name'];
if (item['property']) {
if (item['property']['name']) return item['property']['name'];
if (item['property']['title']) return item['property']['title'];
}
return '未命名任务';
},
buildTaskTitle = (typeLabel, item) => {
return '[' + typeLabel + '] ' + getTaskName(item);
},
reportProgress = (typeLabel, item, percent, detail) => {
progressTracker.update({
taskName: buildTaskTitle(typeLabel, item),
type: typeLabel,
percent: percent,
detail: detail
});
},
htmlHook = setInterval(function () {
if (_d.getElementById('unrivalRate') && _d.getElementById('updateRateButton') && _d
.getElementById('reviewModeButton') && _d.getElementById('autoDoWorkButton') && _d
.getElementById('autoSubmitButton') && _d.getElementById('autoSaveButton')) {
if (!backGround) {
_d.getElementById('fuckMeModeButton').style.display = "none";
}
allowBackground = Math.round(new Date() / 1000) - parseInt(GM_getValue(
'unrivalBackgroundVideoEnable',
'6')) < CONSTANTS.BACKGROUND_CHECK_INTERVAL;
if (allowBackground) {
_d.getElementById('fuckMeModeButton').setAttribute('href', 'unrivalxxtbackground/');
}
clearInterval(htmlHook);
progressTracker.render();
if (cVersion < CONSTANTS.MIN_BROWSER_VERSION) {
logs.addLog(
'\u60a8\u7684\u6d4f\u89c8\u5668\u5185\u6838\u8fc7\u8001\uff0c\u8bf7\u66f4\u65b0\u7248\u672c\u6216\u4f7f\u7528\u4e3b\u6d41\u6d4f\u89c8\u5668\uff0c\u63a8\u8350\u003c\u0061\u0020\u0068\u0072\u0065\u0066\u003d\u0022\u0068\u0074\u0074\u0070\u0073\u003a\u002f\u002f\u0077\u0077\u0077\u002e\u006d\u0069\u0063\u0072\u006f\u0073\u006f\u0066\u0074\u002e\u0063\u006f\u006d\u002f\u007a\u0068\u002d\u0063\u006e\u002f\u0065\u0064\u0067\u0065\u0022\u0020\u0074\u0061\u0072\u0067\u0065\u0074\u003d\u0022\u0076\u0069\u0065\u0077\u005f\u0077\u0069\u006e\u0064\u006f\u0077\u0022\u003e\u0065\u0064\u0067\u0065\u6d4f\u89c8\u5668\u003c\u002f\u0061\u003e',
'red');
stop = true;
return;
}
if (isMobile) {
logs.addLog('手机浏览器不保证能正常运行此脚本', 'orange');
}
_d.addEventListener('visibilitychange', function () {
let isH = _d.hidden;
if (!isH) {
logs.addLog('欢迎回来,您不在的时候我也在努力,记得激活挂机模式哦,这样我就不会偷懒了', 'orange');
}
});
_d.getElementById('unrivalRate').value = rate;
_d.getElementById('updateToken').onclick = () => {
const newToken = _d.getElementById('token').value;
logs.addLog('题库token已更新为' + newToken, 'green');
GM_setValue('tikutoken', newToken);
token = newToken;
};
_d.getElementById('updateRateButton').onclick = () => {
let urate = _d.getElementById('unrivalRate').value;
urate = parseFloat(urate) === parseInt(urate) ? parseInt(urate) : parseFloat(urate);
GM_setValue('unrivalrate', urate);
rate = urate;
if (urate > 0) {
logs.addLog('视频倍速已更新为' + urate + '倍,将在3秒内生效', 'green');
} else {
logs.addLog('奇怪的倍速,将会自动跳过视频任务', 'orange');
}
};
_d.getElementById('backGround').onclick = () => {
logs.addLog('挂机激活成功,您现在可以最小化页面了', 'green');
_w.top.backNow = 1;
};
// 按钮切换处理函数
const toggleButton = (buttonId, storageKey, topKey, messages) => {
const button = _d.getElementById(buttonId);
const isActive = button.getAttribute('class') === CONSTANTS.BUTTON_CLASSES.SUCCESS;
const newClass = isActive ? CONSTANTS.BUTTON_CLASSES.DEFAULT : CONSTANTS.BUTTON_CLASSES.SUCCESS;
const newValue = isActive ? '0' : '1';
button.setAttribute('class', newClass);
logs.addLog(isActive ? messages.off : messages.on, 'green');
GM_setValue(storageKey, newValue);
_w.top[topKey] = newValue;
};
_d.getElementById('reviewModeButton').onclick = () => toggleButton(
'reviewModeButton',
'unrivalreview',
'unrivalReviewMode',
{
on: '复习模式已开启,遇到已完成的视频任务不会跳过',
off: '复习模式已关闭,遇到已完成的视频任务会自动跳过'
}
);
_d.getElementById('autoDoWorkButton').onclick = () => toggleButton(
'autoDoWorkButton',
'unrivaldowork',
'unrivalDoWork',
{
on: '自动做章节测试已开启,将会自动做章节测试',
off: '自动做章节测试已关闭,将不会自动做章节测试'
}
);
_d.getElementById('autoSubmitButton').onclick = () => toggleButton(
'autoSubmitButton',
'unrivalautosubmit',
'unrivalAutoSubmit',
{
on: '符合提交标准的章节测试将会自动提交',
off: '章节测试将不会自动提交'
}
);
_d.getElementById('autoSaveButton').onclick = () => toggleButton(
'autoSaveButton',
'unrivalautosave',
'unrivalAutoSave',
{
on: '不符合提交标准的章节测试将会自动保存',
off: '不符合提交标准的章节测试将不会自动保存,等待用户自己操作'
}
);
// 选项卡切换功能(优化版)
// 缓存DOM元素,提高性能
const tabItems = _d.querySelectorAll('.tab-item');
const tabContents = _d.querySelectorAll('.tab-content');
const logContainer = _d.querySelector('#tab-log .panel-body');
const switchTab = (tabName) => {
try {
// 移除所有活动状态
tabItems.forEach(item => item.classList.remove('active'));
tabContents.forEach(content => content.classList.remove('active'));
// 激活选中的选项卡
const activeTab = _d.querySelector(`[data-tab="${tabName}"]`);
const activeContent = _d.getElementById(`tab-${tabName}`);
if (!activeTab || !activeContent) {
console.warn(`选项卡 "${tabName}" 不存在`);
return;
}
activeTab.classList.add('active');
activeContent.classList.add('active');
// 特殊处理:切换到日志tab时,自动滚动到底部
if (tabName === 'log') {
setTimeout(() => {
logs.scrollToBottom();
}, 100);
}
// 保存用户选择
GM_setValue('lastSelectedTab', tabName);
} catch (error) {
console.error('切换选项卡时出错:', error);
logs.addLog('切换选项卡时出错: ' + error.message, 'red');
}
};
// 绑定选项卡点击事件
tabItems.forEach(item => {
item.onclick = () => {
const tabName = item.getAttribute('data-tab');
if (tabName) switchTab(tabName);
};
});
// 键盘快捷键:Ctrl+1-4 切换选项卡
_d.addEventListener('keydown', (e) => {
if (e.ctrlKey && e.key >= '1' && e.key <= '4') {
e.preventDefault();
const tabNames = ['config', 'joblist', 'log', 'progress'];
const index = parseInt(e.key) - 1;
if (tabNames[index]) {
switchTab(tabNames[index]);
}
}
});
// 恢复用户上次选择的选项卡
const lastTab = GM_getValue('lastSelectedTab', 'config');
if (lastTab !== 'config') {
setTimeout(() => switchTab(lastTab), 200);
}
// 清空日志功能
const clearLogBtn = _d.getElementById('clearLogBtn');
if (clearLogBtn) {
clearLogBtn.onclick = () => {
if (confirm('确定要清空所有日志吗?')) {
logs.logArry = [];
const logElement = _d.getElementById('log');
if (logElement) {
logElement.innerHTML = '[日志已清空]';
}
logs.addLog('日志已清空', 'green');
}
};
}
// 导出日志功能
const exportLogBtn = _d.getElementById('exportLogBtn');
if (exportLogBtn) {
exportLogBtn.onclick = () => {
try {
const logText = logs.logArry.map(log => {
// 移除HTML标签,提取纯文本
const div = _d.createElement('div');
div.innerHTML = log;
return div.textContent || div.innerText || '';
}).join('\n');
const blob = new Blob([logText], { type: 'text/plain;charset=utf-8' });
const url = URL.createObjectURL(blob);
const a = _d.createElement('a');
a.href = url;
a.download = `学习通日志_${new Date().toISOString().replace(/[:.]/g, '-')}.txt`;
_d.body.appendChild(a);
a.click();
_d.body.removeChild(a);
URL.revokeObjectURL(url);
logs.addLog('日志导出成功', 'green');
} catch (error) {
console.error('导出日志失败:', error);
logs.addLog('导出日志失败: ' + error.message, 'red');
}
};
}
}
}, 100),
loopjob = () => {
if (_w.top.unrivalScriptList.length > 1) {
logs.addLog('您同时开启了多个刷课脚本,会挂科,会挂科,会挂科,会挂科,会挂科,会挂科,会挂科,会挂科', 'red');
}
if (cVersion < CONSTANTS.MIN_BROWSER_VERSION) {
logs.addLog(
'\u60a8\u7684\u6d4f\u89c8\u5668\u5185\u6838\u8fc7\u8001\uff0c\u8bf7\u66f4\u65b0\u7248\u672c\u6216\u4f7f\u7528\u4e3b\u6d41\u6d4f\u89c8\u5668\uff0c\u63a8\u8350\u003c\u0061\u0020\u0068\u0072\u0065\u0066\u003d\u0022\u0068\u0074\u0074\u0070\u0073\u003a\u002f\u002f\u0077\u0077\u0077\u002e\u006d\u0069\u0063\u0072\u006f\u0073\u006f\u0066\u0074\u002e\u0063\u006f\u006d\u002f\u007a\u0068\u002d\u0063\u006e\u002f\u0065\u0064\u0067\u0065\u0022\u0020\u0074\u0061\u0072\u0067\u0065\u0074\u003d\u0022\u0076\u0069\u0065\u0077\u005f\u0077\u0069\u006e\u0064\u006f\u0077\u0022\u003e\u0065\u0064\u0067\u0065\u6d4f\u89c8\u5668\u003c\u002f\u0061\u003e',
'red');
stop = true;
return;
}
if (stop) {
return;
}
let missionli = missionList;
if (missionli == []) {
setTimeout(loopjob, CONSTANTS.LOOP_INTERVAL);
return;
}
for (let itemName in missionli) {
if (missionli[itemName]['running']) {
setTimeout(loopjob, CONSTANTS.LOOP_INTERVAL);
return;
}
}
for (let itemName in missionli) {
if (!missionli[itemName]['done']) {
switch (missionli[itemName]['type']) {
case 'video':
doVideo(missionli[itemName]);
break;
case 'document':
doDocument(missionli[itemName]);
break;
case 'work':
doWork(missionli[itemName]);
break;
}
setTimeout(loopjob, CONSTANTS.LOOP_INTERVAL);
return;
}
}
if (busyThread <= 0) {
progressTracker.update({
taskName: '所有任务',
type: '完成',
percent: 100,
detail: '所有任务处理完毕'
});
if (jumpType != 2) {
_w.top.jump = true;
logs.addLog('所有任务处理完毕,5秒后自动下一章', 'green');
} else {
logs.addLog('所有任务处理完毕,用户设置为不跳转,脚本已结束运行,如需自动跳转,请编辑脚本代码参数', 'green');
}
clearInterval(loopjob);
} else {
setTimeout(loopjob, CONSTANTS.LOOP_INTERVAL);
}
},
readyCheck = () => {
setTimeout(function () {
try {
if (!isCat) {
logs.addLog(
'推荐使用脚本猫运行此脚本,使用其他脚本管理器不保证能正常运行',
'orange');
}
// 恢复按钮状态
const setButtonState = (buttonId, value, message) => {
const button = _d.getElementById(buttonId);
if (button) {
const buttonClass = value === '1' ? CONSTANTS.BUTTON_CLASSES.SUCCESS : CONSTANTS.BUTTON_CLASSES.DEFAULT;
button.setAttribute('class', buttonClass);
if (message && value === '1') {
logs.addLog(message, 'green');
}
}
};
setButtonState('reviewModeButton', _w.top.unrivalReviewMode, '复习模式已开启,遇到已完成的视频任务不会跳过');
setButtonState('autoDoWorkButton', _w.top.unrivalDoWork, '自动做章节测试已开启,将会自动做章节测试');
setButtonState('autoSubmitButton', _w.top.unrivalAutoSubmit);
setButtonState('autoSaveButton', _w.top.unrivalAutoSave);
} catch (e) {
console.log(e);
readyCheck();
return;
}
}, 500);
}
progressTracker.reset();
readyCheck();
try {
var pageData = JSON.parse(param);
} catch (e) {
if (jumpType != 2) {
_w.top.jump = true;
logs.addLog('此页无任务,5秒后自动下一章', 'green');
} else {
logs.addLog('此页无任务,用户设置为不跳转,脚本已结束运行,如需自动跳转,请编辑脚本代码参数', 'green');
}
return;
}
var data = pageData['defaults'],
jobList = [],
chapterId = data['knowledgeid'],
reportUrl = data['reportUrl'],
ktoken = data['ktoken'];
// 使用data中的值更新classId和courseId(如果存在)
classId = classId || data['clazzId'];
UID = UID || data['userid'];
FID = FID || data['fid'];
for (let i = 0, l = pageData['attachments'].length; i < l; i++) {
let item = pageData['attachments'][i];
if (item['job'] != true || item['isPassed'] == true) {
if (_w.top.unrivalReviewMode == '1' && item['type'] == 'video') {
jobList.push(item);
}
continue;
} else {
jobList.push(item);
}
}
var video_getReady = (item) => {
let statusUrl = _p + '//' + _h + '/ananas/status/' + item['property']['objectid'] + '?k=' +
FID + '&flag=normal&_dc=' + String(Math.round(new Date())),
doubleSpeed = item['property']['doublespeed'];
busyThread += 1;
GM_xmlhttpRequest({
method: "get",
headers: {
'Host': _h,
'Referer': vrefer,
'Sec-Fetch-Site': 'same-origin'
},
url: statusUrl,
onload: function (res) {
try {
busyThread -= 1;
let videoInfo = JSON.parse(res.responseText),
duration = videoInfo['duration'],
dtoken = videoInfo['dtoken'];
if (duration == undefined) {
_d.getElementById('joblist').innerHTML += `
` + '[无效视频]' + item['property']['name'] + `
`
return;
}
missionList['m' + item['jobid']] = {
'module': item['property']['module'],
'type': 'video',
'dtoken': dtoken,
'duration': duration,
'objectId': item['property']['objectid'],
'rt': item['property']['rt'] || '0.9',
'otherInfo': item['otherInfo'],
'doublespeed': doubleSpeed,
'jobid': item['jobid'],
'name': item['property']['name'],
'done': false,
'running': false
};
_d.getElementById('joblist').innerHTML += `
` + '[视频]' + item['property']['name'] + `
`
} catch (e) { }
},
onerror: function (err) {
console.log(err);
if (err.error.indexOf('@connect list') >= 0) {
logs.addLog('请添加安全网址,将 【 //@connect ' + _h +
' 】方括号里的内容(不包括方括号)添加到脚本代码内指定位置,否则脚本无法正常运行,如图所示:', 'red');
logs.addLog(
'
'
);
stop = true;
} else {
logs.addLog('获取任务详情失败', 'red');
logs.addLog('错误原因:' + err.error, 'red');
}
}
});
},
doVideo = (item) => {
const videoDuration = Number(item['duration']) || 0;
reportProgress('视频', item, 0, videoDuration ? '准备开始 (00:00 / ' + formatDuration(videoDuration) + ')' : '准备开始...');
if (rate <= 0) {
missionList['m' + item['jobid']]['running'] = true;
logs.addLog('奇怪的倍速,视频已自动跳过', 'orange');
reportProgress('视频', item, 100, '倍速异常,已自动跳过该视频');
setTimeout(function () {
missionList['m' + item['jobid']]['running'] = false;
missionList['m' + item['jobid']]['done'] = true;
}, 5000);
return;
}
if (allowBackground && backGround) {
if (_w.top.document.getElementsByClassName('catalog_points_sa').length > 0 || _w.top.document
.getElementsByClassName('lock').length > 0) {
logs.addLog('您已安装超星挂机小助手,但此课程可能为闯关模式,不支持后台挂机,将为您在线完成', 'blue');
} else {
item['userid'] = UID;
item['classId'] = classId;
item['review'] = [false, true][_w.top.unrivalReviewMode];
item['reportUrl'] = reportUrl;
item['rt'] = missionList['m' + item['jobid']]['rt'];
GM_setValue('unrivalBackgroundVideo', item);
_d.cookie = "videojs_id=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;";
logs.addLog(
'您已安装超星挂机小助手,已添加至后台任务,点我查看后台',
'green');
reportProgress('视频', item, 100, '已添加至后台挂机任务');
missionList['m' + item['jobid']]['running'] = true;
setTimeout(function () {
missionList['m' + item['jobid']]['running'] = false;
missionList['m' + item['jobid']]['done'] = true;
}, 5000);
return;
}
}
let videojs_id = String(parseInt(Math.random() * 9999999));
_d.cookie = 'videojs_id=' + videojs_id + ';path=/'
logs.addLog('开始刷视频:' + item['name'] + ',倍速:' + String(rate) + '倍');
logs.addLog('视频观看信息每30秒上报一次,请耐心等待', 'green');
logs.addLog('如遇脚本使用异常情况,请检查脚本版本是否为最新版,点我(脚本猫)或点我(greasyfork)检查', 'orange');
if (disableMonitor) {
logs.addLog('解除多端学习监控有清除进度风险,请谨慎使用', 'orange');
}
let dtype = 'Video';
if (item['module'].includes('audio')) {
dtype = 'Audio';
rt = '';
}
let playTime = 0,
playsTime = 0,
isdrag = '3',
times = 0,
encUrl = '',
first = true,
loop = setInterval(function () {
if (rate <= 0) {
clearInterval(loop);
logs.addLog('奇怪的倍速,视频已自动跳过', 'orange');
setTimeout(function () {
missionList['m' + item['jobid']]['running'] = false;
missionList['m' + item['jobid']]['done'] = true;
}, 5000);
return;
} else if (item['doublespeed'] == 0 && rate > 1 && _w.top.unrivalReviewMode == '0') {
//rate = 1;
//logs.addLog('该视频不允许倍速播放,已恢复至一倍速,高倍速会被清空进度挂科,勿存侥幸', 'red');
}
rt = missionList['m' + item['jobid']]['rt'];
playsTime += rate;
playTime = Math.ceil(playsTime);
const cappedTime = videoDuration ? Math.min(playTime, videoDuration) : playTime;
const percent = videoDuration ? (cappedTime / videoDuration) * 100 : 0;
reportProgress('视频', item, percent, videoDuration ? ('进度 ' + formatDuration(cappedTime) + ' / ' + formatDuration(videoDuration)) : ('已观看 ' + formatDuration(cappedTime)));
if (times == 0 || times % 30 == 0 || playTime >= item['duration']) {
if (first) {
playTime = 0;
}
if (playTime >= item['duration']) {
clearInterval(loop);
playTime = item['duration'];
isdrag = '4';
} else if (playTime > 0) {
isdrag = '0';
}
encUrl = host + 'chaoXing/v3/getEnc.php?classid=' + classId +
'&playtime=' + playTime + '&duration=' + item['duration'] + '&objectid=' + item[
'objectId'] + '&jobid=' + item['jobid'] + '&uid=' + UID;
busyThread += 1;
var _bold_playTime = playTime;
function ecOnload(res) {
let enc = '';
if (res && res.status == 200) {
enc = res.responseText;
if (enc.includes('--#')) {
let warnInfo = enc.match(new RegExp('--#(.*?)--#', "ig"))[0]
.replace(/--#/ig, '');
logs.addLog(warnInfo, 'red');
enc = enc.replace(/--#(.*?)--#/ig, '');
}
if (enc.indexOf('.stop') >= 0) {
clearInterval(loop);
stop = true;
return;
}
} else {
strEc = `[${classId}][${UID}][${item['jobid']}][${item['objectId']}][${playTime * 1000}][d_yHJ!$pdA~5][${item['duration'] * 1000}][0_${item['duration']}]`,
enc = jq.md5(strEc);
}
if (enc.length != 32) {
clearInterval(loop);
stop = true;
return;
}
let reportsUrl = reportUrl + '/' + item['dtoken'] +
'?clazzId=' + classId + '&playingTime=' + playTime +
'&duration=' + item['duration'] + '&clipTime=0_' + item[
'duration'] + '&objectId=' + item['objectId'] +
'&otherInfo=' + item['otherInfo'] + '&jobid=' + item[
'jobid'] + '&userid=' + UID + '&isdrag=' + isdrag +
'&view=pc&enc=' + enc + '&rt=' + rt + '&dtype=' + dtype +
'&_t=' + String(Math.round(new Date()));
GM_xmlhttpRequest({
method: "get",
headers: {
'Host': _h,
'Referer': vrefer,
'Sec-Fetch-Site': 'same-origin',
'Content-Type': 'application/json'
},
url: reportsUrl,
onload: function (res) {
try {
let today = new Date(),
todayStr = today.getFullYear() +
'd' + today.getMonth() + 'd' + today
.getDate(),
timelong = GM_getValue(
'unrivaltimelong', {});
if (timelong[UID] == undefined ||
timelong[UID]['today'] != todayStr
) {
timelong[UID] = {
'time': 0,
'today': todayStr
};
} else {
timelong[UID]['time']++;
}
GM_setValue('unrivaltimelong',
timelong);
busyThread -= 1;
if (timelong[UID]['time'] / 60 > 22 &&
item['doublespeed'] == 0 && _w.top
.unrivalReviewMode == '0') {
clearInterval(loop);
logs.addLog(
'今日学习时间过长,继续学习会导致清空进度,请明天再来',
'red');
setTimeout(function () {
missionList['m' + item[
'jobid']][
'running'
] = false;
missionList['m' + item[
'jobid']][
'done'
] = true;
}, 5000);
return;
}
let ispass = JSON.parse(res
.responseText);
first = false;
if (ispass['isPassed'] && _w.top
.unrivalReviewMode == '0') {
logs.addLog('视频任务已完成', 'green');
reportProgress('视频', item, 100, '视频任务已完成');
missionList['m' + item['jobid']]['running'] = false;
missionList['m' + item['jobid']]['done'] = true;
clearInterval(loop);
return;
} else if (isdrag == '4') {
if (_w.top.unrivalReviewMode ==
'1') {
logs.addLog('视频已观看完毕', 'green');
} else {
logs.addLog('视频已观看完毕,但视频任务未完成',
'red');
}
reportProgress('视频', item, 100, _w.top.unrivalReviewMode == '1' ? '视频已观看完毕' : '视频已观看完毕,等待任务点完成');
missionList['m' + item['jobid']][
'running'
] = false;
missionList['m' + item['jobid']][
'done'
] = true;
try {
clearInterval(loop);
} catch (e) {
}
} else {
logs.addLog(item['name'] + '已观看' +
_bold_playTime + '秒,剩余大约' +
String(item['duration'] -
_bold_playTime) + '秒');
}
} catch (e) {
console.log(e);
if (res.responseText.indexOf('验证码') >=
0) {
logs.addLog('已被超星风控,请点我处理,60秒后自动刷新页面',
'red');
missionList['m' + item['jobid']][
'running'
] = false;
clearInterval(loop);
stop = true;
setTimeout(function () {
_l.reload();
}, 60000);
return;
}
logs.addLog('超星返回错误信息,十秒后重试', 'red');
times = -10;
reportProgress('视频', item, percent, '超星返回错误信息,十秒后重试');
return;
}
},
onerror: function (err) {
console.log(err);
if (err.error.indexOf('@connect list') >=
0) {
logs.addLog(
'请添加安全网址,将 【 //@connect ' +
_h +
' 】方括号里的内容(不包括方括号)添加到脚本代码内指定位置,否则脚本无法正常运行,如图所示:',
'red');
logs.addLog(
'
'
);
stop = true;
} else {
logs.addLog('观看视频失败', 'red');
logs.addLog('错误原因:' + err.error, 'red');
}
reportProgress('视频', item, percent, '观看视频失败:' + err.error);
missionList['m' + item['jobid']][
'running'
] = false;
clearInterval(loop);
}
});
};
GM_xmlhttpRequest({
method: "get",
url: encUrl,
timeout: 2000,
onload: ecOnload,
onerror: function (err) {
console.log(err);
ecOnload(false);
},
ontimeout: function (err) {
console.log(err);
ecOnload(false);
}
});
}
times += 1;
}, 1000);
missionList['m' + item['jobid']]['running'] = true;
},
doDocument = (item) => {
missionList['m' + item['jobid']]['running'] = true;
logs.addLog('开始刷文档:' + item['name']);
reportProgress('文档', item, 0, '准备阅读文档...');
setTimeout(function () {
busyThread += 1;
GM_xmlhttpRequest({
method: "get",
url: _p + '//' + _h + '/ananas/job/document?jobid=' + item['jobid'] +
'&knowledgeid=' + chapterId + '&courseid=' + courseId + '&clazzid=' +
classId + '&jtoken=' + item['jtoken'],
onload: function (res) {
try {
busyThread -= 1;
let ispass = JSON.parse(res.responseText);
if (ispass['status']) {
logs.addLog('文档任务已完成', 'green');
reportProgress('文档', item, 100, '文档任务已完成');
} else {
logs.addLog('文档已阅读完成,但任务点未完成', 'red');
reportProgress('文档', item, 100, '文档已阅读完成,但任务点未完成');
}
} catch (err) {
console.log(err);
console.log(res.responseText);
logs.addLog('解析文档内容失败', 'red');
reportProgress('文档', item, 0, '解析文档内容失败,稍后重试');
}
missionList['m' + item['jobid']]['running'] = false;
missionList['m' + item['jobid']]['done'] = true;
},
onerror: function (err) {
console.log(err);
if (err.error.indexOf('@connect list') >= 0) {
logs.addLog('请添加安全网址,将 【 //@connect ' + _h +
' 】方括号里的内容(不包括方括号)添加到脚本代码内指定位置,否则脚本无法正常运行,如图所示:', 'red');
logs.addLog(
'
'
);
stop = true;
} else {
logs.addLog('阅读文档失败', 'red');
logs.addLog('错误原因:' + err.error, 'red');
}
reportProgress('文档', item, 0, '阅读文档失败:' + err.error);
missionList['m' + item['jobid']]['running'] = false;
missionList['m' + item['jobid']]['done'] = true;
}
});
}, parseInt(Math.random() * 2000 + 9000, 10))
},
doWork = (item) => {
missionList['m' + item['jobid']]['running'] = true;
logs.addLog('开始刷章节测试:' + item['name']);
logs.addLog('您设置的答题正确率为:' + String(accuracy) + '%,只有在高于此正确率时才会提交测试', 'blue');
reportProgress('章节测试', item, 0, '正在打开章节测试...');
_d.getElementById('workPanel').style.display = 'block';
_d.getElementById('frame_content').src = _p + '//' + _h + '/work/phone/work?workId=' + item['jobid']
.replace('work-', '') + '&courseId=' + courseId + '&clazzId=' + classId + '&knowledgeId=' +
chapterId + '&jobId=' + item['jobid'] + '&enc=' + item['enc'];
_w.top.unrivalWorkInfo = '';
_w.top.unrivalDoneWorkId = '';
setInterval(function () {
if (_w.top.unrivalWorkInfo != '') {
logs.addLog(_w.top.unrivalWorkInfo);
_w.top.unrivalWorkInfo = '';
}
}, 100);
let checkcross = setInterval(function () {
if (_w.top.unrivalWorkDone == false) {
clearInterval(checkcross);
return;
}
let ifW = _d.getElementById('frame_content').contentWindow;
try {
ifW.location.href;
} catch (e) {
console.log(e);
if (e.message.indexOf('cross-origin') != -1) {
clearInterval(checkcross);
_w.top.unrivalWorkDone = true;
return;
}
}
}, 2000);
let workDoneInterval = setInterval(function () {
if (_w.top.unrivalWorkDone) {
_w.top.unrivalWorkDone = false;
clearInterval(workDoneInterval);
_w.top.unrivalDoneWorkId = '';
_d.getElementById('workPanel').style.display = 'none';
_d.getElementById('frame_content').src = '';
setTimeout(function () {
missionList['m' + item['jobid']]['running'] = false;
missionList['m' + item['jobid']]['done'] = true;
reportProgress('章节测试', item, 100, '章节测试已完成');
}, 5000);
}
}, 500);
},
missionList = [];
if (jobList.length <= 0) {
progressTracker.reset('当前章节没有需要完成的任务');
if (jumpType != 2) {
_w.top.jump = true;
logs.addLog('此页无任务,5秒后自动下一章', 'green');
} else {
logs.addLog('此页无任务,用户设置为不跳转,脚本已结束运行,如需自动跳转,请编辑脚本代码参数', 'green');
}
return;
}
for (let i = 0, l = jobList.length; i < l; i++) {
let item = jobList[i];
if (item['type'] == 'video') {
video_getReady(item);
} else if (item['type'] == 'document') {
missionList['m' + item['jobid']] = {
'type': 'document',
'jtoken': item['jtoken'],
'jobid': item['jobid'],
'name': item['property']['name'],
'done': false,
'running': false
};
_d.getElementById('joblist').innerHTML += `
` + '[文档]' + item['property']['name'] + `
`
} else if (item['type'] == 'workid' && _w.top.unrivalDoWork == '1') {
missionList['m' + item['jobid']] = {
'type': 'work',
'workid': item['property']['workid'],
'jobid': item['jobid'],
'name': item['property']['title'],
'enc': item['enc'],
'done': false,
'running': false
};
_d.getElementById('joblist').innerHTML += `
` + '[章节测试]' + item['property']['title'] + `
`
} else {
try {
let jobName = item['property']['name'];
if (jobName == undefined) {
jobName = item['property']['title'];
}
_d.getElementById('joblist').innerHTML += `
`
} catch (e) { }
}
}
loopjob();
} else if (_l.href.includes("mycourse/studentstudy")) {
var audiofile =
'data:audio/ogg;base64,T2dnUwACAAAAAAAAAABwRPFFAAAAAGFtEqwBHgF2b3JiaXMAAAAAAUAfAAAAAAAAUHgAAAAAAACZAU9nZ1MAAAAAAAAAAAAAcETxRQEAAAA7J4IBDP8F////////////tQN2b3JiaXMvAAAAWGlwaC5PcmcgbGliVm9yYmlzIEkgMjAxNDAxMjIgKFR1cnBha8OkcsOkamlpbikGAAAAJQAAAEVOQ09ERVI9U291bmQgU3R1ZGlvLCBsaWJWb3JiaXMgMS4zLjEbAAAAQUxCVU0gQVJUSVNUPUFkdmVudHVyZSBMYW5kFAAAAEFMQlVNPUFkdmVudHVyZSBMYW5kIQAAAEVOQ09ESU5HIEFQUExJQ0FUSU9OPVNvdW5kIFN0dWRpbxUAAABBUlRJU1Q9QWR2ZW50dXJlIExhbmQjAAAAVElUTEU9RW1wdHkgTG9vcCBGb3IgSlMgUGVyZm9ybWFuY2UBBXZvcmJpcxJCQ1YBAAABAAxSFCElGVNKYwiVUlIpBR1jUFtHHWPUOUYhZBBTiEkZpXtPKpVYSsgRUlgpRR1TTFNJlVKWKUUdYxRTSCFT1jFloXMUS4ZJCSVsTa50FkvomWOWMUYdY85aSp1j1jFFHWNSUkmhcxg6ZiVkFDpGxehifDA6laJCKL7H3lLpLYWKW4q91xpT6y2EGEtpwQhhc+211dxKasUYY4wxxsXiUyiC0JBVAAABAABABAFCQ1YBAAoAAMJQDEVRgNCQVQBABgCAABRFcRTHcRxHkiTLAkJDVgEAQAAAAgAAKI7hKJIjSZJkWZZlWZameZaouaov+64u667t6roOhIasBADIAAAYhiGH3knMkFOQSSYpVcw5CKH1DjnlFGTSUsaYYoxRzpBTDDEFMYbQKYUQ1E45pQwiCENInWTOIEs96OBi5zgQGrIiAIgCAACMQYwhxpBzDEoGIXKOScggRM45KZ2UTEoorbSWSQktldYi55yUTkompbQWUsuklNZCKwUAAAQ4AAAEWAiFhqwIAKIAABCDkFJIKcSUYk4xh5RSjinHkFLMOcWYcowx6CBUzDHIHIRIKcUYc0455iBkDCrmHIQMMgEAAAEOAAABFkKhISsCgDgBAIMkaZqlaaJoaZooeqaoqqIoqqrleabpmaaqeqKpqqaquq6pqq5seZ5peqaoqp4pqqqpqq5rqqrriqpqy6ar2rbpqrbsyrJuu7Ks256qyrapurJuqq5tu7Js664s27rkearqmabreqbpuqrr2rLqurLtmabriqor26bryrLryratyrKua6bpuqKr2q6purLtyq5tu7Ks+6br6rbqyrquyrLu27au+7KtC7vourauyq6uq7Ks67It67Zs20LJ81TVM03X9UzTdVXXtW3VdW1bM03XNV1XlkXVdWXVlXVddWVb90zTdU1XlWXTVWVZlWXddmVXl0XXtW1Vln1ddWVfl23d92VZ133TdXVblWXbV2VZ92Vd94VZt33dU1VbN11X103X1X1b131htm3fF11X11XZ1oVVlnXf1n1lmHWdMLqurqu27OuqLOu+ruvGMOu6MKy6bfyurQvDq+vGseu+rty+j2rbvvDqtjG8um4cu7Abv+37xrGpqm2brqvrpivrumzrvm/runGMrqvrqiz7uurKvm/ruvDrvi8Mo+vquirLurDasq/Lui4Mu64bw2rbwu7aunDMsi4Mt+8rx68LQ9W2heHVdaOr28ZvC8PSN3a+AACAAQcAgAATykChISsCgDgBAAYhCBVjECrGIIQQUgohpFQxBiFjDkrGHJQQSkkhlNIqxiBkjknIHJMQSmiplNBKKKWlUEpLoZTWUmotptRaDKG0FEpprZTSWmopttRSbBVjEDLnpGSOSSiltFZKaSlzTErGoKQOQiqlpNJKSa1lzknJoKPSOUippNJSSam1UEproZTWSkqxpdJKba3FGkppLaTSWkmptdRSba21WiPGIGSMQcmck1JKSamU0lrmnJQOOiqZg5JKKamVklKsmJPSQSglg4xKSaW1kkoroZTWSkqxhVJaa63VmFJLNZSSWkmpxVBKa621GlMrNYVQUgultBZKaa21VmtqLbZQQmuhpBZLKjG1FmNtrcUYSmmtpBJbKanFFluNrbVYU0s1lpJibK3V2EotOdZaa0ot1tJSjK21mFtMucVYaw0ltBZKaa2U0lpKrcXWWq2hlNZKKrGVklpsrdXYWow1lNJiKSm1kEpsrbVYW2w1ppZibLHVWFKLMcZYc0u11ZRai621WEsrNcYYa2415VIAAMCAAwBAgAlloNCQlQBAFAAAYAxjjEFoFHLMOSmNUs45JyVzDkIIKWXOQQghpc45CKW01DkHoZSUQikppRRbKCWl1losAACgwAEAIMAGTYnFAQoNWQkARAEAIMYoxRiExiClGIPQGKMUYxAqpRhzDkKlFGPOQcgYc85BKRljzkEnJYQQQimlhBBCKKWUAgAAChwAAAJs0JRYHKDQkBUBQBQAAGAMYgwxhiB0UjopEYRMSielkRJaCylllkqKJcbMWomtxNhICa2F1jJrJcbSYkatxFhiKgAA7MABAOzAQig0ZCUAkAcAQBijFGPOOWcQYsw5CCE0CDHmHIQQKsaccw5CCBVjzjkHIYTOOecghBBC55xzEEIIoYMQQgillNJBCCGEUkrpIIQQQimldBBCCKGUUgoAACpwAAAIsFFkc4KRoEJDVgIAeQAAgDFKOSclpUYpxiCkFFujFGMQUmqtYgxCSq3FWDEGIaXWYuwgpNRajLV2EFJqLcZaQ0qtxVhrziGl1mKsNdfUWoy15tx7ai3GWnPOuQAA3AUHALADG0U2JxgJKjRkJQCQBwBAIKQUY4w5h5RijDHnnENKMcaYc84pxhhzzjnnFGOMOeecc4wx55xzzjnGmHPOOeecc84556CDkDnnnHPQQeicc845CCF0zjnnHIQQCgAAKnAAAAiwUWRzgpGgQkNWAgDhAACAMZRSSimllFJKqKOUUkoppZRSAiGllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimVUkoppZRSSimllFJKKaUAIN8KBwD/BxtnWEk6KxwNLjRkJQAQDgAAGMMYhIw5JyWlhjEIpXROSkklNYxBKKVzElJKKYPQWmqlpNJSShmElGILIZWUWgqltFZrKam1lFIoKcUaS0qppdYy5ySkklpLrbaYOQelpNZaaq3FEEJKsbXWUmuxdVJSSa211lptLaSUWmstxtZibCWlllprqcXWWkyptRZbSy3G1mJLrcXYYosxxhoLAOBucACASLBxhpWks8LR4EJDVgIAIQEABDJKOeecgxBCCCFSijHnoIMQQgghREox5pyDEEIIIYSMMecghBBCCKGUkDHmHIQQQgghhFI65yCEUEoJpZRSSucchBBCCKWUUkoJIYQQQiillFJKKSGEEEoppZRSSiklhBBCKKWUUkoppYQQQiillFJKKaWUEEIopZRSSimllBJC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',
audioPlayer = new Audio(audiofile);
_w.top.backNow = 0;
audioPlayer.loop = true;
_w.audioPlayer = audioPlayer;
setInterval(function () {
try {
_w.jQuery.fn.viewer.Constructor.prototype.show = () => { };
} catch (e) {
}
}, 1000);
try {
_w.unrivalScriptList.push('Fuck me please');
} catch (e) {
_w.unrivalScriptList = ['Fuck me please'];
}
function checkOffline() {
let dleft = _d.getElementsByClassName('left');
if (dleft.length == 1) {
let img = dleft[0].getElementsByTagName('img');
if (img.length == 1) {
if (img[0].src.indexOf('loading.gif') != -1) {
return true;
}
}
}
return false;
}
setInterval(function () {
if (checkOffline()) {
setTimeout(function () {
if (checkOffline()) {
_l.reload();
}
}, 10000)
}
}, 3000);
_d.addEventListener('visibilitychange', function () {
var c = 0;
if (_w.top.backNow == 0) {
_d.title = '⚠️请先激活挂机';
return
} else {
_d.title = '学生学习页面';
}
if (_d.hidden) {
audioPlayer.play();
var timer = setInterval(function () {
if (c) {
_d.title = '🙈挂只因中';
c = 0;
} else {
_d.title = '🙉挂只因中';
c = 1;
}
if (!_d.hidden) {
clearInterval(timer);
_d.title = '学生学习页面';
}
}, 1300);
} else {
audioPlayer.pause();
}
});
_w.unrivalgetTeacherAjax = _w.getTeacherAjax;
_w.getTeacherAjax = (courseid, classid, cid) => {
if (cid == getQueryVariable('chapterId')) {
return;
}
_w.top.unrivalPageRd = '';
_w.unrivalgetTeacherAjax(courseid, classid, cid);
}
if (disableMonitor == 1) {
_w.appendChild = _w.Element.prototype.appendChild;
_w.Element.prototype.appendChild = function () {
try {
if (arguments[0].src.indexOf('detect.chaoxing.com') > 0) {
return;
}
} catch (e) { }
_w.appendChild.apply(this, arguments);
};
}
_w.jump = false;
setInterval(function () {
if (getQueryVariable('mooc2') == '1') {
let tabs = _d.getElementsByClassName('posCatalog_select');
for (let i = 0, l = tabs.length; i < l; i++) {
let tabId = tabs[i].getAttribute('id');
if (tabId.indexOf('cur') >= 0 && tabs[i].getAttribute('class') == 'posCatalog_select') {
tabs[i].setAttribute('onclick', "getTeacherAjax('" + courseId + "','" + classId +
"','" + tabId.replace('cur', '') + "');");
}
}
} else {
let h4s = _d.getElementsByTagName('h4'),
h5s = _d.getElementsByTagName('h5');
for (let i = 0, l = h4s.length; i < l; i++) {
if (h4s[i].getAttribute('id').indexOf('cur') >= 0) {
h4s[i].setAttribute('onclick', "getTeacherAjax('" + courseId + "','" + classId +
"','" + h4s[i].getAttribute('id').replace('cur', '') + "');");
}
}
for (let i = 0, l = h5s.length; i < l; i++) {
if (h5s[i].getAttribute('id').indexOf('cur') >= 0) {
h5s[i].setAttribute('onclick', "getTeacherAjax('" + courseId + "','" + classId +
"','" + h5s[i].getAttribute('id').replace('cur', '') + "');");
}
}
}
}, 1000);
setInterval(function () {
let but = null;
if (_w.jump) {
_w.jump = false;
_w.top.unrivalDoneWorkId = '';
_w.jjump = (rd) => {
if (rd != _w.top.unrivalPageRd) {
return;
}
try {
setTimeout(function () {
if (jumpType == 1) {
if (getQueryVariable('mooc2') == '1') {
but = _d.getElementsByClassName(
'jb_btn jb_btn_92 fs14 prev_next next');
} else {
but = _d.getElementsByClassName('orientationright');
}
try {
setTimeout(function () {
if (rd != _w.top.unrivalPageRd) {
return;
}
but[0].click();
}, 2000);
} catch (e) { }
return;
}
if (getQueryVariable('mooc2') == '1') {
let ul = _d.getElementsByClassName('prev_ul')[0],
lis = ul.getElementsByTagName('li');
for (let i = 0, l = lis.length; i < l; i++) {
if (lis[i].getAttribute('class') == 'active') {
if (i + 1 >= l) {
break;
} else {
try {
lis[i + 1].click();
} catch (e) { }
return;
}
}
}
let tabs = _d.getElementsByClassName('posCatalog_select');
for (let i = 0, l = tabs.length; i < l; i++) {
if (tabs[i].getAttribute('class') ==
'posCatalog_select posCatalog_active') {
while (i + 1 < tabs.length) {
let nextTab = tabs[i + 1];
if ((nextTab.innerHTML.includes(
'icon_Completed prevTips') && _w.top
.unrivalReviewMode == '0') || nextTab
.innerHTML.includes(
'catalog_points_er prevTips')) {
i++;
continue;
}
if (nextTab.id.indexOf('cur') < 0) {
i++;
continue;
}
let clickF = setInterval(function () {
if (rd != _w.top.unrivalPageRd) {
clearInterval(clickF);
return;
}
nextTab.click();
}, 2000);
break;
}
break;
}
}
} else {
let div = _d.getElementsByClassName('tabtags')[0],
spans = div.getElementsByTagName('span');
for (let i = 0, l = spans.length; i < l; i++) {
if (spans[i].getAttribute('class').indexOf('currents') >=
0) {
if (i + 1 == l) {
break;
} else {
try {
spans[i + 1].click();
} catch (e) { }
return;
}
}
}
let tabs = _d.getElementsByTagName('span'),
newTabs = [];
for (let i = 0, l = tabs.length; i < l; i++) {
if (tabs[i].getAttribute('style') != null && tabs[i]
.getAttribute('style').indexOf(
'cursor:pointer;height:18px;') >= 0) {
newTabs.push(tabs[i]);
}
}
tabs = newTabs;
for (let i = 0, l = tabs.length; i < l; i++) {
if (tabs[i].parentNode.getAttribute('class') ==
'currents') {
while (i + 1 < tabs.length) {
let nextTab = tabs[i + 1].parentNode;
if ((nextTab.innerHTML.includes(
'roundpoint blue') && _w.top
.unrivalReviewMode == '0') || nextTab
.innerHTML.includes('roundpointStudent lock')
) {
i++;
continue;
}
if (nextTab.id.indexOf('cur') < 0) {
i++;
continue;
}
let clickF = setInterval(function () {
if (rd != _w.top.unrivalPageRd) {
clearInterval(clickF);
return;
}
nextTab.click();
}, 2000);
break;
}
break;
}
}
}
}, 2000);
} catch (e) { }
}
_w.onReadComplete1();
setTimeout('jjump("' + _w.top.unrivalPageRd + '")', 2856);
}
}, 200);
} else if (_l.href.indexOf("work/phone/doHomeWork") > 0) {
var wIdE = _d.getElementById('workLibraryId') || _d.getElementById('oldWorkId'),
wid = wIdE.value;
_w.top.unrivalWorkDone = false;
_w.aalert = _w.alert;
_w.alert = (msg) => {
if (msg == '保存成功') {
_w.top.unrivalDoneWorkId = getQueryVariable('workId');
return;
}
aalert(msg);
}
if (_w.top.unrivalDoneWorkId == getQueryVariable('workId')) {
_w.top.unrivalWorkDone = true;
return;
}
_w.confirm = (msg) => {
return true;
}
var questionList = [],
questionsElement = _d.getElementsByClassName('Py-mian1'),
questionNum = questionsElement.length,
totalQuestionNum = questionNum;
for (let i = 0; i < questionNum; i++) {
let questionElement = questionsElement[i],
idElements = questionElement.getElementsByTagName('input'),
questionId = '0',
question = questionElement.getElementsByClassName('Py-m1-title fs16')[0].innerHTML;
question = handleImgs(question).replace(/(<([^>]+)>)/ig, '').replace(/[0-9]{1,3}.\[(.*?)\]/ig, '').replaceAll('\n',
'').replace(/^\s+/ig, '').replace(/\s+$/ig, '');
for (let z = 0, k = idElements.length; z < k; z++) {
try {
if (idElements[z].getAttribute('name').indexOf('answer') >= 0) {
questionId = idElements[z].getAttribute('name').replace('type', '');
break;
}
} catch (e) {
console.log(e);
continue;
}
}
if (questionId == '0' || question == '') {
continue;
}
typeE = questionElement.getElementsByTagName('input');
if (typeE == null || typeE == []) {
continue;
}
let typeN = 'fuckme';
for (let g = 0, h = typeE.length; g < h; g++) {
if (typeE[g].id == 'answertype' + questionId.replace('answer', '').replace('check', '')) {
typeN = typeE[g].value;
break;
}
}
if (['0', '1', '3'].indexOf(typeN) < 0) {
continue;
}
type = {
'0': '单选题',
'1': '多选题',
'3': '判断题'
}[typeN];
let optionList = {
length: 0
};
if (['单选题', '多选题'].indexOf(type) >= 0) {
let answersElements = questionElement.getElementsByClassName('answerList')[0].getElementsByTagName(
'li');
for (let x = 0, j = answersElements.length; x < j; x++) {
let optionE = answersElements[x],
optionTextE = trim(optionE.innerHTML.replace(/(^\s*)|(\s*$)/g, "")),
optionText = optionTextE.slice(1).replace(/(^\s*)|(\s*$)/g, ""),
optionValue = optionTextE.slice(0, 1),
optionId = optionE.getAttribute('id-param');
if (optionText == '') {
break;
}
optionList[optionText] = {
'id': optionId,
'value': optionValue
}
optionList.length++;
}
if (answersElements.length != optionList.length) {
continue;
}
}
questionList.push({
'question': question,
'type': type,
'questionid': questionId,
'options': optionList
});
}
var qu = null,
nowTime = -4000,
busyThread = questionList.length,
ctOnload = function (res, quu) {
busyThread -= 1;
var ctResult = {
'code': 0,
'data': '未找到答案'
};
if (res) {
try {
var responseText = res.responseText,
ctResult = JSON.parse(responseText);
} catch (e) {
console.log(e);
_w.top.unrivalWorkInfo = '查题错误,响应解析失败';
return;
}
}
try {
let choiceEs = _d.getElementsByTagName('li');
// 新API: code === 1 表示成功,code === 0 表示失败
if (ctResult['code'] !== 1) {
try {
if (ctResult['msg'] !== undefined) {
_w.top.unrivalWorkInfo = ctResult['msg'];
} else {
_w.top.unrivalWorkInfo = '未找到答案';
}
} catch (e) { }
return;
}
try {
var result = ctResult['data'];
} catch (e) {
_w.top.unrivalWorkInfo = '答案解析失败';
return;
}
_w.top.unrivalWorkInfo = '题目:' + quu['question'] + ':' + result;
switch (quu['type']) {
case '判断题':
(function () {
let answer = 'abaabaaba';
if ('正确是对√Tri'.indexOf(result) >= 0) {
answer = 'true';
} else if ('错误否错×Fwr'.indexOf(result) >= 0) {
answer = 'false';
}
for (let u = 0, k = choiceEs.length; u < k; u++) {
if (choiceEs[u].getAttribute('val-param') ==
answer && choiceEs[u].getAttribute(
'id-param') == quu['questionid'].replace(
'answer', '')) {
choiceEs[u].click();
questionNum -= 1;
return;
}
}
if (randomDo == 1 && accuracy < 100) {
_w.top.unrivalWorkInfo = quu['question'] +
':未找到正确答案,自动选【错】';
for (let u = 0, k = choiceEs.length; u <
k; u++) {
if (choiceEs[u].getElementsByTagName('em')
.length < 1) {
continue;
}
if (choiceEs[u].getAttribute('val-param') ==
'false' && choiceEs[u].getAttribute(
'id-param') == quu['questionid']
.replace('answer', '')) {
choiceEs[u].click();
return;
}
}
}
})();
break;
case '单选题':
(function () {
let answerData = result;
for (let option in quu['options']) {
if (trim(option).replace(/\s/ig, '') == trim(answerData).replace(/\s/ig, '') || trim(
option).replace(/\s/ig, '').includes(trim(answerData).replace(/\s/ig, '')) ||
trim(answerData).replace(/\s/ig, '').includes(trim(option).replace(/\s/ig, ''))) {
for (let y = 0, j = choiceEs.length; y <
j; y++) {
if (choiceEs[y].getElementsByTagName(
'em').length < 1) {
continue;
}
if (choiceEs[y].getElementsByTagName(
'em')[0].getAttribute(
'id-param') == quu['options'][
option
]['value'] && choiceEs[y]
.getAttribute('id-param') == quu[
'questionid'].replace('answer',
'')) {
if (!choiceEs[y].getAttribute(
'class').includes('cur')) {
choiceEs[y].click();
}
questionNum -= 1;
return;
}
}
}
}
if (randomDo == 1 && accuracy < 100) {
_w.top.unrivalWorkInfo = quu['question'] +
':未找到正确答案,自动选【B】';
for (let y = 0, j = choiceEs.length; y <
j; y++) {
if (choiceEs[y].getElementsByTagName('em')
.length < 1) {
continue;
}
if (choiceEs[y].getElementsByTagName('em')[
0].getAttribute('id-param') ==
'B' && choiceEs[y].getAttribute(
'id-param') == quu['questionid']
.replace('answer', '')) {
if (!choiceEs[y].getAttribute('class')
.includes('cur')) {
choiceEs[y].click();
}
return;
}
}
}
})();
break;
case '多选题':
(function () {
let answerData = trim(result).replace(/\s/ig, ''),
hasAnswer = false;
for (let option in quu['options']) {
if (answerData.includes(trim(option).replace(/\s/ig, ''))) {
for (let y = 0, j = choiceEs.length; y <
j; y++) {
if (choiceEs[y].getElementsByTagName(
'em').length < 1) {
continue;
}
if (choiceEs[y].getElementsByTagName(
'em')[0].getAttribute(
'id-param') == quu['options'][
option
]['value'] && choiceEs[y]
.getAttribute('id-param') == quu[
'questionid'].replace('answer',
'')) {
if (!choiceEs[y].getAttribute(
'class').includes('cur')) {
choiceEs[y].click();
}
hasAnswer = true;
break;
}
}
}
}
if (hasAnswer) {
questionNum -= 1;
} else if (randomDo == 1 && accuracy < 100) {
_w.top.unrivalWorkInfo = quu['question'] +
':未找到正确答案,自动全选';
for (let y = 0, j = choiceEs.length; y <
j; y++) {
if (choiceEs[y].getElementsByTagName('em')
.length < 1) {
continue;
}
if (choiceEs[y].getAttribute('id-param') ==
quu['questionid'].replace('answer', '')
) {
if (!choiceEs[y].getAttribute('class')
.includes('cur')) {
choiceEs[y].click();
}
}
}
}
})();
break;
}
} catch (e) {
console.log(e);
}
}
for (let i = 0, l = questionList.length; i < l; i++) {
nowTime += parseInt(Math.random() * 2000 + 2500, 10);
setTimeout(function () {
qu = questionList[i];
// 构建新API请求参数
let param = 'question=' + encodeURIComponent(qu['question']) +
'&key=' + encodeURIComponent(token || '');
// 添加题目类型(可选)
if (qu['type']) {
param += '&type=' + encodeURIComponent(qu['type']);
}
// 构建选择题选项列表(anslist)
if (['单选题', '多选题'].indexOf(qu['type']) >= 0 && qu['options'] && qu['options'].length > 0) {
let anslist = [];
for (let option in qu['options']) {
if (option !== 'length' && qu['options'].hasOwnProperty(option)) {
anslist.push(trim(option));
}
}
if (anslist.length > 0) {
param += '&anslist=' + encodeURIComponent(JSON.stringify(anslist));
}
}
GM_xmlhttpRequest({
method: "POST",
headers: {
'Content-type': 'application/x-www-form-urlencoded',
},
url: ctUrl,
timeout: 5000,
data: param,
onload: function (res) {
ctOnload(res, qu);
},
onerror: function () {
ctOnload(false, qu);
},
ontimeout: function () {
ctOnload(false, qu);
}
});
}, nowTime);
}
var workInterval = setInterval(function () {
if (busyThread != 0) {
return;
}
clearInterval(workInterval);
if (Math.floor((totalQuestionNum - questionNum) / totalQuestionNum) * 100 >= accuracy && _w.top
.unrivalAutoSubmit == '1') {
_w.top.unrivalDoneWorkId = getQueryVariable('workId');
_w.top.unrivalWorkInfo = '正确率符合标准,已提交答案';
setTimeout(function () {
submitCheckTimes();
escapeBlank()
submitAction()
// setTimeout(function() {
// document.querySelector(".cx_alert-blue").click()
// }, parseInt(1000));
}, parseInt(Math.random() * 2000 + 3000, 10));
} else if (_w.top.unrivalAutoSave == 1) {
_w.top.unrivalWorkInfo = '正确率不符合标准或未设置自动提交,已自动保存答案';
if (Math.floor((totalQuestionNum - questionNum) / totalQuestionNum) >= 0) {
setTimeout(function () {
_w.top.unrivalDoneWorkId = getQueryVariable('workId');
_w.noSubmit();
}, 2000);
}
} else {
_w.top.unrivalWorkInfo = '用户设置为不自动保存答案,请手动提交或保存作业';
}
}, 1000);
} else if (_l.href.includes('work/phone/selectWorkQuestionYiPiYue')) {
_w.top.unrivalWorkDone = true;
_w.top.unrivalDoneWorkId = getQueryVariable('workId');
} else if (_l.href.includes('stat2-ans.chaoxing.com/task/s/index')) {
if (_w.top == _w) {
return;
}
_d.getElementsByClassName('page-container studentStatistic')[0].setAttribute('class', 'studentStatistic');
_d.getElementsByClassName('page-item item-task-list minHeight390')[0].remove();
_d.getElementsByClassName('subNav clearfix')[0].remove();
setInterval(function () {
_l.reload();
}, 90000);
} else if (_l.href.includes('passport2.') && _l.href.includes('login?refer=http') && autoLogin == 1) {
if (!(/^1[3456789]\d{9}$/.test(phoneNumber))) {
alert('自动登录的手机号填写错误,无法登陆')
return;
}
if (password == '') {
alert('未填写登录密码,无法登陆')
return;
}
GM_xmlhttpRequest({
method: "get",
url: 'https://passport2-api.chaoxing.com/v11/loginregister?cx_xxt_passport=json&uname=' +
phoneNumber + '&code=' + encodeURIComponent(password),
onload: function (res) {
try {
let ispass = JSON.parse(res.responseText);
if (ispass['status']) {
_l.href = decodeURIComponent(getQueryVariable('refer'));
} else {
alert(ispass['mes']);
}
} catch (err) {
console.log(res.responseText);
alert('登陆失败');
}
},
onerror: function (err) {
alert('登陆错误');
}
});
} else if (_l.href.includes('unrivalxxtbackground')) {
_d.getElementsByTagName("html")[0].innerHTML = `
学习通挂机小助手
`;
// 日志系统(后台挂机模式)
var logs = {
logArry: [],
addLog: function (str, color = "black") {
if (this.logArry.length >= CONSTANTS.LOG_MAX_LENGTH) {
this.logArry.shift();
}
const time = formatTime();
const logEntry = `[${time.hour}:${time.minute}:${time.second}] ${str}`;
this.logArry.push(logEntry);
const logElement = _d.getElementById('log');
if (logElement) {
logElement.innerHTML = this.logArry.join('
');
logElement.scrollTop = logElement.scrollHeight;
}
}
};
logs.addLog('此页面不必保持在最前端,后台会自动进行任务', 'green');
setInterval(function () {
logs.addLog('此页面不必保持在最前端,后台会自动进行任务', 'green');
logs.addLog('如想禁用后台刷视频功能,请关闭脚本并重启浏览器', 'blue');
}, 120000)
GM_addValueChangeListener('unrivalxxtbackgroundinfo', function (name, old_value, new_value, remote) {
if (old_value != new_value) {
logs.addLog(new_value);
}
});
setInterval(function () {
if (Math.round(new Date() / 1000) - parseInt(GM_getValue('unrivalBackgroundVideoEnable', '6')) >
CONSTANTS.BACKGROUND_CHECK_INTERVAL) {
logs.addLog('超星挂机小助手可能运行异常,如页面无反应,请尝试重启脚本猫或重启浏览器(脚本猫0.9.0版本有此问题)');
}
}, 10000);
var loopShow = () => {
let jobList = GM_getValue('unrivalBackgroundList', '1');
if (jobList == '1') {
_d.getElementById('joblist').innerHTML = '请将“超星挂机小助手”升级到最新版并重启浏览器';
} else {
try {
let jobHtml = '';
for (let i = 0, l = jobList.length; i < l; i++) {
let status = '';
if (jobList[i]['done']) {
status = '已完成';
} else if (parseInt(jobList[i]['playTime']) > 0) {
status = '进行中';
} else {
status = '等待中';
}
if (jobList[i]['review']) {
status += ':复习模式';
}
jobHtml += `
` + '[' + status + ']' + jobList[i]['name'] + `
`
}
_d.getElementById('joblist').innerHTML = jobHtml;
} catch (e) {
_d.getElementById('joblist').innerHTML = '请将“超星挂机小助手”升级到最新版并重启浏览器!';
}
}
}
loopShow();
setInterval(loopShow, 10000);
}
})();