// ==UserScript==
// @name aq100
// @namespace https://bjdc.100anquan.com/
// @version 1.0
// @description 安全生产快速学习
// @author Shining
// @match https://*.100anquan.com/*
// @match http://*.100anquan.com/*
// @grant unsafeWindow
// @grant GM_log
// @grant GM_xmlhttpRequest
// @grant GM_setValue
// @grant GM_getValue
// @connect 100anquan.com
// @run-at document-end
// ==/使用网页自带的@require https://libs.baidu.com/jquery/1.8.3/jquery.min.js
// ==/不require引入jquery时
// ==/不引入jquery,$设置的是原网页的jquery,如果设置为document-start时:因为提前注入,无法使用原网页的jquery,会提示找不到$
// ==/unsafeWindow 沙盒模式
// ==/document-end 文件加载后运行插件
// ==/UserScript==
var tooberUrl = unsafeWindow.location.href;
var $ = unsafeWindow.$;
GM_log(tooberUrl);
window.onload = function(){
if(tooberUrl == "https://bjdc.100anquan.com/" || tooberUrl.indexOf("loginGeneralV2/") != -1){
GM_log("进入首页");
var logFun = unsafeWindow.GetLoginInfo;
unsafeWindow.GetLoginInfo = function(){
GM_log("登录(不可用)事件");
//----拦截方法1
//可以logFun.toString()
//替换字符串后,再见eval
//var funStr = logFun.toString();
//GM_log(funStr);
//return unsafeWindow.eval(funStr);
//----拦截方法2
var accountName = $("#txtLogonUserCode");
if(accountName.length > 0 != undefined && accountName.val() != ""){
var user = {
userName:accountName.val()
};
GM_setValue("aq100_user",user);
}
GM_log(accountName);
logFun();
}
}if(tooberUrl.indexOf("/course/courseEleView?") != -1){
//因为@run-at document-start,在此设置页面加载完才运行
GM_log("学习项");
//注意前端函数
unsafeWindow.hackTime = hackTime;
//------手动按钮----
$("#Menu").before('<input id="hackBtn" style="background-color:yellow;font-size:20px" type="button" style="height:60px" onclick="hackTime()" value="【破解学习】">');
var thisUrl = $("#Menu li a font[color='blue']");
var nextUrl = thisUrl.parent().parent().next().find("a");
var nextOnClick = undefined;
if(nextUrl.length > 0){
nextOnClick = nextUrl.attr("onclick");
if(nextOnClick != undefined){
var str = nextUrl.text();
$("#Menu").before('<div style="color:red;font-size:18px">破解完将自动翻到【下一页】<br/>【'+str+'】</div>');
}else{
$("#Menu").before('<div style="color:green;font-size:18px">本页已学习完毕,准备【返回课程】列表</div>');
}
}else{
$("#Menu").before('<div style="color:green;font-size:18px">本页已学习完毕,准备【返回课程】列表</div>');
}
//------手动按钮-------------
//自动执行
window.setInterval(function(){hackTime(nextOnClick);},1000);
}else if(tooberUrl.indexOf("/directExam/examIndexAutoV2") != -1){
//HTML directExam();
//https://bjdc.100anquan.com/directExam/freePracticeV2/2141/4456/stochastic
//(单/多选、判断题都有的考试地) https://bjdc.100anquan.com/directExam/examIndexAutoV2?examId=1523&examPaperId=19461&orgProjectId=2900
GM_log("考试");
var subBtn = $("div[onclick='subTest()']");
if(subBtn.length > 0){
if($("div").length > 0){
$("div").eq(0).before('<h1 style="text-align:center;background-color:black;color:white">已为您答完,您可以校对【答案】,或直接点击【交卷】完成考试。</h1>');
}
}
$("ul").each(function(){
var ul = $(this);
var dl = ul.parent().parent().parent().parent().attr("id");
GM_log(dl);
var sty=[];
if(dl != undefined){
sty = dl.split("_");
}
ul.find("li").each(function(){
var attr = $(this).attr('onclick');
if (typeof attr !== typeof undefined && attr !== false) {
if(attr.indexOf("chooseAnswer(") != -1){
//单选题chooseAnswer
//chooseAnswer('4','205549','0','0'); //最后一位是'1'是正确的
if(endWidth(attr,"'1');")){
$(this).append(' <strong style="background-color:green;font-size:20px;color:white">【✔】</strong>');
$(this).click(); //自动点击正确
if(sty.length >= 2){
$("#SHOWSTYLE_" + sty[1]).removeClass().addClass("li_2");
}
}
}else if(attr.indexOf("chooseJudgeAnswer(") != -1){
//判断题chooseJudgeAnswer
//chooseJudgeAnswer('T','332956','1')
//选择题以1结尾的应该选择正确,以0结尾的应该选择错误
if(endWidth(attr,"'1');")){
if ( ul.find(".hkmsg").length <= 0 ) { //避免重复添加
ul.find("li").eq(0).append(' <strong class="hkMsg" style="background-color:green;font-size:20px;color:white">【✔】</strong>');
ul.find("li").eq(0).click(); //自动点击正确
if(sty.length >= 2){
//$("#SHOWSTYLE_" + sty[1]).removeClass().addClass("li_2");
$("#SHOWSTYLE_" + sty[1]).removeClass();
$("#SHOWSTYLE_" + sty[1]).css({"border":"1px solid #44d441","background":"#ddfddc","color":"blue"});
}
}
}else{
if ( ul.find(".hkmsg").length <= 0) {
ul.find("li").eq(1).append(' <strong class="hkMsg" style="background-color:green;font-size:20px;color:white">【✔】</strong>');
ul.find("li").eq(1).click(); //自动点击错误
if(sty.length >= 2){
//$("#SHOWSTYLE_" + sty[1]).removeClass().addClass("li_2");
$("#SHOWSTYLE_" + sty[1]).removeClass();
$("#SHOWSTYLE_" + sty[1]).css({"border":"1px solid #44d441","background":"#ddfddc","color":"blue"});
}
}
}
}else if(attr.indexOf("chooseMoreAnswer(") != -1){
//多选题chooseAnswer
//chooseMoreAnswer('1','244380','0','1');; //最后一位是'1'是正确的
if(endWidth(attr,"'1');")){
$(this).append(' <strong style="background-color:green;font-size:20px;color:white">【✔】</strong>');
$(this).click(); //自动点击正确
if(sty.length >= 2){
//$("#SHOWSTYLE_" + sty[1]).removeClass().addClass("li_2");
$("#SHOWSTYLE_" + sty[1]).removeClass();
$("#SHOWSTYLE_" + sty[1]).css({"border":"1px solid #44d441","background":"#ddfddc","color":"red"});
}
}
}
}
});
});
}else if(tooberUrl.indexOf("/directExam/examInfoTestv2") != -1){
//HTML directExam();
//强行考试https://bjdc.100anquan.com/directExam/freePracticeV2/2141/4456/stochastic
GM_log("强行考试");
//也可以加button强引网址考试
//onclick
$(".tj_btn").before('<button style="background-color:yellow;font-size:20px" onclick="directExam();">强行考试</button>');
}else if(tooberUrl.indexOf("/loginV2/userLogin") != -1){
GM_log("跳过弱密码修改");
if($("html").html().indexOf("鉴于您的密码过于简单") != -1){
unsafeWindow.window.location.href = "https://bjdc.100anquan.com/index";
}
}else if(tooberUrl.indexOf("/course/personStudyPage/") != -1){
//https://bjdc.100anquan.com/daxing/course/personStudyPage/3292/21762
////查看考试地址https://bjdc.100anquan.com/directExam/examInfoTestv2/2141?orgProjectId=4456
GM_log("学习列表: ");
//gotoExam('1987','4460')
//var btn = $("input[onclick^='gotoExam(']");
//if(btn.length >0){
//判断jquery元素是否存在不能判断undefined需要判断length
//var arr = btn.eq(0).attr("onclick").match(/\d+/g);
//var url = "https://bjdc.100anquan.com/directExam/examInfoTestv2/" + arr[0] +"?orgProjectId=" + arr[1];
//GM_log("hack " + url);
//}
var tables = $("table");
if(tables.length >=1){
//加入提示
var div = tables.eq(1).before('<h3 style="text-align:center;background-color:black;color:white" >★ 破解插件正在运行 ★</h3>');
div = div.before('<h3 style="background-color:red;color:white" >★ 1 点击本页第一个项目,会自动学到最后一项 ★</h3>');
div = div.before('<h3 style="background-color:red;color:white" >★ 2 学完本页全部项后,会自动【申请学时】 ★</h3>');
div = div.before('<h3 style="background-color:red;color:white" >★ 3 申请完学时,可【返回】继续学习其它页 ★</h3>');
div = div.before('<h3 style="background-color:red;color:white" >■ 注:如果遇到网络卡顿,无法加载视频自动执行时,请按【F5】键刷新页面即可继续刷新学习 ■</h3>');
div = div.before('<h3 style="text-align:center;background-color:black;color:white" >★ 破解插件正在运行 ★</h3>');
}
//***自动申请学时
// 寻找是否有进入学习的按钮refreshPage(this,'31664','1');
var arr = $("input[onclick^='refreshPage(']")
if(arr.length > 0){
var flag = false;
var okNum = 0;//已学习的项
arr.each(function(){
var str = $(this).val();
if(str == "已学习"){
okNum++;
}
});
if(okNum == arr.length){
// 拦截修改autoPayScore里的alert,修改为申请成功才返回
// 避免重复刷新后又执行autoPayScore
var autoPayScore =unsafeWindow.autoPayScore;
var autoPayScoreStr = unsafeWindow.autoPayScore.toString();
autoPayScoreStr = autoPayScoreStr.replace('location = location;','');
autoPayScoreStr = autoPayScoreStr.replace('alert("申请成功!")','alert("申请学时成功!");location = location;');
if($("input[onclick='autoPayScore()']").length > 0 ){
GM_log("未申请学时,将自动申请");
//unsafeWindow.autoPayScore();
//拦截以后
//eval里的autoPayScoreStr字符串不是能直接执行的script
//而是定义的 function autoPayScore()方法;
//需要在eval后面追加立即执行字符串
unsafeWindow.eval(autoPayScoreStr+"autoPayScore();");
}else{
GM_log("已申请学时")
}
$("title").html("■已学完■");
}
}
}else if(tooberUrl.indexOf("/project/projectV2/") != -1){
//https://bjdc.100anquan.com/project/projectV2/4010/Detai
//破解后 https://bjdc.100anquan.com/person/personOrgSubjectList?orgProjectId=4515
GM_log("课程列表");
var regBtn = $("button[onclick^='registration(']").eq(0);
if (regBtn != undefined){
var onc = regBtn.attr("onclick");
//registration('0.0','2020-02-25 10:59:40.0')
if(onc != undefined && onc.indexOf("registration('0.0'") == -1){
//收费的
var substr = tooberUrl.match(/\/(\d+)\//);
if(substr.length >= 1){
var num = substr[0].replace(/\//g,'');
var script = "javascrtpt:window.location.href='https://bjdc.100anquan.com/person/personOrgSubjectList?orgProjectId="+num+"'";
regBtn.parent().before('<br/><button class="btn-primary" style="margin-right:100px;" onclick="' + script + '">破解学习</button>');
}
}
}
}
//else if(tooberUrl.indexOf("/course/personStudyPage/") != -1){
// // personStudyPage/4456/18881 orgProjectId/courseId
// // refreshPage(this,'59851','1');
// // goto https://bjdc.100anquan.com/daxing/course/courseEleView?elementId=59851&courseId=18881&wareIndex=1&orgProjectId=4456
// unsafeWindow.getItem = getItem //同名函数注入到前台
// $(".btn_ab").each(function(){
// var onc = $(this).attr("onclick");
// if(onc.indexOf("refreshPage") != -1){
// var arr = tooberUrl.split("\/");
// var orgProjectId = arr[arr.length - 2];
// var courseId = arr[arr.length - 1];
// var elementId = onc.split(",")[1].replace(/'/g,"");
// var wareIndex = onc.split(",")[2].replace(/'|\);/g,"");
// $(this).before('<input name="button2" type="button" class="btn_ab" id="button2" onclick="getItem('+elementId+','+courseId+','+wareIndex+','+orgProjectId+');" value="学习完毕">');
// }
// });
//}
function endWidth(str, target){
var start = str.length-target.length;
var arr = str.substr(start,target.length);
if(arr == target){
return true;
}
return false;
}
function getItem(elementId,courseId,wareIndex,orgProjectId){
var url = "https://bjdc.100anquan.com/daxing/course/courseEleView?elementId=" + elementId + "&courseId=" + courseId + "&wareIndex=" + wareIndex + "&orgProjectId="+orgProjectId;
get(url,function(html){
GM_log(html);
});
}
function get(url,call){
GM_xmlhttpRequest({
method: 'GET',
url: url,
headers: {},
onload: function(responseDetails) {
var html = responseDetails.responseText;
call(html);
}
});
}
function hackTime(nextOnClick){
var isFlash = false; //判断是否是flash控件播放
var player = unsafeWindow.window.cc_js_Player;
if(player == undefined){
isFlash = true;
}
var time = 0;
if(!isFlash){
time = Math.round(unsafeWindow.window.cc_js_Player.getDuration());
}else{
time = Math.round(unsafeWindow.player.j2s_getDuration());
}
if(!isNaN(time) && time > 0){
$("#stayInVideoTime").val(time);
unsafeWindow.ajaxSendData();
$("#hackBtn").val("已学完【"+time+"】秒");
$("#hackBtn").css({'background-color':'green','color':'white'});
$('#hackBtn').attr("disabled","disabled");
if(nextOnClick != undefined){
//有下一项则执行
//eval 如果传入的是function方法字符串,后面需要追加立即执行
unsafeWindow.eval(nextOnClick);
}else{
//没有则返回
unsafeWindow.returnForward();
}
}else{
var timestamp = new Date().getSeconds();
$("#hackBtn").val("网慢无法加载时按【F5】键刷新,视频加载中【" + timestamp +"】");
$("#hackBtn").css({'background-color':'red','color':'white'});
}
try
{
if(!isFlash){
unsafeWindow.window.cc_js_Player.pause();
}else{
GM_log("FLASH NOT FUNCTION PAUSE();");
}
}catch(err)
{
GM_log(err);
}
}
}