TLS 指纹,与 user agent 保持一致
在页面运行任何 JavaScript 之前,TLS 握手就已经把客户端描述了一遍。Clearcote 的握手就是 Chromium 自己的,少数随 Chrome 版本变化的字段会跟随身份画像声明的版本,所以网络层和 user agent 讲的是同一套说法。
所有套餐均可用,默认开启,无需任何配置。
默认设置本身就是对的
import { launch } from "clearcote";
// default: the ClientHello follows the persona's claimed Chrome major
const browser = await launch({ fingerprint: "account-42", tlsProfile: "match-persona" });
// or pin a major (only together with a matching brandVersion), or leave the build's own TLS untouched:
// tlsProfile: "chrome-150"
// tlsProfile: "native"亮点
Chromium 自己的握手
与 Chrome 发布版完全相同的 BoringSSL:密码套件列表、版本范围和每次连接的扩展顺序都是原汁原味的,而不是重新实现的。
跟随声明的版本
在近几个 Chrome 大版本之间有差异的字段,例如后量子密钥交换组和 ALPS 码位,会跟随声明的大版本,而不是停留在构建本身的版本上。
层与层之间没有接缝
JavaScript 层面和握手都来自同一个浏览器,所以不存在“user agent 打了补丁、网络栈却没打”这种错位。
HTTP/2 来自同一协议栈
SETTINGS、窗口更新和请求头顺序都来自 Chromium 自己的 HTTP/2 实现,而不是另一个独立的客户端库。
品牌信息在请求头里
Edge、Opera 和 Vivaldi 共用 Chromium 的握手;品牌信息体现在 user agent 和 client hints 中,而不在 ClientHello 里。
可配置,但很少需要
默认设置几乎适合所有人。提供这个选项,是为了避免你锁定一个与品牌版本相矛盾的版本。
为什么握手很重要
TLS 指纹(JA3,及其后继者 JA4)概括的是 ClientHello:客户端提供了哪些版本、密码套件、扩展和组,以及以什么形式提供。HTTP/2 又增加了一层:SETTINGS 帧、窗口大小和伪首部顺序。这两者都在服务器端读取,早于任何脚本运行,而且拿来和 user agent 比对的成本都很低。
很多自动化技术栈正是在这种比对中露出破绽。带 Chrome user agent 的 HTTP 库,发出的仍是它自己那个库的握手;JavaScript stealth 层改变的是页面读到的内容,而不是网络上实际发出的内容。Clearcote 从头到尾都是 Chromium,底下没有第二个客户端。
Clearcote 额外做的是版本一致性。每个 Chrome 版本都会改动几处握手细节。当身份画像声明的 Chrome 版本与它实际运行的构建不同时,match-persona 只把这几个字段调整为所声明的大版本,其余一切保持 Chromium 生成的原样。
伪造的 user agent 与 Clearcote 的对比
典型用途
给握手打分的网站
很多边缘网络会在页面加载之前读取 JA3 或 JA4。一致的握手能从整体画面中去掉一处矛盾。
你自己设置的品牌版本
如果你在 Chrome 或 Edge 身份画像上设置了 brandVersion,主要的版本相关握手字段会跟随它。但浏览器的其余部分仍会上报引擎的真实版本,所以不设置 brandVersion 依然是保持一致的默认做法。
网络研究
用同一个二进制文件,比较与版本相关的握手字段在各个 Chrome 大版本之间如何变化。
Clearcote 专为隐私保护、测试、研究和合法自动化而打造。你须对自己的使用方式负责,并遵守所访问网站的条款。
哪些套餐包含此功能
所有套餐均可用,默认设置下即已生效。
对比套餐常见问题
什么是 JA3 或 JA4 指纹?
对客户端 TLS ClientHello 的一种紧凑概括:包括它的版本、密码套件、扩展和支持的组。服务器用它来区分浏览器和 HTTP 库,并核实客户端是否与其 user agent 所声称的一致。参见关于 JA3 与 JA4 的问答。
Clearcote 会随机化 TLS 指纹吗?
不会。随机的握手不像任何真实浏览器,反而很容易被识别出来。Chrome 本身会在每次连接时打乱 TLS 扩展的顺序,Clearcote 完全照 Chrome 的方式保留了这一行为。
Edge 或 Opera 身份画像会改变 ClientHello 吗?
不会。这些浏览器底层都是 Chromium,共用同一套握手。品牌信息体现在 user agent、client hints 和请求头中,Clearcote 也正是在这些地方设置它。
什么时候需要修改 tlsProfile?
几乎不需要。match-persona 已经会跟随你声明的品牌版本。只有当你通过其他方式设置了品牌版本时,才需要锁定 chrome-<major>;如果想让握手完全保持构建编译时的样子,就用 native。
在文档中深入了解
相关功能
Canvas、WebGL、WebGPU、音频、字体、屏幕和硬件都由 C++ 引擎从一个种子派生,区域设置和时区也随之匹配,让每个检测面彼此一致。
设置代理并开启 geoip,时区、语言和 WebRTC 就会跟随出口 IP。在授权版构建上,带用户名和密码的 SOCKS5 可以直接使用。
可直接替换的 Chromium,适用于 Playwright 和 Puppeteer:在 Python、Node 或 .NET 中只需改一行 import,浏览器会自动下载并完成 SHA-256 校验。
通过官方 Docker 镜像、serve() 或 CLI,把 Clearcote 作为常驻 CDP 端点运行,任何框架都能直接连接,无需改代码。
相关阅读
试用 Clearcote
可直接接入 Playwright 与 Puppeteer,一直到 TLS 握手都保持一致,并提供开源构建作为起点。
通过 GitHub 可免费使用一个浏览器。无需信用卡。