代理的操作系统欺骗:设置你的 TCP/IP 指纹

Windows、macOS、iOS 和 Android —— 现已支持 ISP、数据中心和 IPv6。
关键要点
- 代理流量一直都带着 Linux TCP/IP 指纹,因为目标站点看到的连接是由代理服务器打开的,而不是由你的机器打开的。
- FlashProxy ISP、数据中心和 IPv6 代理现已支持 -os- 用户名标志,具有四个值:windows、macos、ios、android。
- 省略该标志会保持默认 Linux 指纹,所以现有设置不会改变。该功能无需额外费用。
- TCP/IP 指纹从 TTL、窗口大小、MSS 和 TCP 选项顺序被动读取,所以没有脚本运行,也没有请求被拒绝。
- 在保持 TLS 或用户代理不一致的情况下欺骗 TCP/IP 层会添加检测信号而不是删除一个。
操作系统欺骗现已在 FlashProxy ISP、数据中心和 IPv6 代理上线。你可以通过在代理用户名中添加单个标志来选择连接看起来来自的操作系统。支持四个值:windows、macos、ios 和 android。不添加标志时,你的指纹保持为 Linux,与之前完全相同,所以现有设置不会改变。无需额外费用。
代理上的操作系统欺骗是什么?
操作系统欺骗(也称为 OS 定位)是指控制目标站点从你的 TCP/IP 指纹 推断出的操作系统,该指纹位于网络层,在 TLS 下方和你的请求头下方。
这是与大多数人管理的层不同的一层。改变你的用户代理告诉站点你声称运行什么操作系统。改变你的 TLS 指纹告诉它你看起来是什么客户端或浏览器。这两者都不会触及握手本身。操作系统欺骗会。
FlashProxy ISP、数据中心和 IPv6 代理现在支持 -os- 标志,有四个支持的值:
windows
macos
ios
android
我们实时测试了这一功能,并进行了独立验证。
为什么你的 TCP/IP 指纹很重要
在你的浏览器发送第一个请求头之前,你的连接已经透露了一些信息。
每个 TCP 连接都会携带由打开它的操作系统设置的小细节:起始 TTL 值、初始窗口大小、MSS 和 TCP 选项的写入顺序。这些都不是你的应用程序选择的。你的内核选择这些值,不同的操作系统选择方式不同。
检测系统读取这些值并在不向你询问任何信息的情况下推断出你的操作系统。这是完全被动的。没有脚本要阻止,也没有请求要拒绝。
这就是这一层之所以棘手的原因。大多数指纹识别表面是你可以在某处拦截的东西:canvas 调用、WebGL 查询、client hints 请求头。被动 TCP 指纹识别发生在数据包本身中,在你的应用程序代码有任何发言权之前。你无法从浏览器内部修补它,因为浏览器不是产生它的东西。
为什么代理流量一直看起来像 Linux
这是让人困惑的部分。
当你使用代理时,目标站点看到的连接不是你的机器打开的连接。你的客户端连接到代理,代理再打开一个单独的连接。所以站点读取的 TCP/IP 指纹属于代理服务器,而不是你。
代理服务器运行 Linux。我们的服务器也是。这意味着代理流量一直带着 Linux 指纹到达。
现在想象一下这从另一端看起来如何。一个请求来自住宅 ISP 地址。用户代理说 Windows 上的 Chrome。TLS 指纹说 Windows 上的 Chrome。但在所有这些之下,握手说的是 Linux 服务器。
真正的 Windows 机器没有 Linux 网络栈。即使其他一切配置完美也没有帮助,因为这一层与其他层相矛盾。
这也是为什么一个设置可以通过你投向它的每个指纹检查器,但仍然被标记。你从浏览器内部运行的检查器看不到给你带来问题的那一层。从外部来看,这是最便宜的信号之一,无需 JavaScript、无需质询,也不会增加延迟。
如何在 ISP、数据中心和 IPv6 代理上使用 OS 定位
将标志添加到你的代理用户名中:
USERNAME-os-windows它与你现有的定位标志组合:
USERNAME-country-us-session-abc123-os-macos完整的连接字符串看起来像这样:
bash
curl -x http://USERNAME-os-windows:[email protected]:777 https://api.ipify.org支持的值
值 | 指纹 |
|---|---|
| Windows |
| macOS |
| iOS |
| Android |
(省略) | Linux(默认值) |
该标志按连接生效,所以相同凭据上的不同请求可以各自使用不同的值。它不会改变你的出口 IP、其位置或你的会话行为。
可用于 ISP 代理、数据中心代理和 IPv6 代理,无需额外费用。
保持指纹一致
这部分值得读两遍。
欺骗一层而忽视其他层可能会让你更容易被发现,而不是更难。反机器人系统不仅检查单个值。它们检查所有信号是否描述一个可信的设备,两个相互矛盾的层比任一个值单独出现时更容易被发现。
所以如果你设置 -os-windows 而你的 TLS 指纹说你是 Python 库,你的用户代理说 Android,你没有移除一个信号。你添加了两个。
使这些保持一致:
TCP/IP 指纹,由
-os-标志设置TLS 指纹,由你的客户端或反检测浏览器设置
用户代理和客户端提示,在你的请求头中设置
屏幕尺寸、字体和时区,由你的浏览器配置文件设置
一个简单的规则:选择你的设置已经呈现的操作系统,而不是你假设最常见的操作系统。特别要小心 ios 和 android,因为这些意味着移动设备。将任一个与桌面用户代理配对描述的是不存在的设备。
更多控制,同样可靠
指纹识别不断向栈的更下层发展。请求头和 cookie 是每个人都已经管理的层。网络层一直在那里静静地显示着 Linux,读取它的供应商比大多数用户都更了解这一点。
弥合这一差距感觉应该作为产品的一部分而不是额外成本,所以就是这样。


