// ==UserScript== // @name 智慧中小学暑期研修-媛媛爱分享 v10 // @namespace http://tampermonkey.net/ // @version 10 // @description 智慧中小学暑期研修倍速助手(清理版):顶进度到97%→平台续播结尾自动打勾;支持秒过/连播/一键速刷;修复连播不打勾、一键速刷停止仍补播、刷新后丢目标等问题。逻辑同原版 zzzzzzys 机制。 // @author You // @match *://*.smartedu.cn/* // @match *://basic.smartedu.cn/* // @match *://*.ykt.eduyun.cn/* // @require https://fastly.jsdelivr.net/npm/crypto-js@4.2.0/crypto-js.min.js // @connect x-study-record-api.ykt.eduyun.cn // @connect basic.smartedu.cn // @grant GM_xmlhttpRequest // @grant unsafeWindow // @run-at document-end // @license All Rights Reserved // ==/UserScript== (function () { 'use strict'; /* ============ 配置 ============ */ const CONFIG = { resourceLearningPositionsUrl: 'https://x-study-record-api.ykt.eduyun.cn/v1/resource_learning_positions/', }; /* ============ 验证配置 ============ */ const VERIFY = { code: 'YUAN66', storageKey: 'zy_verified_v1', publicName: '媛媛爱分享', }; /* ============ 状态 ============ */ const state = { courseCount: 0, autoSkipRunning: false, autoSkipLoop: false, currentResourceId: null, completionMarked: false, // v8: 平台打勾完成标记 updateProgressUrl: null, // 捕获平台自己的updateResourceProgress URL(用于重放保熟) currentDuration: 0, // 当前视频时长(用于甄别"真正完成上报" vs "初始进度0上报") updateProgressBody: null, // 捕获平台自己的updateResourceProgress body fullsData: null, // 课程目录 fulls.json 数据(一键全刷,移植自zzzzzzys原始脚本40万+安装机制) fullsUrl: null, // fulls.json 请求URL(数据未捕获时用于重拉) brushAllRunning: false, // 一键全刷运行中(防止重复点击→并发跑→计数来回跳) brushAllStop: false, // 请求停止全刷(刷够学时随时点按钮停掉) autoCompleteRunning: false, // 二阶段补播打勾进行中 autoCompleteStop: false, // 二阶段彻底停止请求 }; /* ============ 工具函数 ============ */ const log = (...args) => console.log('%c[媛媛爱分享v9.49]', 'color:#ff6b35;font-weight:bold;', ...args); const qs = (sel, root = document) => root.querySelector(sel); const sleep = (ms) => new Promise(r => setTimeout(r, ms)); /* ============ 验证码 ============ */ function getTodayCode() { return VERIFY.code; } function isVerified() { try { return localStorage.getItem(VERIFY.storageKey) === '1'; } catch (e) { return false; } } function setVerified() { try { localStorage.setItem(VERIFY.storageKey, '1'); } catch (e) {} } /* ============ 赞赏机制 ============ */ const REWARD = { storageKey: 'zy_rewarded_v2', // ===== 赞赏码(微信收款码,无需验证是否付款) ===== qrTip: '为爱发电,感谢赞赏', qrCodeBase64: 'iVBORw0KGgoAAAANSUhEUgAAAokAAAJsCAYAAACRXjkQAAAA4mVYSWZJSSoACAAAAAUAGgEFAAEAAABKAAAAGwEFAAEAAABSAAAAKAEDAAEAAAACAAAAEwIDAAEAAAABAAAAaYcEAAEAAABaAAAAAAAAAEgAAAABAAAASAAAAAEAAAAHAACQBwAEAAAAMDIxMAGRBwAEAAAAAQIDAHySBwAuAAAAtAAAAACgBwAEAAAAMDEwMAGgAwABAAAA//8AAAKgBAABAAAAAAAAAAOgBAABAAAAAAAAAAAAAABIVUFXRUkAAE1NACoAAAAIAAICEgAJAAAAAQAAAAACFAAEAAAAAQAAAAAAAAAAzyDGrAAAAAFzUkdCAK7OHOkAAAAEc0JJVAgICAh8CGSIAAAgAElEQVR4Xuy9WZhV15Xn+T/TnWKOQME8akIYCSGMhIQFNpKsefaQbld1ZVZWZvf39UM99Nf93E/90P3S/VVlZ33VVVmVWZm209nGklKyhLBkhASSEBIyAgSIeZ4DYrrDmfpb+5xDBBEBd184VzeG/7FDEXHuumvv/dsnIv6svfdaRhiGIXiRAAmQAAmQAAmQAAmQwDACJmmQAAmQAAmQAAmQAAmQwEgCFIkjifB7EiABEiABEiABEiABUCTyISABEiABEiABEiABEhhFgCJxFBLeIAESIAESIAESIAESoEjkM0ACJEACJEACJEACJDCKAEXiKCS8QQIkQAIkQAIkQAIkQJHIZ4AESIAESIAESIAESGAUAYrEUUh4gwRIgARIgARIgARIgCKRzwAJkAAJkAAJkAAJkMAoAhSJo5DwBgmQAAmQAAmQAAmQAEUinwESIAESIAESIAESIIFRBCgSRyHhDRIgARIgARIgARIgAYpEPgMkQAIkQAIkQAIkQAKjCFAkjkLCGyRAAiRAAiRAAiRAAhSJfAZIgARIgARIgARIgARGEaBIHIWEN0iABEiABEiABEiABCgS+QyQAAmQAAmQAAmQAAmMIkCROAoJb5AACZAACZAACZAACVAk8hkgARIgARIgARIgARIYRYAicRQS3iABEiABEiABEiABEqBI5DNAAiRAAiRAAiRAAiQwigBF4igkvEECJEACJEACJEACJECRyGeABEiABEiABEiABEhgFAGKxFFIeIMESIAESIAESIAESIAikc8ACZAACZAACZAACZDAKAIUiaOQ8AYJkAAJkAAJkAAJkABFIp8BEiABEiABEiABEiCBUQQoEkch4Q0SIAESIAESIAESIAGKRD4DJEACJEACJEACJEACowhQJI5CwhskQAIkQAIkQAIkQAIUiXwGSIAESIAESIAESIAERhGgSByFhDdIgARIgARIgARIgAQoEvkMkAAJkAAJkAAJkAAJjCJAkTgKCW+QAAmQAAmQAAmQAAlQJPIZIAESIAESIAESIAESGEWAInEUEt4gARIgARIgARIgARKgSOQzQAIkQAIkQAIkQAIkMIoAReIoJLxBAiRAAiRAAiRAAiRAkchngARIgARIgARIgARIYBQBisRRSHiDBEiABEiABEiABEiAIpHPAAmQAAmQAAmQAAmQwCgCFImjkPAGCZAACZAACZAACZAARSKfARIgARIgARIgARIggVEEKBJHIeENEiABEiABEiABEiABikQ+AyRAAiRAAiRAAiRAAqMIUCSOQsIbJEACJEACJEACJEACFIl8BkiABEiABEiABEiABEYRoEgchYQ3SIAESIAESIAESIAEKBL5DJAACZAACZAACZAACYwiQJE4CglvkAAJkAAJkAAJkAAJUCTyGSABEiABEiABEiABEhhFgCJxFBLeIAESIAESIAESIAESoEjkM0ACJEACJEACJEACJDCKAEXiKCS8QQIkQAIkQAIkQAIkQJHIZ4AESIAESIAESIAESGAUAYrEUUh4gwRIgARIgARIgARIgCKRzwAJkAAJkAAJkAAJkMAoAhSJo5DwBgmQAAmQAAmQAAmQAEUinwESIAESIAESIAESIIFRBCgSRyHhDRIgARIgARIgARIgAYpEPgMkQAIkQAIkQAIkQAKjCFAkjkLCGyRAAiRAAiRAAiRAAhSJfAZIgARIgARIgARIgARGEaBIHIWEN0iABEiABEiABEiABCgS+QyQAAmQAAmQAAmQAAmMIkCROAoJb5AACZAACZAACZAACVAk8hkgARIgARIgARIgARIYRYAicRQS3iABEiABEiABEiABEqBI5DNAAiRAAiRAAiRAAiQwioA96g5vXJfA5cuXr/saX4gItLW1wTCMcY2jt7cXQRCk2sfW1laYpt6/uXTbr8VnqoMBoNvHWtrVHU9fXx9836/FdUNsW1paYFlWqm3rjr0ebff398PzvFTHUw9nzc3NsO30/nTV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', }; /* ============ 赞赏状态 ============ */ function isRewarded() { try { return localStorage.getItem(REWARD.storageKey) === '1'; } catch (e) { return false; } } function setRewarded() { try { localStorage.setItem(REWARD.storageKey, '1'); } catch (e) {} } /* ============ MAC鉴权 ============ */ function getDynamicToken() { try { const pattern = /^ND_UC_AUTH-([0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12})&ncet-xedu&token$/; for (let key of Object.keys(localStorage)) { if (pattern.test(key)) { return { key: key, appId: key.match(pattern)[1], token: JSON.parse(JSON.parse(localStorage.getItem(key)).value) }; } } throw Error("无法读取token,请确认已登录"); } catch (err) { throw Error("getDynamicToken失败>>" + err); } } function Ze(e) { for (var t = "0123456789ABCDEFGHIJKLMNOPQRTUVWXZYS".split(""), n = "", r = 0; r < e; r++) n += t[Math.ceil(35 * Math.random())]; return n; } function Fe(e) { return (new Date).getTime() + parseInt(e, 10) + ":" + Ze(8); } function ze(e, t, n, r) { let o = { relative: new URL(e).pathname, authority: new URL(e).hostname }; let i = t + "\n" + n.toUpperCase() + "\n" + o.relative + "\n" + o.authority + "\n"; return CryptoJS.HmacSHA256(i, r).toString(CryptoJS.enc.Base64); } function He(e, t, n) { let r = n.accessToken, o = n.macKey, i = n.diff; let s = Fe(i), a = ze(e, s, t, o); return 'MAC id="' + r + '",nonce="' + s + '",mac="' + a + '"'; } function getMACAuthorizationHeaders(url, method) { let n = getDynamicToken().token; return He(url, method, { accessToken: n.access_token, macKey: n.mac_key, diff: n.diff }); } /* ============ PUT请求:确保服务器端进度 ============ */ // 还原v7.7用户脚本版原版 —— SHIELD_DURATION=15秒(够平台发一次请求即可,避免污染下一个视频) const SHIELD_DURATION = 15000; let shieldEndTime = 0; let shieldedDuration = 0; function startShieldingPeriod(duration) { shieldEndTime = Date.now() + SHIELD_DURATION; shieldedDuration = duration; log('🛡️ 启动15秒屏蔽期,所有进度请求将被改写为 position=' + (duration - 2) + ', state=2'); } function isShielding() { return Date.now() < shieldEndTime; } function clearShielding() { shieldEndTime = 0; shieldedDuration = 0; } /* ============ PUT成功清单——避免全刷/连播重复PUT ============ */ // 原理:第一部分(全刷/连播)逐课PUT成功→记rid清单(localStorage)→刷新后autoCompleteLoop查清单, // 已PUT成功的课跳过重复PUT(省时间),未成功的课照样补PUT(不丢打勾)。只记"确认200成功"的。 function getRidList() { try { return JSON.parse(localStorage.getItem('zy_putted_rids') || '[]'); } catch (e) { return []; } } function markRidPut(rid) { try { if (!rid) return; const list = getRidList(); if (!list.includes(rid)) { list.push(rid); localStorage.setItem('zy_putted_rids', JSON.stringify(list)); } } catch (e) {} } function isRidPut(rid) { try { return !!(rid && getRidList().includes(rid)); } catch (e) { return false; } } function clearRidList() { try { localStorage.removeItem('zy_putted_rids'); } catch (e) {} } function setProgress(url, duration, remaining = 2) { const info = getDynamicToken(); // 还原v7.7用户脚本版原版请求体 —— 必须含 study_time 字段(平台完成判定依赖它) const body = { position: Math.max(0, duration - remaining), state: 2, study_time: duration }; log('📡 发起PUT请求:', url); log('📡 请求体:', JSON.stringify(body)); return new Promise((resolve, reject) => { GM_xmlhttpRequest({ url: url, method: 'PUT', headers: { 'accept': 'application/json, text/plain, */*', 'authorization': getMACAuthorizationHeaders(url, 'PUT'), 'content-type': 'application/json', 'sdp-app-id': info.appId, 'origin': 'https://basic.smartedu.cn', 'referer': 'https://basic.smartedu.cn/', }, data: JSON.stringify(body), onload: function (res) { log('📡 响应状态:', res.status); log('📡 响应内容:', (res.responseText || '').slice(0, 300)); if (res.status === 200) { log('✅ PUT成功!position=' + Math.max(0, duration - remaining) + ', state=2'); // PUT成功→记录rid,autoCompleteLoop据此跳过重复PUT try { const m = url.match(/resource_learning_positions\/([^\/]+)/); if (m && m[1]) markRidPut(m[1]); } catch (e) {} startShieldingPeriod(duration); resolve(res); } else { reject('服务器拒绝:' + res.status + ' ' + (res.responseText || '').slice(0, 200)); } }, onerror: function (err) { log('❌ 网络错误:', err && err.toString()); reject('请求错误:' + (err && err.toString())); } }); }); } /* ============ 二次强化 — 重放平台自己的完成上报(PUT+完整鉴权,移植自v7.7.8) ============ */ async function sendUpdateProgressRequest(duration) { // ★ rid 一致性校验(修"每个父级最后一节不打勾"根因): // state.updateProgressUrl 是全局粘滞的,父级最后一节播完没有下一节可自动连播 → // 平台不 flush、不发 updateResourceProgress → 这里还停在【上一课】的地址 → // 重放等于给上一课重复打勾,本课全程没有带 study_time 的完成上报 → 不打勾。 // 策略:只有能【明确】解析出旧地址的 rid 且与当前课不同,才判定过期并改走当前课 PUT; // 解析不到 rid 时保守放行(避免误伤秒过/连播原本能成功的重放)。 try { const _curRid = state.currentResourceId; if (_curRid && state.updateProgressUrl) { const _u = String(state.updateProgressUrl); let _stale = false; if (_u.indexOf(_curRid) === -1) { const _b = state.updateProgressBody || {}; const _bRid = _b.resource_id || _b.resourceId || _b.rid || null; if (_bRid) { _stale = (String(_bRid) !== String(_curRid)); } else { // URL 里能抠出 uuid 形式的资源id 才判过期,否则不动 _stale = /[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}/.test(_u); } } if (_stale) { log('⚠ 二次强化地址属于上一课(rid不匹配),弃用旧地址 → 改走当前课 PUT 100% 兜底'); try { const _i0 = getDynamicToken(); await setProgress(CONFIG.resourceLearningPositionsUrl + _curRid + '/' + _i0.token.user_id, duration, 0); log('✅ 当前课 100% 兜底PUT完成'); return true; } catch (e0) { log('⚠ 当前课兜底PUT失败:' + (e0 && e0.message)); return false; } } } } catch (eChk) {} if (!state.updateProgressUrl || !state.updateProgressBody) { log('⚠ 未捕获到updateResourceProgress URL/body,跳过二次强化'); return false; } try { const body = { ...state.updateProgressBody }; body.state = 2; // 大动脉修复:仅"低值"(<时长-5)才顶到97%;已是真完成(~100%)则原样放行, // 避免把平台 genuine 完成上报压回97% → 二阶段不打勾 if (body.position !== undefined) { if (Number(body.position) < duration - 5) body.position = duration - 2; } if (body.study_time !== undefined) body.study_time = duration; const info = getDynamicToken(); log('📡 二次强化: PUT', state.updateProgressUrl); return new Promise((resolve) => { GM_xmlhttpRequest({ url: state.updateProgressUrl, method: 'PUT', headers: { 'accept': 'application/json, text/plain, */*', 'authorization': getMACAuthorizationHeaders(state.updateProgressUrl, 'PUT'), 'content-type': 'application/json', 'sdp-app-id': info.appId, 'origin': 'https://basic.smartedu.cn', 'referer': 'https://basic.smartedu.cn/', }, data: JSON.stringify(body), onload: function (res) { log('📡 二次强化响应:', res.status, (res.responseText || '').slice(0, 200)); if (res.status === 200) log('✅ 二次强化PUT成功!'); resolve(res.status === 200); }, onerror: function (err) { log('❌ 二次强化网络错误:', err && err.toString()); resolve(false); } }); }); } catch (e) { log('⚠ 重放失败:' + e.message); return false; } } /* ============ 一键全刷 — 移植自 zzzzzzys 原始脚本(40万+安装)的核心机制 ============ */ // 原理:拦截课程目录 fulls.json → 按目录顺序(从小到大)拿到所有课时 → 逐个 PUT {position: study_time-3} // 防重复启动(并发会致计数来回跳)+ 可随时停止(刷够学时点按钮即停,停止后仍自动刷新补播已刷课时) async function brushAllLessons() { if (state.autoSkipRunning) { updateStatus('⏸ 请先停止连播再全刷'); return; } if (state.brushAllRunning) { updateStatus('⏳ 全刷已在运行中,如需停止请再点一次按钮'); log('⏳ 全刷已在运行中(防重复启动)'); return; } state.brushAllRunning = true; state.brushAllStop = false; clearRidList(); // 新一轮全刷,清空旧PUT成功清单(避免旧数据影响本轮) log('🚀 一键速刷启动(按目录顺序逐课PUT顶进度,可随时点按钮停止)...'); updateStatus('🚀 正在获取全部课时目录...'); await sleep(300); // 数据源1:已拦截到的 fulls.json let full = state.fullsData; // 数据源2:没拦到就按捕获的URL重拉 if ((!full || !full.nodes) && state.fullsUrl) { try { log('🔁 重拉课程目录: ' + state.fullsUrl.slice(0, 90)); const resp = await fetch(state.fullsUrl); full = await resp.json(); state.fullsData = full; } catch (e) { log('⚠ 重拉fulls.json失败:' + e.message); } } // 数据源3:页面全局数据兜底 if (!full || !full.nodes) { try { const win = (typeof unsafeWindow !== 'undefined') ? unsafeWindow : window; if (win.fullDatas || win.__courseData) full = win.fullDatas || win.__courseData; } catch (e) {} } // 递归遍历目录,按目录顺序(从小到大)收集所有课时 const items = []; if (full && full.nodes) { const traverse = (node, out) => { if (node.node_type === 'catalog' && node.child_nodes && node.child_nodes.length > 0) { node.child_nodes.forEach(c => traverse(c, out)); } else if (node.node_type === 'activity') { const resources = (node.relations && node.relations.activity && node.relations.activity.activity_resources) || []; resources.forEach(r => { if (r.resource_id) out.push({ name: node.node_name || '未命名', resource_id: r.resource_id, studyTime: r.study_time }); }); } }; full.nodes.forEach(n => traverse(n, items)); } const info = getDynamicToken(); const userId = info.token.user_id; if (items.length > 0) { log('📚 共 ' + items.length + ' 个课时,按目录顺序逐课PUT顶进度...'); updateStatus('🚀 速刷中:0/' + items.length); let ok = 0, fail = 0; for (let i = 0; i < items.length; i++) { // 随时可停止(刷够学时点一下按钮即停) if (state.brushAllStop) { log('⏹ 用户停止全刷,已刷 ' + ok + ' 个课时'); break; } const it = items[i]; try { // 改回官方验证方案——PUT 顶到 97%(position=时长-3,zzzzzzys 40万+安装验证)。 // 顶 100% 会破坏"刷新后平台续播最后3秒"的链路(无续播余量 → 不打勾);97% 让刷新后平台自然续播 → 播放结尾 → 打勾 await setProgress(CONFIG.resourceLearningPositionsUrl + it.resource_id + '/' + userId, it.studyTime, 2); ok++; } catch (e) { fail++; log('❌ ' + it.name + ' 失败: ' + (e.message || e)); } if (i % 3 === 0) updateStatus('🚀 速刷中:' + ok + '/' + items.length + ' · ' + (it.name || '').slice(0, 18)); await sleep(120); } const stopped = state.brushAllStop; state.brushAllRunning = false; if (stopped) { // 停止即停止——不设补播标记、不自动刷新;已刷的课时保持97%待手动处理 updateStatus('⏹ 已停止速刷(' + ok + '/' + items.length + ')。已停,不再自动补播'); log('⏹ 已停止速刷 | ' + ok + ' 成功 / ' + fail + ' 失败。已停,未触发刷新补播'); return { ok, fail }; } // 标记让刷新后自动启动补播循环(仅自然完成才需要补播打勾;停止时不会走到这里) try { localStorage.setItem('zy_auto_complete', '1'); } catch (e) {} updateStatus('✅ 速刷完成(' + ok + '/' + items.length + ')。即将刷新进入二阶段补播打勾'); log('✅ 速刷完成 | ' + ok + ' 成功 / ' + fail + ' 失败。已顶到97%,刷新后由 startAutoCompleteLoop 补播打勾'); // 一键速通专属:完成后弹完成提示(不再展示赞赏码),由"刷新补播"按钮触发二阶段补播打勾 showCompleteDialog(); return { ok, fail }; } // 兜底:没有目录数据 → 刷当前这一节 updateStatus('⚠️ 未获取到课程目录数据,仅刷当前课时'); log('⚠️ 未获取到fulls.json目录数据,退回刷当前课时'); await skipCurrent(); state.brushAllRunning = false; return { ok: 0, fail: 0 }; } /* ============ 获取视频时长(v7.7原版:15秒超时,先等video元素,Math.floor避免多1秒) ============ */ async function getVideoTime(timeout = 15000) { const start = Date.now(); // 先等 video 元素出现 let v = null; while (Date.now() - start < timeout && !v) { v = qs('video'); if (!v) await sleep(200); } if (!v) throw Error('未找到 video 元素'); // 已有 duration 直接返回 if (v.duration && isFinite(v.duration) && v.duration > 0) { return Math.floor(v.duration); } // 否则监听 loadedmetadata + 轮询兜底 return await new Promise((resolve, reject) => { const remaining = timeout - (Date.now() - start); const timer = setTimeout(() => { clearInterval(poll); reject(Error('获取视频时长超时')); }, remaining); const onMeta = () => { if (v.duration && isFinite(v.duration) && v.duration > 0) { clearTimeout(timer); clearInterval(poll); v.removeEventListener('loadedmetadata', onMeta); resolve(Math.floor(v.duration)); } }; v.addEventListener('loadedmetadata', onMeta); const poll = setInterval(() => { if (v.duration && isFinite(v.duration) && v.duration > 0) { clearTimeout(timer); clearInterval(poll); v.removeEventListener('loadedmetadata', onMeta); resolve(Math.floor(v.duration)); } }, 200); }); } /* ============ XHR拦截:捕获resource_id + updateResourceProgress + 屏蔽期改写 + 监听平台打勾 ============ */ function installXHRInterceptor() { // 解析平台进度日志 "==== N resourceid",N 为进度秒数 function parseProgressPos(str) { const m = str.match(/====\s*(\d+)/); return m ? parseInt(m[1], 10) : -1; } // 只有"进度接近当前视频时长"的上报才算真正完成——修复第二课起"初始进度0上报被误判为打勾"的问题 // 关键修复:平台完成信号不是 ==== N,而是 **console.log('==reportVideoProgress', {position: 879, immediate: true})** // (Object作为第二个参数打印!旧钩子把Object转成''全丢了→永远解析不到position)。 // 用户实测日志(v9.49一键全刷第33课打勾成功):reportVideoProgress position=879(≥时长878.6) + reportResource studyTime=878 → 完成! function isRealCompletion(joined) { const dur = state.currentDuration || 0; if (dur <= 0) return false; // 信号A:==== N(进度上报到末尾) const pos = parseProgressPos(joined); if (pos >= 0 && pos >= dur - 5) return true; // 信号B(v9.49核心):reportVideoProgress {position: N} —— 平台"立即上报完成"信号(第33课实测) const rvp = joined.match(/reportVideoProgress[^}]{0,300}?"position"\s*:\s*(\d+)/); if (rvp && parseInt(rvp[1], 10) >= dur - 5) return true; // 信号C:reportResource {studyTime: N} —— 学习时长接近视频时长 const rrs = joined.match(/reportResource[^}]{0,300}?"studyTime"\s*:\s*(\d+)/); if (rrs && parseInt(rrs[1], 10) >= dur - 5) return true; return false; } // console参数序列化——Object也JSON.stringify(platform的关键信息都在Object参数里!) const stringifyArg = (a) => { if (typeof a === 'string') return a; if (typeof a === 'number') return String(a); if (typeof a === 'object' && a !== null) { try { return JSON.stringify(a); } catch (e) { return ''; } } return ''; }; const origLog = console.log.bind(console); console.log = function(...args) { try { const joined = args.map(stringifyArg).join(' '); if (isRealCompletion(joined)) { state.completionMarked = true; log('✅ 检测到平台完成上报!' + joined.slice(0, 160)); } // 从平台日志 "==== 时长 UUID Object" 模式捕获 resource_id(移植自 v7.7 installConsoleLogHook)—— // 平台用 videojs 直连播放器时 XHR/fetch 常抓不到 resource_id,console 钩子是关键兜底 const uuidM = joined.match(/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})/i); if (uuidM && uuidM[1] && uuidM[1] !== state.currentResourceId) { state.currentResourceId = uuidM[1]; log('🎯 console钩子捕获resource_id:', state.currentResourceId); } } catch (e) {} return origLog(...args); }; const origInfo = console.info.bind(console); console.info = function(...args) { try { const joined = args.map(stringifyArg).join(' '); if (isRealCompletion(joined)) { state.completionMarked = true; log('✅ 检测到平台完成上报(console.info)!' + joined.slice(0, 160)); } const uuidM = joined.match(/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})/i); if (uuidM && uuidM[1] && uuidM[1] !== state.currentResourceId) { state.currentResourceId = uuidM[1]; log('🎯 console钩子捕获resource_id(console.info):', state.currentResourceId); } } catch (e) {} return origInfo(...args); }; // 判断是否为进度上报请求 function isProgressUrl(url) { if (!url) return false; const u = url.toLowerCase(); return u.includes('resource_learning_positions') || u.includes('study_details') || u.includes('updateresourceprogress'); } function isAsyncBegin(url) { return url && url.toLowerCase().includes('async_begin'); } // 恢复 v7.7 用户脚本版(你验证过能自动打勾)的宽松 DOM 打勾检测——页面任何可见的完成标记都算打勾。 // 教训:v9.10 改成"绑定当前课时、找不到就不判",但 getActiveLessonEl 匹配不上平台真实课时类名时永远返回 false → 每节等满8秒 → "还是不行"。 // 打勾判定:completionMarked(平台完成上报 ==== 时长)为主信号,宽松 DOM 检测为辅(与 v7.7 原版一致)。 function checkDomCheckmark() { const selectors = [ '[class*="completed"]', '[class*="已完成"]', 'span.anticon-check', 'svg.anticon-check', '[class*="check"]', '.ant-checkbox-checked', '[class*="finish"]', '[class*="success"]', '[class*="done"]', ]; for (const sel of selectors) { const els = document.querySelectorAll(sel); for (const el of els) { try { const rect = el.getBoundingClientRect(); if (rect.width > 0 && rect.height > 0) return true; } catch (e) {} } } return false; } // 定位当前正在学的课时元素(直接选择器,不依赖 getLessonItems——该函数在本文件中从未定义,原实现调用会抛 ReferenceError 卡死轮询) function getActiveLessonEl() { try { const sel = '.resource-item-active, [class*="active"], [class*="current"], [class*="playing"], [class*="studying"], [class*="learning"], [class*="cur"]'; const el = document.querySelector(sel); if (el) return el; } catch (e) {} try { const tEl = document.querySelector('[class*="title" i], h1, h2, h3'); const title = tEl ? zyText(tEl) : ''; if (title.length >= 4) { const items = document.querySelectorAll('[class*="resource-item"], [class*="course-item"], [class*="lesson-item"], [class*="video-item"], li[class*="item"]'); for (const it of items) { if (zyText(it).includes(title.slice(0, 8))) return it; } } } catch (e) {} return null; } // 精确打勾检测——只认"当前激活课时项内部"的完成标记,替代宽松全局检测(宽松检测会把 // 页面里其他已完成课程的勾误判为当前课打勾 → 假阳性"1秒打勾"而实际没打勾,v9.49用户反馈"不打勾") function checkCurrentLessonMarked() { // 方法1:当前激活项内部查勾 const active = getActiveLessonEl(); if (active) { try { const sel = '[class*="completed"],[class*="已完成"],svg.anticon-check,span.anticon-check,[class*="finish"],[class*="success"],.ant-checkbox-checked'; if (active.querySelector(sel)) return true; const t = (active.textContent || '').replace(/\s+/g, ''); if (/已完成|已学完|已看完|100%/.test(t)) return true; } catch (e) {} } // 方法2:当前视频的父容器链上找完成标记(视频已打勾时常在其父级显示状态) try { const v = document.querySelector('video'); if (v) { let el = v.parentElement; for (let i = 0; el && i < 6; i++, el = el.parentElement) { const t = (el.textContent || '').replace(/\s+/g, ''); if (/已完成|已学完|已看完/.test(t)) return true; const sel = '[class*="completed"],[class*="已完成"],svg.anticon-check,[class*="finish"],[class*="success"]'; if (el.querySelector(sel)) return true; } } } catch (e) {} return false; } // 拦截XHR:捕获resource_id + updateResourceProgress + 屏蔽期改写 + v9.49侦察(抓平台打勾请求) const origOpen = XMLHttpRequest.prototype.open; XMLHttpRequest.prototype.open = function(method, url) { this._zyUrl = url; this._zyMethod = method; if (url && typeof url === 'string' && url.toLowerCase().includes('updateresourceprogress')) { state.updateProgressUrl = url; log('🎯 捕获到updateResourceProgress URL:', url); } if (url && typeof url === 'string' && url.toLowerCase().includes('fulls.json')) { state.fullsUrl = url; } return origOpen.apply(this, arguments); }; const origSend = XMLHttpRequest.prototype.send; XMLHttpRequest.prototype.send = function() { // 侦察:记录所有"进度/学习记录"请求的URL+body(找平台打勾瞬间的"完成请求"特征) if (this._zyUrl && /progress|learning_positions|reportVideo|reportResource|study/i.test(this._zyUrl) && this._zyMethod && this._zyMethod.toUpperCase() === 'PUT' && arguments[0]) { try { const parsed = JSON.parse(arguments[0]); log('📡 [侦察] PUT ' + this._zyUrl.split('/').slice(-2).join('/') + ' → ' + JSON.stringify(parsed).slice(0, 160)); } catch (e) {} } // 捕获课程目录 fulls.json 响应(一键全刷的数据源,移植自zzzzzzys原始脚本) if (this._zyUrl && this._zyUrl.toLowerCase().includes('fulls.json')) { this.addEventListener('load', function() { try { const data = JSON.parse(this.responseText); state.fullsData = data; log('🎯 捕获到课程目录 fulls.json(' + (data.nodes ? data.nodes.length : 0) + ' 个顶级节点)'); } catch (e) { log('⚠ fulls.json解析失败:' + e.message); } }); } if (this._zyUrl) { // 捕获 resource_id(XHR 路径) if (this._zyUrl.includes('resource_learning_positions')) { const match = this._zyUrl.match(/resource_learning_positions\/([^\/]+)/); if (match && match[1] !== state.currentResourceId) { state.currentResourceId = match[1]; log('🎯 拦截到resource_id:', state.currentResourceId); } // platform 自己发的"完成落库PUT"(position ≥ 时长-5)→ 完成! // 用户实测日志铁证:第2课 platform 自己 PUT {"position":985}(时长984.6) → ✅打勾 // (我们的PUT用GM_xmlhttpRequest不走此拦截,所以这里捕获的都是platform的请求) if (this._zyMethod && this._zyMethod.toUpperCase() === 'PUT' && arguments[0]) { try { const p = JSON.parse(arguments[0]); const dur = state.currentDuration || 0; if (dur > 0 && p.position !== undefined && p.position >= dur - 5) { state.completionMarked = true; log('✅ 检测到platform完成落库PUT: position=' + p.position + ' ≥ 时长' + Math.round(dur) + '-5'); } } catch (e) {} } } // 捕获 updateResourceProgress 请求体(用于重放保熟) if (this._zyUrl.toLowerCase().includes('updateresourceprogress') && arguments[0]) { try { state.updateProgressBody = JSON.parse(arguments[0]); log('🎯 捕获到updateResourceProgress body:', JSON.stringify(state.updateProgressBody).slice(0, 200)); } catch (e) {} } // 屏蔽期内改写进度请求 if (isShielding() && isProgressUrl(this._zyUrl) && !isAsyncBegin(this._zyUrl) && this._zyMethod && this._zyMethod.toUpperCase() === 'PUT' && arguments[0]) { try { const parsed = JSON.parse(arguments[0]); // 大动脉修复:低值/缺失才顶97%;真完成(~100%)原样放行,避免压回97%→不打勾 const _pos = Number(parsed.position); if (isNaN(_pos) || _pos < shieldedDuration - 5) { parsed.position = shieldedDuration - 2; parsed.state = 2; arguments[0] = JSON.stringify(parsed); log('🛡️ 屏蔽期内改写进度 → position=' + parsed.position + ', state=2'); } else { log('🛡️ 屏蔽期跳过改写(真完成放行): position=' + parsed.position); } } catch (e) { log('⚠️ 改写进度失败:', e.message); } } } return origSend.apply(this, arguments); }; // fetch 拦截(平台用 fetch 而非 XHR 加载下一节时,resource_id 也能抓到,避免切课检测失效 → 掉进全局搜索乱点) const origFetch = window.fetch ? window.fetch.bind(window) : null; if (origFetch) { window.fetch = function(input, init) { try { const url = typeof input === 'string' ? input : (input && input.url) || ''; // 捕获课程目录 fulls.json(fetch 路径) if (url.toLowerCase().includes('fulls.json')) { state.fullsUrl = url; const pr = origFetch(input, init); pr.then(r => { try { const cl = r.clone(); cl.text().then(t => { try { state.fullsData = JSON.parse(t); log('🎯 捕获到课程目录 fulls.json(fetch)'); } catch (e) {} }); } catch (e) {} }).catch(() => {}); return pr; } if (url.includes('resource_learning_positions')) { const match = url.match(/resource_learning_positions\/([^\/]+)/); if (match && match[1] !== state.currentResourceId) { state.currentResourceId = match[1]; log('🎯 拦截到fetch resource_id:', state.currentResourceId); } // fetch 路径的 platform 完成落库 PUT const method = ((init && init.method) || 'GET').toUpperCase(); if (method === 'PUT' && init && init.body) { try { const p = typeof init.body === 'string' ? JSON.parse(init.body) : init.body; const dur = state.currentDuration || 0; if (dur > 0 && p.position !== undefined && p.position >= dur - 5) { state.completionMarked = true; log('✅ 检测到platform完成落库PUT(fetch): position=' + p.position); } } catch (e) {} } } if (url.toLowerCase().includes('updateresourceprogress') && init && init.body) { try { state.updateProgressBody = JSON.parse(init.body); } catch (e) {} state.updateProgressUrl = url; } const method = ((init && init.method) || 'GET').toUpperCase(); // 侦察:记录platform所有fetch请求(找打勾瞬间的"完成请求") if (/progress|learning|report|resource|study|position/i.test(url)) { let bodyS = ''; try { if (init && init.body) { bodyS = typeof init.body === 'string' ? init.body.slice(0, 130) : '[' + typeof init.body + ']'; } } catch (e) {} log('📡 [fetch侦察] ' + method + ' ' + url.split('?')[0].slice(-70) + (bodyS ? ' body=' + bodyS : '')); } if (isShielding() && isProgressUrl(url) && !isAsyncBegin(url) && (method === 'PUT' || method === 'POST') && init && init.body) { const parsed = JSON.parse(init.body); // 大动脉修复:低值/缺失才顶97%;真完成(~100%)原样放行,避免压回97%→不打勾 const _pos = Number(parsed.position); if (isNaN(_pos) || _pos < shieldedDuration - 5) { parsed.position = shieldedDuration - 2; parsed.state = 2; init.body = JSON.stringify(parsed); log('🛡️ 屏蔽期内改写fetch进度 → state=2'); } else { log('🛡️ 屏蔽期跳过改写fetch进度(真完成放行): position=' + parsed.position); } } } catch (e) {} return origFetch(input, init); }; } // 暴露给 skipCurrent / startAutoSkip 使用 installXHRInterceptor.checkDomCheckmark = checkDomCheckmark; installXHRInterceptor.getActiveLessonEl = getActiveLessonEl; installXHRInterceptor.checkCurrentLessonMarked = checkCurrentLessonMarked; } /* ============ 等待resource_id(自动播放触发) ============ */ async function waitResourceId(timeout = 15000) { if (state.currentResourceId) return state.currentResourceId; const v = qs('video'); if (v) { try { v.muted = true; } catch(e) {} if (v.paused) { log('⚡ 自动播放视频触发拦截...'); try { await v.play().catch(() => {}); } catch (e) {} } } log('⏳ 等待resource_id...'); const start = Date.now(); while (Date.now() - start < timeout) { if (state.currentResourceId) return state.currentResourceId; await sleep(300); } // 移植 v7.7 的多重兜底——XHR/fetch/console 都抓不到时,从 DOM/URL/文本提取 resource_id(videojs直连场景的关键保障) log('⚠ waitResourceId超时,尝试兜底提取resource_id...'); // 1. video 元素 data 属性 const v2 = qs('video'); if (v2) { for (const attr of ['data-resourceid', 'data-resource-id', 'data-id', 'data-courseid', 'data-videoid', 'data-resource', 'data-video-id']) { const val = v2.getAttribute(attr); if (val) { state.currentResourceId = val; log('🎯 从video data属性提取resource_id:', val); return val; } } let parent = v2.parentElement, depth = 0; while (parent && depth < 5) { for (const attr of ['data-resourceid', 'data-resource-id', 'data-id', 'data-resource', 'data-video-id']) { const val = parent.getAttribute(attr); if (val && /^[0-9a-f-]{20,}/i.test(val)) { state.currentResourceId = val; log('🎯 从video父元素data属性提取:', val); return val; } } parent = parent.parentElement; depth++; } } // 2. 页面 DOM data 属性 const dataEl = document.querySelector('[data-resourceid], [data-resource-id], [data-id][data-type*="resource"], [data-id][class*="resource"], [data-resource], [data-video-id]'); if (dataEl) { const val = dataEl.getAttribute('data-resourceid') || dataEl.getAttribute('data-resource-id') || dataEl.getAttribute('data-id') || dataEl.getAttribute('data-resource') || dataEl.getAttribute('data-video-id'); if (val) { state.currentResourceId = val; log('🎯 从DOM data属性提取:', val); return val; } } // 3. URL 中的 UUID(最后一个通常是 resourceId) const pageUrl = window.location.href; const allUuids = pageUrl.match(/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})/gi); if (allUuids && allUuids.length > 0) { const targetUuid = allUuids[allUuids.length - 1]; state.currentResourceId = targetUuid; log('🎯 从页面URL提取resource_id:', targetUuid); return targetUuid; } // 移植 zzzzzzys 的 vjs-poster 方法——从视频封面背景图提取 resource_id(全平台通用) const posterEl = document.querySelector('div.vjs-poster'); if (posterEl) { try { const bgImage = posterEl.style.backgroundImage || ''; const uuidM = bgImage.match(/assets\/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})/i); if (uuidM && uuidM[1]) { state.currentResourceId = uuidM[1]; log('🎯 从vjs-poster提取resource_id(zzzzzzys方法):', uuidM[1]); return uuidM[1]; } } catch (e) {} } // 4. 页面文本中搜索 UUID try { const bodyText = document.body.innerText || ''; const textUuid = bodyText.match(/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})/i); if (textUuid) { state.currentResourceId = textUuid[1]; log('🎯 从页面文本提取resource_id(兜底):', textUuid[1]); return textUuid[1]; } } catch (e) {} throw Error('等待resource_id超时'); } /* ============ 核心:秒过 = PUT 97% + 快速刷新 + 平台自然续播打勾(唯一可靠链路) ============ */ // 终极真相(日志铁证):平台用 videojs 内部计数器,不读 HTMLMediaElement.currentTime! // ==== 0 平台上报position=0 → 我们劫持getter/seek/假timeupdate全部无效 → ✅已自动打勾是假阳性 // 唯一可靠 = zzzzzzzs 40万+安装验证 + 你自己验证过的一键全刷机制: // PUT 97% → 刷新 → 平台重新加载读到97% → 自己续播最后3秒 → 真播到ended → 平台上报完成 → 打勾 // 秒过=单课版一键全刷:只PUT当前课97% → 刷新 → autoCompleteLoop(单课模式) 等续播打勾 let _zyLastSkipRid = null; let _zyLastSkipAt = 0; // 秒过 = PUT 97%(学到学时) → 【网页不刷新】→ 模拟点击当前课列表项触发视频重新加载 // → platform重新加载时读 getVideoProgress 定位到服务器位置97%(成功例子的机制!) // → startAutoCompleteLoop(true) 单课打勾:视频暂停则点播放按钮 → 播完 → platform完成信号 → 打勾 async function skipCurrent(skipDomCheck = false) { try { clearShielding(); const duration = await getVideoTime(); log('⚡ 秒过 | 时长:', duration, '秒'); try { const rid = state.currentResourceId; if (rid && rid === _zyLastSkipRid && Date.now() - _zyLastSkipAt < 8000) { log('⏭ 同一节8秒内已刷过,跳过'); return true; } _zyLastSkipRid = rid; _zyLastSkipAt = Date.now(); } catch (e) {} // === 第一步:PUT 97%(学到学时) === const resourceId = await waitResourceId(); const info = getDynamicToken(); const userId = info.token.user_id; const url = CONFIG.resourceLearningPositionsUrl + resourceId + '/' + userId; log('🔗 URL:', url); state.currentDuration = duration; await setProgress(url, duration, 2); state.courseCount++; updateCounter(); // 二次强化改为延迟重试:平台 updateResourceProgress 通常在本课开播后才发出, // 立刻调用时 URL/body 尚未捕获(日志里的"跳过二次强化")。延迟到开播后重放,才能真正兜底。 try { setTimeout(() => { try { sendUpdateProgressRequest(duration); } catch (e) {} }, 4000); } catch (e) {} // [清理版修复] 不在这里 clearShielding():保留 15 秒屏蔽期,防止平台 reload 时的初始 position≈0 上报覆盖我们 PUT 的 97%,否则不打勾 if (skipDomCheck) { updateStatus('✅ 已记录 ' + state.courseCount + ' 节(连播中)'); log('✅ 秒过完成 | 已完成', state.courseCount, '节(连播不刷新)'); return true; } // === 第二步:优先"免重载"直接续播(videojs seek 到 97%),失败则回退点列表项重载 === // 提速原理:点列表项重载会让平台整套卸载+重建播放器(~2-3s,且触发 videoplayer.min.js 的 // "Cannot read properties of null (reading 'paused')" 报错 → 自动续播失灵 → 还要等轮询点播放按钮)。 // 改用 videojs 官方 API 直接把【已加载】的视频 seek 到 duration-3 并播放: // videojs 内部计数器随播放推进(平台依赖它),免重载也能续播到 ended → 打勾。 // 关键:必须用 videojs 的 player.currentTime()/play()(平台读 videojs 计数器), // 绝不能裸写