这个页面是做什么的?
你一打开网页,网站就能悄悄读到很多东西。这个页面把它们全读一遍,再写成一段话告诉你:在网站眼里,你是谁。比如你大概从哪来、现在在哪、用什么设备、有什么习惯。
每一项这样的信息,我们叫它「探测项」:网站不用你同意就能读到的一项信息。把鼠标放到那段话里填空的地方,会显示它是根据哪些探测项得出的。下面的列表列出每一个探测项、它怎么读(右边那一列,是用到的 API 或请求头,也就是浏览器每次请求都会附带的信息),以及读到的值。它们都不会弹出授权提示。
你正在 的内置浏览器里,下面的结果是这个内置浏览器的。想测你平时用的浏览器,请复制链接,到 Safari 或 Chrome 里打开。你正在某个 App 的内置浏览器里,下面的结果是这个内置浏览器的。想测你平时用的浏览器,请复制链接,到 Safari 或 Chrome 里打开。你正在微信里打开,下面的结果是微信内置浏览器的。想测你平时用的浏览器,请点右上角 ··· 选「在浏览器打开」。
口口口口口口口口口口口,现在人在口口口口口口口口口口口口口口口口口口。你说口口口口口口口,电脑的时区是口口口口口口口,时钟用口口口口口口。
口口口口口口口口口口口口口口口口口口口口口口
你用的是口口口口口口口口口口,浏览器是口口口口口口口口口口口口,屏幕口口口口口口口口口口口,显卡是口口口口口:口口口口口口口口口口口口口口口口口口口口口口口口口口。
你通过口口口口口口口口上网,口口口口口口口口口口,口口口口口口口口口口口口口口口口口;帮你把网址换成 IP 地址的 DNS 服务器在口口口口口。口口口口口口口口口口口口口口口口口口口口口口口口口口口口口口口口口口口口口。
你喜欢口口口口口,口口口口口口口口口口,口口口口口口口口口口口口口口。口口口口口口口口口口口口口口口口口口口口口口口口口口口口口口口口口口口。装的字体透露了一点:口口口口口口。至于年龄,口口口口口口口口口口口口口口。
在网站眼里,这是口口口口口口口口口口口口口口口口口口口口口口口口口。口口口口口口口口口口口口。你在口口口口口口口口口口口口口打开了这个页面,口口口口口,口口口口口口口口口口口。
放在人群里,口口口口口口口口口口口口口口口口口口口口口口口。
比特越多越罕见:每多 1 比特,和你一样的人就少一半。各项之间并不独立(比如 4K 屏和高端显卡常一起出现),所以整个指纹按它自己的真实次数算,不是把各项乘起来。
为了告诉你有多少人和你一样,本站会累计匿名计数:不存 IP,不存完整指纹,也没有单次访问的记录。 ·
CF-Connecting-IPrequest.cf.cityrequest.cf.latituderequest.cf.asOrganizationedns.ip-api.comrequest.cf.timezoneDNS PTRrequest.cf.colorequest.cf.tlsVersion/cdn-cgi/trace · kex, sni/cdn-cgi/trace · warpTLS ClientHelloprobe.1ms.dog · TCP SYNprobe.1ms.dog · JA4probe.1ms.dog · HTTP/2 SETTINGSprobe.1ms.dog · HTTP/3 · QUIC JA4Date.now()RTCPeerConnection · STUNWebRTC host candidateIPv6 EUI-64 (ff:fe)myip.ipip.netapi.ip.sbchatgpt.com/cdn-cgi/traceclaude.ai/cdn-cgi/tracewww.cloudflare.com/cdn-cgi/traceCloudflare Radar · IPv4 / IPv6User-AgentAccept-LanguageSec-CH-UASec-CH-UA-PlatformAccept-EncodingDNT · Sec-GPCReferer · document.referrernavigator.languagesIntl.DateTimeFormatIntl …timeZoneIntl …hourCycleIntl.Locale weekInfoIntl.NumberFormatIntl.supportedValuesOfnavigator.keyboardspeechSynthesisError.messageJS feature probesFunction.prototype.toString · iframeCSS.supportscanvas text antialiasingcanvas.toDataURLWebGL getParameterOfflineAudioContextMath.* → SHA-256emoji measureTextfonts → SHA-256getClientRects · RangeSVG getBBox · getComputedTextLengthmeasureText actualBoundingBoxWebGL readPixelswindow · HTMLElement · CSS keysperformance.now() resolutionrecursion depthSHA-256screen · cores · GPU · fonts → SHA-256HTTP cache · ETag / If-None-Matchcanvas × 2navigator.brave · noise · liesuserAgentDatauserAgentData.brands…architecture · bitnessscreen · devicePixelRatiorequestAnimationFramescreen.isExtended · screenXinnerWidth · availHeightoffsetWidth − clientWidthWebGL RENDERERnavigator.gpu adapter.infoGPUAdapter limits · featuresWebGL2 · MAX_TEXTURE_SIZEhardwareConcurrencynavigator.deviceMemoryperformance.memorymaxTouchPoints · pointernavigator.getBatterygeolocation (on request)devicemotion (on request)navigator.connectionenumerateDevicesAudioContext.sampleRatePublicKeyCredentialbluetooth.getAvailabilityMediaSource.isTypeSupportedRTCRtpSender.getCapabilitiesMediaRecorder.isTypeSupportedmediaCapabilities.decodingInforequestMediaKeySystemAccessstorage.estimateprefers-color-schemeprefers-reduced-motioncolor-gamut · dynamic-rangeprefers-contrast · forced-colorsfont-size: medium · AccentColordisplay-modedoNotTrack · GPCnavigator.cookieEnabledpermissions.queryusb · serial · hid · IdleDetector …pdfViewerEnablednavigator.webdriverWorker · navigatorbait element7 tracker scripts (on request)window.ethereum · DOM markschrome-extension:// fileshistory.lengthlocalStorage · IndexedDB · Cache · window.namecanvas measureText你一打开网页,网站就能悄悄读到很多东西。这个页面把它们全读一遍,再写成一段话告诉你:在网站眼里,你是谁。比如你大概从哪来、现在在哪、用什么设备、有什么习惯。
每一项这样的信息,我们叫它「探测项」:网站不用你同意就能读到的一项信息。把鼠标放到那段话里填空的地方,会显示它是根据哪些探测项得出的。下面的列表列出每一个探测项、它怎么读(右边那一列,是用到的 API 或请求头,也就是浏览器每次请求都会附带的信息),以及读到的值。它们都不会弹出授权提示。
城市看的是你的 IP 地址:拿它去查 Cloudflare 的 IP 地理位置库,广告公司用的也是这类数据库。开了 VPN 的话,查到的就是 VPN 服务器所在的城市。
国籍是根据浏览器语言(比如 zh-TW 指向台湾,pt-BR 指向巴西)和系统时区猜的,这两样开 VPN 都不会变。美式英语是几乎所有设备的默认语言,说明不了什么,这时就看时区。
因为浏览器里没有任何信息透露年龄。广告公司估算年龄和性别,靠的是你的行为:去过哪些网站、看了什么、买了什么,再用同一个指纹或 Cookie 把这些网站串起来。这个页面不读这些,所以直接告诉你猜不出,不会编一个。
就是你这台设备的一组细微特征:系统画文字和图形(Canvas、WebGL)、处理声音时的细微差别,装了哪些字体,再加上屏幕和各项设置。把这些合起来,能算出一串固定的编码。它在每个网站上都一样,不需要 Cookie,无痕窗口里也一样。
它和 IP 无关,所以开 VPN 改变不了它。有些浏览器会防这一手(Brave、开了 resistFingerprinting 的 Firefox、无痕模式下的 Safari),办法是加入随机干扰。「防指纹」那一行会告诉你,你的浏览器有没有这么做。
你用 VPN、代理或者改了 UA(浏览器自报的型号和版本)时,网站会把你的各项信息拿来互相对照。下面这些都会露馅:系统时区和 IP 对不上,语言是另一个国家的,WebRTC 暴露的地址不是 VPN 的,IP 属于机房,UA 和显卡对不上。
想看起来像 VPN 所在国家的人:把系统时区改成那边的,关掉 WebRTC 或者换一个能让它走 VPN 的浏览器,再换成家宽 IP 的出口。标黄、标红的项下面都有具体改法。
不会保存关于你个人的任何东西。
检测都在你的浏览器里进行。本站服务器只回答三种请求:/api/me(它从这次请求里本来就看得到的:你的 IP 地址、Cloudflare 对这个地址的数据,以及请求头),/api/etag(一个随机编号,用来演示浏览器缓存怎么认出你,服务器不保存),以及下面说的匿名计数。本站自己的探针 probe.1ms.dog 会看你这次连接本身:TCP 包、TLS 握手、HTTP/2 和 HTTP/3 的开头,用来认出系统、看出中间有没有代理。服务器都不记日志。
为了告诉你有多少人和你一样,检测完页面会给匿名计数器加一:本站有多少次检测是这个系统、浏览器、屏幕、显卡、时区和首选语言,每种指纹编码的前 8 位各出现过几次,以及当天每项检查的结果各有多少、每次检测用了多久(只记「3–5 秒」这样的区间,45 秒还没测完的记一次「卡住」)。不存 IP,不存完整指纹,也没有单次访问的记录,每个值只对应一个数字。指纹卡下方的「不参与统计」可以让这个浏览器不再计入;开了全局隐私控制(GPC)的浏览器一律不计入。
为了找出你的各个出口和 DNS 服务器,页面还会直接访问几个外部服务(名字都写在右边那一列:IPIP.NET、IP.SB,chatgpt.com、claude.ai 和 cloudflare.com 上的 Cloudflare trace,Cloudflare Radar,ip-api 的 DNS 服务器,以及两个 STUN 服务器)。它们能看到你的 IP 地址,就像你访问任何网站时一样。除此之外,其余信息都在你的浏览器里读取,不会发出去。代码是开源的。
上次来访的记录只存在你自己的浏览器里,不会上传(和上面的匿名计数是两回事):记的是上次来访的时间、指纹和城市,用来告诉你有没有被认出来。点指纹卡上的 × 就能删掉它。分享出去的链接只带画像,不带你的 IP 地址和城市。「存储留痕」那一行还会在本地存储、IndexedDB、缓存存储和窗口名里各写一个随机标记,同样只留在你的浏览器里,用来演示清掉一处还能不能认出你;点 × 会一起删掉。「追踪拦截实测」「精确定位」「运动传感器」要你点按钮才会进行:追踪实测会去请求 7 家追踪公司的脚本,它们会看到你的 IP;定位和传感器的读数只在页面里计算,不上传。「追踪拦截实测」「精确定位」「运动传感器」要你点按钮才会进行:追踪实测会去请求 7 家追踪公司的脚本,它们会看到你的 IP;定位和传感器的读数只在页面里计算,不上传。
因为不是每个浏览器都提供所有接口。键盘布局、电池、网络类型、内存和 Client Hints(浏览器主动提供的设备信息)只有 Chromium 内核的浏览器才给;Safari 和 Firefox 有意少给。读不到,对隐私反而是好事。