總安裝量
2
今日新增
+2
使用者評分
- / 5.0 (0)
目前版本
1.0.0
描述
版本1
評分0
權限說明
雨课堂字体混淆反混淆工具,通过字形哈希映射还原混淆码点,使用户可复制原始文本。
雨课堂字体混淆反混淆
GLM-5.1 和 DeepSeek-V4-Pro 在 AI 编辑器 Trae CN 中编写。
背景
雨课堂使用字体混淆技术保护页面文字:将汉字的 Unicode 码点替换为乱码码点,同时提供混淆字体 exam_font_*.ttf,使乱码码点渲染出正确字形。每次刷新页面会随机使用不同的混淆字体,对应不同的码点映射。
反混淆流程:
- 预生成字形哈希映射表:基于 Source Han Sans SC VF 2.004R 基准字体,对每个 CJK 字形计算 SHA-1 前 8 字节哈希,建立
hash → 原码点映射 - 实时解析混淆字体:截获页面中的
exam_font_*.ttf,对每个 CJK 码点的字形计算哈希,查映射表还原原码点 - 替换文本 + 禁用混淆字体:将 DOM 中的混淆码点替换为原码点,并禁用混淆字体的
@font-face规则使文本回退到系统字体正常显示
方法来自作者 SomeBottle-《探探学习平台的字体混淆》 。
功能
- 反混淆:将页面中混淆后的文字替换为原始文字,复制即可得到正确文本
- 禁用混淆字体:禁用混淆字体的
@font-face规则,使文本回退到系统字体正常显示 - 两个功能可独立开关,无需刷新页面
- 开关状态自动持久化,刷新后保持上次设置
- 支持 SPA 路由切换,自动处理动态加载内容
使用
脚本加载后,通过脚本管理器菜单控制:
- 点击浏览器工具栏脚本管理器图标 → 选择对应菜单项即可切换
- 反混淆:控制是否将混淆码点替换为原始码点
- 禁用混淆字体:控制是否禁用混淆字体的
@font-face规则 - 诊断:下载字体调试报告,用于排查问题
技术细节
- 映射表采用二进制格式(8 字节 SHA-1 哈希 + 3 字节码点偏移)→ gzip → base64 内嵌脚本,约 410 KB
- 使用浏览器原生
DecompressionStreamAPI 解压,无需额外依赖 - 使用
crypto.subtle.digest计算 SHA-1 哈希 - 使用 opentype.js 解析字体
MutationObserver监听 DOM 变化,处理动态加载的内容- 拦截
history.pushState/replaceState及popstate事件,适配 SPA 路由变化
免责声明
本项目仅供学习、研究和技术交流使用,不得用于任何商业用途或非法目的。
使用者应遵守相关平台的服务条款和适用法律法规。仓库持有者不承担任何因使用本脚本产生的任何直接或间接责任。
本项目不鼓励、不支持、不协助任何形式的学术不端行为。