# Cloudflare Turnstile 实施技能参考
关于实施 Cloudflare Turnstile 的专家指南——这是一种智能的 CAPTCHA 替代方案,可在不显示传统验证码的情况下保护网站免受机器人攻击。
## 概述
Turnstile 是一种用户友好的验证码替代方案,它在后台运行挑战,无需用户交互。它通过浏览器行为、设备指纹和机器学习等信号自动验证访问者。
## 小部件类型
| 类型 | 交互 | 使用场景 |
|------|-------------|----------|
| **托管式** (默认) | 必要时显示复选框 | 表单、登录 - 平衡用户体验与安全性 |
| **非交互式** | 不可见,自动运行 | 无摩擦体验,低风险操作 |
| **不可见** | 隐藏,通过程序触发 | 预检查、API 调用、无头浏览器 |
## 快速开始
### 隐式渲染 (基于 HTML)
html
### 显式渲染 (基于 JavaScript)
html
window.turnstile.render('#turnstile-container', {
sitekey: 'YOUR_SITE_KEY',
callback: (token) => console.log('Token:', token)
});
### 服务端验证 (必需)
javascript
// Cloudflare Workers
export default {
async fetch(request) {
const formData = await request.formData();
const token = formData.get('cf-turnstile-response');
const result = await fetch('https://challenges.cloudflare.com/turnstile/v0/siteverify', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
secret: env.TURNSTILE_SECRET,
response: token,
remoteip: request.headers.get('CF-Connecting-IP')
})
});
const validation = await result.json();
if (!validation.success) {
return new Response('Invalid CAPTCHA', { status: 400 });
}
// 处理表单...
}
}
## 测试密钥
**开发/测试至关重要:**
| 类型 | 密钥 | 行为 |
|------|-----|----------|
| **站点密钥 (始终通过)** | `1x00000000000000000000AA` | 小部件成功,令牌验证通过 |
| **站点密钥 (始终拦截)** | `2x00000000000000000000AB` | 小部件失败,令牌验证失败 |