IPASK
文章 · technical

TCP 指纹与端口扫描:能看出什么、看不出什么

TCP/IP 栈指纹、开放代理端口及其局限——以及为什么 HTTP 侧的检测替代不了它们。

2026-10-28 technical #TCP#指纹#代理
TCP 指纹与端口扫描:能看出什么、看不出什么

老工具是怎么做的

p0f 这类工具靠 TCP/IP 头细节给操作系统分类:初始 TTL、窗口大小、选项顺序、MSS。代理转发流量时,可能留下与浏览器声称系统不一致的栈特征。

端口扫描再加一个信号:开了 8080 / 3128 / 1080 往往意味着代理守护进程,透明代理还经常留下特殊请求头。

为什么它没听起来那么强

  1. 中间设备会改头。 NAT、负载均衡、CDN 会归一化 TTL 和选项,原始指纹消失。
  2. 看到的可能是代理的栈,不是用户的。 住宅代理跑在普通 Linux 主机上,栈很正常;很多现代代理还有 TLS 终止,把一切都藏起来。
  3. 纯 HTTP 检测根本看不到。 从网页请求里你只有请求头,没有 SYN 包。任何声称从 HTTP 调用得出 TCP 指纹的说法,都是猜的。
  4. 误报很常见。 移动网络和 CGNAT 会把栈改得乱七八糟,对不上不代表是代理。

它仍然有用的地方

我们怎么替代

我们的判决只用可观测的东西:ASN 类型、机房/CDN 标记、Tor 出口列表,加上浏览器一致性检查。我们不会声称看不到的 TCP 指纹。如果哪个厂商说他们能从浏览器 API 调用做 TCP 指纹,问他抓了哪些包。

读完先验一批 IP? 去验一批 →