HTTP 指纹是由一系列特征构成的,服务端检查的特征越详细(反爬级别越高),伪装的难度就越高,当然如果我们把所有特征全都伪装了,那就一定就能骗过服务端了。
常见的一些特征:
User-Agent 的值。
Header 及其排列顺序。
TLS 指纹,也就是TLS 握手时,客户端发送 ClientHello 的特征。包含客户端所支持的加密套件列表及其排列顺序、客户端支持的TLS版本、压缩方式、TLS extensions 列表及其排列顺序等。
对于 HTTP2,还有更多额外可以检查的特征:
HTTP2 settings 帧中的值列表及其排列顺序。
HTTP2 WINDOW_UPDATE 帧的值。
HTTP2 Priority 帧列表及其排列顺序。
伪头(Pseudo-Header) 的顺序。
请求头及其排列顺序,以及 header 帧中 flag 与 priority 选项的值。