Cloudflare Turnstile 是一種新型態的人機驗證(Human Verification)服務,旨在取代傳統的 CAPTCHA 驗證碼。它不要求用戶完成繁瑣的圖片選擇或文字輸入,而是透過被動的行為分析和瀏覽器指紋技術,判斷訪問者是否為真人。這種方式大幅提升用戶體驗,同時保護網站免受機器人攻擊。

Cloudflare Turnstile 無驗證碼人機驗證:5 分鐘快速整合指南
1. Turnstile 的核心技術與優勢
- 無驗證碼設計
Turnstile 讓大多數用戶無感通過驗證,只有在系統判斷存在風險時才會觸發簡單的互動挑戰。 - 隱私友好
不使用 cookie 或追蹤用戶跨站行為,符合 GDPR 和 CCPA 規範。 - 免費且無流量限制
Cloudflare 提供免費方案,適合各種規模的網站使用。 - 輕量快速
JavaScript 檔案小,載入速度快,不影響網站性能。
2. Turnstile 與傳統 CAPTCHA 的比較
項目 | Turnstile | 傳統 CAPTCHA (如 Google reCAPTCHA) |
---|---|---|
用戶體驗 | 幾乎無感驗證 | 需點選圖片或輸入文字 |
隱私保護 | 不使用第三方 cookie | 依賴 Google 帳號數據及追蹤 |
部署難易度 | 簡單,提供完整 API | 較複雜,且需配置多種安全參數 |
成本 | 免費 | 企業版需付費 |
效能影響 | 輕量,影響甚微 | 可能影響頁面載入速度 |
3. 如何申請並取得 Turnstile 金鑰
- 登入 Cloudflare Dashboard。
- 在左側選單選擇「Turnstile」。
- 點擊「新增站點」並輸入網站名稱。
- 系統會自動生成 Site Key 與 Secret Key。
- 保存好 Secret Key,後端驗證時需要使用。
4. Turnstile 前端整合教學
基本 HTML 範例
html
<!DOCTYPE html>
<html lang="zh-TW">
<head>
<meta charset="UTF-8" />
<title>Turnstile 範例</title>
<script src="https://challenges.cloudflare.com/turnstile/v0/api.js" async defer></script>
</head>
<body>
<form action="/verify" method="POST">
<div class="cf-turnstile" data-sitekey="YOUR_SITE_KEY"></div>
<button type="submit">提交</button>
</form>
</body>
</html>
重要屬性說明
data-sitekey
:必填,替換成你申請的 Site Key。data-theme
:可選,預設為 auto,可設定為 light 或 dark。data-size
:可選,normal 或 compact,適合行動裝置。
5. Turnstile 後端驗證教學
當用戶提交表單後,會帶回一個 Token,後端需將此 Token 與 Secret Key 一起送到 Cloudflare 驗證。
Node.js 範例
javascript
const axios = require('axios');
async function verifyTurnstile(token) {
try {
const response = await axios.post(
'https://challenges.cloudflare.com/turnstile/v0/siteverify',
new URLSearchParams({
secret: 'YOUR_SECRET_KEY',
response: token
}),
{
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
}
);
return response.data.success;
} catch (error) {
console.error('驗證失敗:', error);
return false;
}
}
PHP 範例
php
<?php
$token = $_POST['cf-turnstile-response'];
$secret = 'YOUR_SECRET_KEY';$url = 'https://challenges.cloudflare.com/turnstile/v0/siteverify';
$data = http_build_query(['secret' => $secret, 'response' => $token]);
$options = [
'http' => [
'header' => "Content-type: application/x-www-form-urlencoded\r\n",
'method' => 'POST',
'content' => $data,
],
];
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
$response = json_decode($result);
if ($response->success) {
echo "驗證成功";
} else {
echo "驗證失敗";
}
?>
6. 進階設定與客製化
- 動態載入 Turnstile
可在用戶互動後才載入驗證元件,減少初始載入時間。 - 自訂回調函數
使用data-callback
屬性接收驗證成功的 Token,進行前端額外處理。 - 多語言支援
Turnstile 會依據瀏覽器語言自動切換介面文字。 - 樣式調整
透過 CSS 變數自訂主題色彩與圓角。
7. 常見問題與疑難排解
- 驗證元件不顯示
確認 Site Key 是否正確且網域已加入 Cloudflare 控制台。 - 後端驗證失敗
檢查 Secret Key 是否正確,並確保 POST 請求格式符合要求。 - 行動裝置顯示異常
使用data-size="compact"
並調整容器寬度。 - 跨域問題
確認網站與 Turnstile 服務均使用 HTTPS。
8. 安全性與隱私保護
Cloudflare Turnstile 不會使用 cookie 追蹤用戶,也不會將資料分享給第三方,完全符合 GDPR、CCPA 等隱私保護法規。它使用一次性 Token 進行驗證,避免重放攻擊。
9. 實戰案例分享
- 電商網站
某電商平台在導入 Turnstile 後,表單提交成功率提升 20%,同時機器人攻擊減少 80%。 - 論壇社群
某論壇使用 Turnstile 取代傳統 CAPTCHA,降低用戶流失率,並減少客服因驗證問題的投訴。
10.Wordpress 安裝 Cloudflare Turnstile
安裝 Simple Cloudflare Turnstile 外掛
- 登入 WordPress 網站控制台以後,請到外掛/安裝外掛,關鍵字請輸入:Simple Cloudflare Turnstile,找到後點擊立即安裝。
- 安裝完成後進入「設定」>「Cloudflare Turnstile」。
- 輸入剛剛的兩組 Site Key 與 Secret Key 金鑰之後,測試 API 回應是否成功。
- 確認成功後,按照需要的選項勾選啟用。
總結
Cloudflare Turnstile 以其無驗證碼設計、隱私優先、免費且易用的特點,迅速成為開發者替代傳統 CAPTCHA 的首選。本文詳細介紹了 Turnstile 的技術原理、前後端整合步驟、進階設定與常見問題解決方案,幫助你快速掌握並應用這項技術,提升網站安全與用戶體驗。