首页/浏览器指纹检测

全面检测您的浏览器指纹

检测您的浏览器指纹、Canvas、WebGL 等是否会被识别

点击上方「开始检测」。整个采集约 1–3 秒,音频 / WebGPU / WebRTC 为异步项。

API 免费 · 无需密钥 · CORS 已放开

本站提供一个只读接口,返回本次请求的来源 IP 与 Cloudflare 边缘地理信息。 适合做 IP 查询、地理定位、ASN 归属展示。IP 原样返回,不做遮挡。

GET /api/ip
返回请求者自身的 IP 与地理信息。无需任何参数。
GET /api/ip (自测)
直接点下面的「试一试」,看当前浏览器的真实返回。

实时响应

application/json
加载中…

调用示例

curl
curl -s https://YOUR-DOMAIN.pages.dev/api/ip | jq
JavaScript (fetch)
const r = await fetch('https://YOUR-DOMAIN.pages.dev/api/ip');
const { ip, geo } = await r.json();

console.log(ip);                                    // "223.94.111.223"
console.log(geo.city, geo.country);                 // "Hangzhou" "CN"
console.log('AS' + geo.asn, geo.asOrganization);    // "AS56041" "China Mobile..."
Python
import requests

d = requests.get('https://YOUR-DOMAIN.pages.dev/api/ip').json()
print(d['ip'], d['geo']['country'], d['geo']['city'])

响应字段

字段类型说明
okboolean恒为 true
ipstring来源 IP,完整未遮挡
ipVersionnumber4 或 6
geo.countrystring两位国家代码,如 CN
geo.region / geo.citystring省 / 市
geo.latitude / geo.longitudestring城市级坐标,非精确位置
geo.timezonestringIANA 时区,如 Asia/Shanghai
geo.asn / geo.asOrganizationnumber / string自治系统号与运营商名称
geo.colostringCloudflare 边缘节点代码,如 HGH
geo.tlsVersion / geo.tlsCipherstring本次连接实际使用的 TLS 参数
geo.clientTcpRttnumberTCP 往返延迟(毫秒)
viaCloudflareboolean是否经 Cloudflare 边缘
tsstring响应时间,ISO 8601

浏览器指纹:看不见的追踪者

浏览器指纹通过你的浏览器和设备所暴露的设置与能力组合来识别和追踪用户。与 Cookie 不同,它无需在本地存储数据,也很难清除,是现代网络中最持久的追踪技术之一。

什么是浏览器指纹?

浏览器指纹是描述你设备软硬件配置的一组属性集合。它不像 Cookie 那样在你的设备上存储标识符,而是读取数十项信号——屏幕分辨率、语言、时区、已安装字体、显卡硬件等——并将它们组合成一份独特画像。由于这种组合很少有两台设备完全相同,网站便能在你再次访问时认出你,并跨站点关联你的行为,即使你清除了浏览数据也无济于事。

指纹如何工作

页面加载时,脚本会通过标准的 JavaScript 接口查询你的浏览器。每一项返回值——User-Agent 字符串、色彩深度、CPU 核心数、触摸支持、可用字体——都会增加几比特的识别信息。单独看没有哪一项是唯一的,但信息熵会不断累积:把十五到二十个弱识别信号组合起来,结果往往在数百万用户中是唯一的。网站将这些值哈希成一个稳定的 ID 并存储在服务器端,完全不受你的控制。

Canvas 与 WebGL 指纹

Canvas 指纹会要求你的浏览器在离屏画布上绘制隐藏的文字或图形,再读回像素数据。由于显卡、图形驱动和抗锯齿处理的细微差异,渲染结果对你的设备而言是稳定的,但在不同机器之间各不相同。WebGL 指纹更进一步,探测你的 3D 图形栈,获取渲染器名称、支持的扩展和着色精度。两者结合,是追踪者可获取的信息熵最高的信号之一。

音频、字体与其他向量

指纹识别不止于图形。AudioContext 接口可用于处理一段静音波形,其输出会因硬件和操作系统而产生细微差别。字体枚举可检测你安装了哪些字体,往往能暴露你的操作系统和应用程序。其他向量还包括媒体设备、硬件并发数和时序测量。追踪者会融合多种向量,因此即便你伪装了其中一项,其余信号仍能识别出你。

WebRTC 与真实 IP

WebRTC 为实时音视频设计,历史上曾被用来绕过 VPN 直接暴露你的局域网地址甚至公网地址。现代浏览器默认启用 mDNS 混淆,把本地地址随机成 xxxx.local 主机名,泄露面已大幅收窄——但检测仍有价值:如果你的 ICE candidate 里出现了 192.168.x.x,说明混淆被关闭了,这本身就是一个异常信号。

如何降低指纹的唯一性

反直觉的目标是让自己看起来普通,而非隐形。Tor、Brave 等浏览器刻意让大量用户共享相同指纹,因此「融入人群」比「鹤立鸡群」更有效。避免使用罕见扩展、奇异字体和异常屏幕尺寸,保持浏览器更新,并定期检测——一个只伪装了某一项值却在别处留下矛盾的脚本,反而会让你更容易被识别。

常见问题

检测是否安全?会泄露我的信息吗?
指纹信号完全在你的浏览器内计算,结果不会上传到任何服务器。但有一处例外要讲清楚:WebRTC 泄露检测会向 stun.l.google.com:19302 发送真实请求,你的 IP 因此会暴露给该 STUN 服务 —— 这是判断「VPN 是否漏了 UDP」唯一可行的办法,不联网就问不到浏览器自己看到的出口 IP。如果你不想联网,可在浏览器策略里禁用 WebRTC,该项会显示「无公网候选」。另外 /api/ip 只回显 HTTP 请求头里本来就有的 IP,不落库、不写 Cookie。
无痕 / 隐身模式能阻止指纹识别吗?
不能。隐身浏览只是阻止浏览器在本地保存历史记录和 Cookie。你的指纹——屏幕、硬件、字体、显卡——在隐身窗口里完全相同,追踪者依旧能认出你的设备。隐身模式防的是本地窥探,而非远程指纹识别。
使用 VPN 会改变我的浏览器指纹吗?
只能部分改变。VPN 改变的是你的 IP 地址和大致位置,而指纹由浏览器和硬件信号构成,VPN 并不触及。你可能看起来来自另一个国家,却仍呈现相同指纹,这本身就是一种可被检测的矛盾。
我的指纹有多独特?
这取决于你的配置,但研究发现绝大多数桌面浏览器都可被唯一识别。运行本检测可以看到你的哪些信号携带的信息熵最高,从而清楚地了解究竟是什么让你的设备从人群中脱颖而出。
为什么出现了「环境异常」?
常见原因有三类:一是运行在自动化环境(Puppeteer / Playwright / Selenium),navigator.webdriver 为 true;二是装了改 UA 或改 Canvas 的隐私插件,导致信号自相矛盾;三是浏览器内核版本与 UA 声明不符。每一项的详细原因都会列在检测结果里。
这个接口能商用吗?有频率限制吗?
可以,CORS 已全开,无密钥。限制只有 Cloudflare 免费额度的每天 10 万次请求。如果要自建,源码就在本仓库,wrangler pages deploy 一条命令即可。