Trust Tokens 是 Chrome 推出的隐私优先型人机识别机制,通过可信发行方签发短期加密令牌,在不暴露用户身份前提下验证请求真实性,适用于无感防爬、恶意注册防控等场景。

Trust Tokens 是 Chrome 推出的隐私优先型身份凭证机制,它不依赖 Cookie 或设备指纹,而是通过可信发行方(如 Google、Cloudflare)签发短期、可验证、不可追踪的加密令牌,让网站能在不暴露用户身份的前提下,判断“当前请求是否来自真实、合规的浏览器用户”。它不是用来替代登录态,而是补充“人机识别”环节——尤其适合无感防御爬虫、防恶意注册、限流前的身份预筛。
Trust Tokens 的核心工作逻辑
它基于三方协作模型:发行方(Issuer)、用户浏览器、验证方(Relying Party)。典型流程是:
- 用户在可信站点(如 google.com、cloudflare-issued 页面)完成一次轻量交互(如点击“信任此服务”),浏览器向该 Issuer 请求并安全存储一组 Trust Tokens(每个 Token 是加密签名的短生命周期凭证)
- 当用户访问你的业务站点(如 yoursite.com)并触发敏感操作(如提交表单、加载风控接口)时,前端调用
document.requestTrustToken()API,从本地安全沙箱中取出一个未使用过的 Token - 前端将该 Token 作为请求头(如
Sec-Trust-Token:)或参数附在后续请求中发往后端 - 后端调用 Chrome 提供的公开验证端点(如
https://chrome的信任验证服务)或使用本地验证库(需集成 Chromium 的验证逻辑)校验 Token 签名、有效期、发行域及使用次数,返回布尔结果
为什么能实现“无感”且防爬虫
关键在于它的设计天然排斥自动化工具:
- 浏览器专属执行环境:Trust Token API 仅在 Chromium 内核(Chrome、Edge、Brave 等)的 Secure Context(HTTPS + 用户手势触发)下可用;PhantomJS、requests、curl、甚至 Puppeteer 默认无法调用该 API
- 无设备绑定、但有上下文约束:Token 不记录 IP、UA、设备 ID,但绑定发行域和浏览器会话粒度,同一 Token 不能跨 Origin 复用,也无法被截获后离线重放
- 无需用户操作干预:Token 获取发生在用户此前已建立信任的场景(如登录 Google 账户后访问支持 Trust Tokens 的页面),业务站点调用时完全静默,不弹窗、不跳转、不中断流程
- 抗批量伪造:Issuer 对每个用户发放 Token 有配额限制(如每小时最多 5 个),且 Token 含防重放 nonce,服务端验证失败即作废,无法靠脚本暴力生成
实际接入的关键步骤与注意事项
目前 Trust Tokens 仍处于实验推广阶段(Chrome 120+ 默认启用,但需手动开启实验标志或依赖支持平台),落地需注意:
- 必须由可信 Issuer 签发:自行搭建 Issuer 极其复杂(需 CA 级密钥管理、TTP 协议实现),推荐直接集成 Cloudflare 的 Trust Token Gateway 或等待 Google 的开放发行服务
-
前端调用需满足安全前提:页面必须 HTTPS;调用
requestTrustToken()必须由用户真实手势(click/tap)触发,不能自动执行;建议配合document.hasTrustTokens()做前置探测 -
后端验证不能只信前端传入值:必须调用官方验证接口(如 Cloudflare 提供的
/trust-token/verify)或使用 Chromium 开源验证库(libtrusttoken)做完整签名解码与策略检查,禁止仅校验格式或白名单域名 - 不能单独依赖,需分层兜底:Trust Tokens 无法识别已登录但被劫持的账号,也不覆盖 Safari/Firefox 用户。应作为第一道“人机过滤网”,后面仍需保留 Token 校验、行为分析、IP 限频等传统手段
一个最小可行验证示例(前端)
以下代码仅在 Chrome 中有效,用于检测是否可用并尝试获取 Token:
<script></script>
document.getElementById('get-token').addEventListener('click', async () => {
try {
const hasTokens = await document.hasTrustTokens({ issuer: 'https://tokens.example.com' });
if (hasTokens) {
const response = await document.requestTrustToken({
issuer: 'https://tokens.example.com',
redemptionRecord: 'https://yoursite.com/api/submit'
});
const token = await response.token(); // 返回加密 Token 字符串
// 将 token 发送给后端校验
fetch('/api/submit', {
method: 'POST',
headers: { 'Sec-Trust-Token': token },
body: JSON.stringify({ data: '...' })
});
}
} catch (e) {
console.warn('Trust Token 不可用,降级走传统风控');
// 触发滑块验证码或增加 Token 校验强度
}
});
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











