// ==UserScript== // @name 中国保密在线网-♿️ // @version 2025.4.1 // @description 2025年度全国保密教育线上培训-学时/答题轮椅 // @author akiki // @run-at document-end // @match https://www.baomi.org.cn/* // @grant none // @license MIT // @namespace https://greasyfork.org/users/1300844 // @downloadURL https://update.greasyfork.icu/scripts/494806/%E4%B8%AD%E5%9B%BD%E4%BF%9D%E5%AF%86%E5%9C%A8%E7%BA%BF%E7%BD%91-%E2%99%BF%EF%B8%8F.user.js // @updateURL https://update.greasyfork.icu/scripts/494806/%E4%B8%AD%E5%9B%BD%E4%BF%9D%E5%AF%86%E5%9C%A8%E7%BA%BF%E7%BD%91-%E2%99%BF%EF%B8%8F.meta.js // ==/UserScript== (function() { 'use strict'; console.log("baomi_script start run"); var $ = window.jQuery; class ModifiedHttpRequest extends XMLHttpRequest { constructor() { // 调用父类的constructor super(); // 保存原始的open方法 this.originalOpen = this.open; // 替换原始的open方法 this.open = this.modifiedOpen; // 存储原始响应数据 this._originalResponseText = null; } modifiedOpen(method, url, async, user, password) { this.addEventListener("readystatechange", () => { if (this.readyState === 4) { // 当请求完成时,首先存储原始响应数据 this._originalResponseText = this.responseText; if (this._originalResponseText.startsWith('{')) { let res = JSON.parse(this._originalResponseText) if (res.data != null && res.data != undefined) { let keys = Object.keys(res.data) for (let i = 0; i < keys.length; i++) { //if (keys[i].includes('Grade') || keys[i].includes('grade')) { // console.log("--------------------Key:", keys[i], "Value:", res.data[keys[i]]); // } // 修改学时 if (keys[i] === 'totalGrade') { res.data[keys[i]] = 4 console.log("修改学时完成..."); } } this._originalResponseText = JSON.stringify(res) } } if (/exam\/getExamContentData.do/g.test(url)) { console.log("考试开始"); let res = JSON.parse(this._originalResponseText) let typeList = res.data.typeList for (let i = 0; i < typeList.length; i++) { let questionList = typeList[i].questionList for (let i = 0; i < questionList.length; i++) { let question = questionList[i] question.content = question.content.replace('', question.answer + ' ') console.log("展示答案完成..."); } } this._originalResponseText = JSON.stringify(res) } // 当请求完成时,修改responseText Object.defineProperty(this, 'responseText', { get: () => { // 这里可以根据需要修改原始的响应数据 return this._originalResponseText; }, configurable: true }); } }); // 调用原始的open方法 this.originalOpen(method, url, async, user, password); } } window.XMLHttpRequest = ModifiedHttpRequest; })();