抓包分析与协议核对
导入 Charles HAR,查看请求结构与待补证据。只有字段名称和类型进入报告,原始凭证留在本机。
检查已整理的样例 ↓分析 Charles 抓包
本机处理在 Charles 中选中本次相关请求,通过 File → Export 选择 HTTP Archive(HAR)。在下方选择文件,只在浏览器内存中分析,不上传、不保存原始抓包。支持已接入学校的固定查寝和照片相关路径,最多 10 MiB。
报告只保留允许的字段名称、类型与 HTTP 状态;未收录的字段名替换为序号,报文取值与查询参数全部移除。正文缺失、无法解析或检查不完整都会注明。未知路径与对象存储请求不在分析范围。
尚未读取文件。
协议缺口
“已见结构”只说明报文中出现过,所有项目均不构成当前协议已适配或签到成功的结论。
对照旧参考的字段与类型
仅比较提交候选的根字段和请求头,按旧参考分组;不把响应、嵌套同名字段或其他学校的记录算作已观察。取值、字段含义与是否必填仍待核对。
| 字段 | 旧参考分组 | 旧参考类型 | 观察类型 | 核对状态 |
|---|
当前学校和筛选下没有请求。
| 字段路径 | 类型 |
|---|
查看脱敏 JSON
提交接口仅标为候选。不会按 HTTP 200 推断签到成功,也不会据此启用自动提交。下载的报告与下方手工样例模板是两种不同格式。
先检查代理能否正常工作
- 电脑安装官方 Charles,记住 HTTP Proxy Port(默认
8888),并用ipconfig查出电脑局域网 IP。 - 先不装证书:在手机 Wi-Fi 里手动填代理。路径是「设置 → WLAN → 点当前已连接网络的名称本身(或右侧箭头 / 齿轮图标)→ 展开"显示高级选项"→ 找到"代理"下拉,从"无 / 不使用代理"改成"手动"→ 填"主机名"为电脑 IP、"端口"为
8888→ 保存」。识别要点是那个代理下拉,鸿蒙各版本菜单措辞不同;找不到就在设置顶部搜索"代理"。
IP 填哪个:以 Charles 的 Help → Local IP Address 为准;或 PowerShell 跑ipconfig看"无线局域网适配器 WLAN"的 IPv4。不要填127.0.0.1、169.254.x.x,也不要填 VMware / VirtualBox / WSL 虚拟网卡的地址。IP 设置保持 DHCP,只改代理。
怎么确认填对了:手机浏览器打开http://chls.pro/ssl,出现 Charles 证书页说明链路通了;打不开但 Charles 里有这条记录也算通;Charles 全空则没走代理。注意 "无法打开"不能单独当作"没走代理"——若 Charles 里确实有这条记录,说明请求已经交给 Charles 了,问题在它自己取不到内容,见下面装证书那一步。
再用 App 确认一次(以这一步为准):清空 Charles 记录,打开今日校园刷新任务列表,应出现cqwu.campusphere.net的 CONNECT 隧道(只有主机名、看不到内容,正常)。浏览器走代理不等于 App 会走代理——若浏览器有记录而 App 一条都没有,说明该 App 不读系统代理,抓包路线到此结束,不要再去折腾证书。 - 什么都没有时按顺序排查:关掉手机上其它 VPN / 加速器 / 私人 DNS;确认两台设备连的是同一个 Wi-Fi;宿舍网与公共 Wi-Fi 常开 AP 隔离(客户端隔离),手机到电脑的流量会被直接丢弃,现象和"代理填错"一样——绕过办法是用第三台设备开热点让两者都连上;再确认 Windows 防火墙放行了 Charles(首次弹窗要勾"专用"和"公用"两项,校园网常被识别为"公用")。这一步排除不了就先停,不要急着装证书。
- Charles → Proxy → SSL Proxying Settings → Add,只加
cqwu.campusphere.net:443一条,不要用*,避免顺带解密无关流量。 - 装证书:Charles → Help → SSL Proxying → Install Charles Root Certificate on a Mobile Device,屏幕上会显示一个地址(通常是
http://chls.pro/ssl),在手机浏览器里打开它下载证书。下载到的一般是.pem,浏览器若提示"可能损害设备"选"仍然下载"。
打不开时先分清原因:这个地址只是一张引导页,真正的证书由页面内嵌的http://ssl.charles/提供(只有 Charles 能应答)。在 Charles 里点开那条记录——若是CONNECT chls.pro:443,说明浏览器把它当成 HTTPS 而证书还没装,在地址栏补上http://重试;若是GET http://chls.pro/ssl且记录标红 / Failed,说明 Charles 自己没取到内容,去 Proxy → External Proxy Settings 给它配上本机代理。
两条更稳的路:直接用手机浏览器开http://ssl.charles/(Charles 自己应答、不需外网;此条为读页面源码的推断,未实测);或用 Charles 的"保存 / 导出根证书"存成.pem/.crt,经数据线 / 微信文件传输助手传到手机再安装。
装成哪种凭据是关键:设置 → 安全(或"隐私和安全")→ 更多安全设置 → 加密和凭据 / 凭据存储 → 从存储设备安装 → 类型选 CA 证书,不是 VPN 证书也不是"客户端证书";鸿蒙要求设备有锁屏密码才能装凭据。列表里只显示.crt/.cer时,把.pem改名成.crt再选。装完在"用户凭据"里确认出现 Charles 的 CA。
各版本入口措辞不同,我无法核对鸿蒙 7.0 的确切文字;找不到入口时直接看下一步结果。只使用自己这台电脑生成的证书,别人给的抓包证书一律不要装。 - 关键判断,15 分钟内决定去留:回到今日校园刷新任务列表。看得到任务接口的 JSON,则继续采集;若仍然只有 CONNECT,或 Charles 报
Client SSL handshake failed/Received fatal alert/unknown_ca,请停止采集。这些现象说明 App 不信任用户安装的证书或做了证书固定,反复重装证书不会改变结论;记录现象本身就是有用的结论。 - 采集顺序:先记任务列表请求,再记任务详情请求,最后才在本人按学校要求正常签到时观察一次提交。旧参考的提交路径末尾是
/attendance/submitSign,当前 App 可能不同,请记录实际路径并去除查询参数。密文字段只写"存在,密文,长度约 N"。 - 若出现证书错误或 App 无法联网,先停止采集、关闭手机代理,恢复正常连接。若只有浏览器 H5 请求可用,应明确标注 H5,不能作为鸿蒙原生依据。
- 完成后关闭手机代理,移除本次安装的调试证书。证书安装期间 Charles 能解密这台手机上的 HTTPS 流量,不要装到日常用于网银 / 支付的设备上。完整 Charles 会话和 HAR 可能含请求头、Cookie 与请求体,保留在本机,不上传分享。Charles 的记录设置说明介绍了记录保存与忽略设置。
填完可用下方页面内自查,或运行 node tools/check-protocol-sample.mjs 你的样例.json。逐步说明见仓库 docs/protocol-capture-runbook.md。
在本机检查脱敏样例
粘贴按模板整理的 JSON(最多 64 KiB)。检查只在本页内存中运行,不上传、不保存。请先去除真实凭证;自动检查不能保证发现所有敏感内容。
尚未检查。
已经抓到的部分
正在载入…
要采集的字段清单
正在载入清单…
抓包能解决的和不能解决的:字段名、JSON 类型和非敏感版本文本可以让本人直接观察;加密算法、签名规则与密钥写在 App 包内部,代理只能看到密文。因此即使整理出完整的字段结构,也不足以证明当前加密与签名兼容,等级 B 的项目只能从当前 App 包内核对。
结构性问题(优先回答)
这些不是某个字段的取值,而是“当前客户端是否仍按旧结构工作”。它们决定字段清单是否还有意义。
整理成这个格式
这是填写格式示例,路径和字段请以实际观察为准。只保留非敏感版本值;其余只写类型,不写真实值。下载空白模板 ↗
正在载入模板…
未观察到就写“未观察到”,不要按旧参考补齐。结构性问题写在 structural 下,请逐条回答。
不要包含密码、Authorization、Cookie、Set-Cookie、Token、一次性票据、签名值、加密正文、账号标识、UUID、照片链接或精确坐标。
本页渲染证据清单,在本机分析本人选择的 HAR 文件及检查粘贴的脱敏 JSON。原始文件不上传,不读取手机请求,也不与学校通信。当前网站支持保存配置,未接入实际签到提交。