一、插件介绍:
中华会计网校刷视频插件是一款电脑上的运行的插件,例如快速刷课程视频进度,刷学习时长。
二、插件功能:
1、完成课程进度为100%
2、完成课程学习时长
插件运行效果图如下:
已集成好脚本的浏览器下载:https://wukongstudio.lanzoui.com/b01i5rkmj
三、插件实现的原理
主要是通过浏览器安装油猴脚本来实现。油猴脚本适用于Chrome和Firefox等浏览器。油猴脚本将在您的用户脚本管理方面提供更多的便利。它提供了例如便捷脚本安装、自动更新检查、标签中的脚本运行状况速览、内置的编辑器等众多功能。
四、插件主要代码
function gm_get(name, defaultValue) {
if (typeof GM_getValue === 'function') {
return new Promise((resolve, reject) => {
resolve(GM_getValue(name, defaultValue));
})
} else {
return GM.getValue(name, defaultValue);
}
}
function gm_set(name, defaultValue) {
if (typeof GM_setValue === 'function') {
GM_setValue(name, defaultValue);
} else {
GM.setValue(name, defaultValue);
}
}
function gm_del(name) {
if (typeof GM_deleteValue === 'function') {
GM_deleteValue(name);
} else {
GM.deleteValue(name);
}
}
// 获取浏览器类型,函数取自网站源代码297行
function myBrowser() {
let userAgent = _self.navigator.userAgent,
isOpera = userAgent.indexOf("Opera") > -1;
if (isOpera) {
return "Opera"
}
;
if (userAgent.indexOf("Firefox") > -1) {
return "FF";
}
;
if (userAgent.indexOf("Chrome") > -1) {
return "Chrome";
}
;
if (userAgent.indexOf("Safari") > -1) {
return "Safari";
}
;
if (userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera) {
return "IE";
}
;
}
function analyse_common(data) {
/*解析普通课程*/
setTimeout(function () {
let now_course = document.querySelector("#header ul").innerText.split("\n");
//console.log(now_course)
let keyword = '';
let res = now_course.map(value => {
keyword += value + "-";
return value * value;
});
//console.log(conten_send_data('common', setting.utoken, url, res, data))
setting.utoken = GM_getValue('utoken');
let send_data = conten_send_data('common', setting.utoken, url, keyword, _self.btoa(encodeURIComponent(JSON.stringify(data))));
console.log(send_data);
GM_xmlhttpRequest({
method: 'POST',
url: turl + 'getUschooldecode.php',
//url: turl + '/api/getUschooldecode.php',
data: _self.atob("cmVzPQ==") + send_data,
headers: {
'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',
},
onerror: (error) => {
//isQuestion = false;
alert("获取答案失败!/n网络或服务器错误,见常见问题Q9");
},
ontimeout: (error) => {
//isQuestion = false;
alert("获取答案失败!/n网络超时");
},
onload: function (xhr) {
let rejson = JSON.parse(xhr.responseText);
//console.log("暂时", rejson)
let page = String(rejson.page);
//console.log("页数", page)
if (rejson.status != 0) {
/*无答案 隐藏窗口*/
return;
}
clearAnswerView()//在添加答案前应清空上次显示的答案
if (page > 0) {
let res = rejson.msg.map(value => {
return value;
});
//console.log("当前数组", res.length)
for (let i = 0; i < res.length; i++) {
let arr = res[i].answer
new Promise(function (resolve, reject) {
setTimeout(function () {
analyseAnswers_common(resolve, res[i].answer[0])
}, 1e3);
}).then(() => {
console.log(res[i].answer[0])
res[i].answer[0].forEach(function (item, index) {
console.log(item);
appendAnswerView(item);
});
});
}
//return rejson;
}