02 / 通用层
最难伪造的因素不在客户端
这一层三端通用,也是整套方案里最值得先理解的部分:客户端所有采集都可以被改,服务端观测到的东西不行。
网络侧:请求从哪来
- IP 地理位置:定位请求来源国家、城市
- 代理检测:识别请求是否经过代理转发
- IP 黑名单:命中已知恶意地址库
- VPN 检测:识别 VPN 出口
传输侧:握手方式暴露了客户端真身
TLS 握手时,客户端会按自己的实现顺序发送加密套件列表和扩展列表。不同的库、不同的浏览器版本,顺序和取值都不一样,把它哈希一次就是 JA3 / JA4 指纹。
同理还有 HTTP/2 的 SETTINGS 帧顺序和请求头顺序。这些都由网络栈决定,脚本层改不到。
这意味着什么
一个自动化脚本可以把 User-Agent 伪装成 iPhone 上的 Safari,但它的 TLS 指纹仍然是 Python 或 Go 的。前后矛盾本身就是强信号。
行为侧:一段时间里做了什么
- Velocity Signals:同一标识在时间窗内的请求次数与分布
- High-Activity Device:识别异常高频的设备
行为信号需要时间积累,首次访问时给不出判断,但对批量注册、撞库这类场景最有效。
聚合:Suspect Score
把所有 Smart Signal 加权成一个可疑度数字。每个信号的权重可以自己调。适合作为策略的第一道粗筛,不适合作为唯一依据。