01票据生成的先后与替换规则
▲ 票据按时间过期而非按使用次数,刷新动作是替换旧票据,不是延长同一枚票据的寿命。▲
如果你也在处理WhatsApp网页版,这篇可以顺手对一下。 如果你也在处理WhatsApp网页版,这篇可以顺手对一下。 顺便一提,WhatsApp网页版 讲的是另一个容易忽略的点。 需要交叉验证时,WhatsApp网页版 是同一套体系下的另一篇。
网页端先向服务端申请一枚短期句柄,再把它渲染成图形。
句柄里不含任何身份字段,只有过期时刻与一段随机值。
手机端完成采集后,把句柄连同本机密钥签名一起回传。
服务端核验签名,向网页端下发派生凭证与初始游标。
整条链路里,图形只是载体,截屏转发同样可以完成握手。
正因如此,句柄的有效期被压得很短,通常不足一分钟。
手工连续刷新会不断替换句柄,正在进行的采集随之中断。
02光学采集成立的四项条件
▲ 采集能否成立取决于四个变量同时满足,缺任意一项都会表现为「扫了没反应」而非明确报错。▲
第一项是对比度,黑白边界必须清晰,任何模糊都会削弱它。
第二项是缩放比例,非整数倍放大触发插值,边缘被平均成灰色。
第三项是对焦,近距离拍摄时镜头来不及合焦,成像整体发虚。
第四项是采光,屏幕反光会在局部形成亮斑,破坏定位角识别。
四项里最容易被忽略的是缩放,因为页面看起来完全正常。
把显示比例调回百分百,成功率通常立刻回升。
按下列顺序核验,可在两分钟内排除三项最常见干扰。
- 确认显示缩放为百分百,关闭页面缩放类插件。
- 把手机与屏幕距离拉到二十厘米以上再采集。
- 调高屏幕亮度并避开顶灯直射,减少反光亮斑。
- 以上无效再刷新图形,避免打断正在进行的采集。
03凭证落盘时机的判定方法
▲ 凭证必须写进持久存储才算完成登录,仅停留在内存里的凭证会在下一次重载时无声消失。▲
浏览器给了三种落盘位置,持久性一级比一级强。
会话级存储随标签关闭而销毁,刷新尚可存活。
持久存储跨会话保留,作用域绑定域名与协议。
索引库容量最大,用来放游标与分段结构。
无痕窗口一律使用临时分区,关窗后分区整体消失。
这解释了一个常见困惑:只清缓存不丢登录,清站点数据必然丢。
验证方式很简单,登录成功后再重载一次,看是否回到待扫状态。
04登录态失效的四层归因
▲ 登录态失效只有四层原因,凭证过期、存储被清、主设备解绑、指纹漂移,处置方式各不相同。▲
凭证过期最常见,表现为刷新后直接退回待扫界面。
存储被清多见于清理工具的批量操作,键值与索引一并删除。
主设备解绑后,网页端凭证立即作废,且不可自行恢复。
指纹漂移最隐蔽,界面可用但部分请求持续返回异常。
四层的处置顺序不能颠倒,先注销再排查是唯一安全顺序。
| 归因层 | 响应标识 | 可逆性 | 处置 |
|---|---|---|---|
| TOKEN_EXPIRED | 401 | 可逆 | 重新握手 |
| STORE_EMPTY | 410 | 可逆 | 重新扫码 |
| DEVICE_REVOKED | 403 | 需授权 | 主设备签发 |
| FP_MISMATCH | 409 | 可逆 | 固定环境 |
| CLOCK_SKEW | 408 | 可逆 | 校准时钟 |
- 票据
- 一次性句柄,只承载过期时刻与随机值,不含身份字段。
- 派生凭证
- 由主密钥派生,可续接会话,但不可反推主密钥。
- 临时分区
- 无痕模式使用的独立存储空间,随窗口关闭整体销毁。
扫码后手机显示已连接,网页仍停在等待
[核心疑难] 手机侧握手已完成,网页端却没收到凭证。
[底层诊断] 根因是回传链路中断,后台标签被系统冻结后长连接进入休眠,切回前台即恢复。
清理浏览器数据之后还要不要重扫
[核心疑难] 是否需要重扫,取决于清理范围而非清理动作本身。
[底层诊断] 仅清缓存可保留登录态,勾选站点数据则凭证一并移除,必然需要重扫。
多台电脑同时登录会互相顶掉吗
[核心疑难] 并行登录本身合法,冲突只在席位耗尽时出现。
[底层诊断] 席位池容量固定,超出后的接入请求进入排队,已接入者不受影响。
握手侧日志
- ▸ 10月23日 票据按时间过期,刷新动作是替换而非延长
- ▸ 10月23日 采集成败取决于对比度、缩放、对焦、采光四项同时成立
- ▸ 10月23日 非整数倍缩放触发插值,二维码边缘被平均成灰
- ▸ 10月23日 凭证写入持久存储才算完成登录,内存态会在重载后消失
- ▸ 10月23日 无痕窗口使用临时分区,关窗即整体销毁
- ▸ 10月23日 只清缓存不丢登录,清站点数据必然丢
- ▸ 10月23日 主设备解绑为不可逆操作,网页端无法自行恢复
- ▸ 10月23日 指纹漂移界面可用但请求异常,属最隐蔽的一类