一台电脑挂十几个号,平台凭什么认出它们是同一台
做截流绕不开一个问题:你一台电脑上挂十几个号,平台为什么有时候一眼就把它们认定是同一个人操作的?
答案不在 IP 上——IP 你可以一个号配一个代理,随便换。真正的关键,是一个叫“设备指纹”的东西。它才是平台识别“多号关联”的主力。
这篇就把设备指纹到底是什么、平台怎么用它抓人、指纹浏览器又在里面改了什么,一次讲透。

先纠正一个误解:设备指纹不是 UA
很多人以为设备指纹就是 User-Agent(UA),那一串写着浏览器版本、操作系统的字符串。改个 UA 不就完事了?
差得远。
UA 只是最表层的一个参数,而且是最容易伪造的——它就是一段文本,你想写什么写什么。平台当然知道这一点,所以它根本不靠 UA 来认人。
真正的设备指纹,是一堆“你的设备无意中暴露的、很难造假的特征”组合起来的指纹。
设备指纹到底是什么:几十个参数拼出来的唯一标识
打开一个网页,浏览器会向网站暴露大量跟硬件、系统、环境有关的信息。单独拎一个出来,都不唯一;但把它们组合到一起,就几乎能唯一地指向你这台机器。
常见的有这么几类:
Canvas 指纹:让浏览器在画布上画一段特定的图形,不同显卡、驱动、系统渲染出来的像素细节会有微小差异。肉眼看不出,程序一比对就能区分。
WebGL 指纹:显卡的渲染器、厂商信息,暴露你的显卡型号。
字体指纹:系统里装了哪些字体、按什么顺序排列,不同系统的字体集都不一样。
屏幕参数:分辨率、色彩深度、可用区域。
音频指纹:声卡处理音频信号的微小特征。
还有时区、语言、硬件并发数、电池状态等等。
单个参数,可能有几百万人和你一样;但 Canvas 加 WebGL 加字体加屏幕这么一组合,撞车的概率极低。这就是“指纹”——像人的指纹一样,组合起来独一无二。
平台怎么靠它抓“多号关联”
理解了指纹是什么,平台抓多号的逻辑就清楚了。
你在同一台电脑上开十个号,这十个号的设备指纹会高度相似——因为底层是同一台机器、同一块显卡、同一套字体。平台只要两两比对,发现相似度超过一个阈值(业内常说 85% 左右),就判定:这十个号大概率是同一台机器在跑。
一旦判定关联,轻则限流,重则一锅端。
更阴的是“自相矛盾”型穿帮。比如你 UA 写着 iPhone,字体列表里却冒出 Windows 专属的“微软雅黑”;或者屏幕分辨率写的是手机,Canvas 渲染出来的却是 PC 显卡的特征。单看每个参数都“正常”,组合起来却互相打架——平台一比对,当场标红。
这就是为什么“只改 UA”没用:你改了一个表层参数,底层那一堆特征还在原样暴露着,反而显得更可疑。
指纹浏览器,到底改了什么
指纹浏览器(像比特浏览器这类)干的,就是从根本上解决这件事:给每一个窗口,配一套独立、且互相自洽的设备指纹。
注意两个词:独立,且自洽。
独立,是说每个窗口的 Canvas、WebGL、字体、屏幕都不一样,十个号是十套不同的指纹,平台比对不出相似性。
自洽,是更关键的——这套指纹内部不能打架。UA 写 iPhone,那字体就得是 iPhone 的字体集,屏幕得是手机的分辨率,Canvas 得是移动端显卡渲染出来的特征。每一个参数都得对得上,整套逻辑严丝合缝。
很多人用便宜的方案,只做到了“独立”没做到“自洽”——给每个号随机分配一堆参数,结果 UA 和字体对不上、屏幕和显卡对不上,反而比不改还容易被抓。
难点不在“多”,在“自洽”
这一节单独强调,因为它是这套技术最容易栽跟头的地方。
把指纹搞得多、搞得花哨,不难,随机生成就行。难的是让整套指纹在逻辑上站得住脚:你声称是一台什么设备,那这台设备的所有特征都得对得上,一个都不能露馅。
这背后其实是一张庞大的“设备特征对照表”——某型号手机该有什么字体、什么分辨率、什么显卡渲染特征,都得有真实数据支撑,不能瞎编。做得好的指纹方案,本质是在维护这张表的真实性。
这也是为什么这事儿没法靠一个简单脚本搞定——它考验的是对真实设备数据的长期积累。
指纹只是五层之一
最后把视角拉回来。
我第三天聊过,平台识别爬虫是好几层一起打分:IP、签名、TLS、设备指纹、行为。设备指纹,只是其中一层。
把指纹这层搞定,意味着平台没法靠“多号关联”一口端掉你。但这不等于安全——你还有行为层这关要过:十个号如果点击节奏一模一样、操作轨迹像复制粘贴,照样会被识别成机器。
指纹解决的是“你是谁”,行为解决的是“你在怎么动”。两层都得过。



