Hướng dẫn chuyển đổi

Chuyển từ Turnstile sang CaptchaLa

Thay thế trực tiếp trong chưa đến 10 phút. Giữ nguyên biểu mẫu, bỏ phụ thuộc vào Cloudflare, có thêm thử thách dự phòng và node tại Trung Quốc đại lục.

TTurnstileCurrent setup~10 minCaptchaLaDrop-in target

Thay đổi mã trông như thế nào

Before — Turnstile
<div class="cf-turnstile" data-sitekey="YOUR_SITE_KEY"></div>
<script src="https://challenges.cloudflare.com/turnstile/v0/api.js" async defer></script>
After — CaptchaLa
<button id="login-btn">Sign in</button>
<script src="https://cdn.captcha-cdn.net/captchala-loader.js"></script>
<script>
  loadCaptchala(() => Captchala.init({ appKey: 'YOUR_APP_KEY', action: 'login' })
    .onSuccess(res => onToken(res.token))
    .bindTo('#login-btn'));
</script>
Before — Turnstile server verify (Node)
const res = await fetch('https://challenges.cloudflare.com/turnstile/v0/siteverify', {
  method: 'POST',
  headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
  body: new URLSearchParams({
    secret: process.env.TURNSTILE_SECRET,
    response: req.body['cf-turnstile-response'],
  }),
})
const data = await res.json()
if (!data.success) return res.status(400).json({ error: 'bot' })
After — CaptchaLa server verify (Node)
const res = await fetch('https://apiv1.captcha.la/v1/validate', {
  method: 'POST',
  headers: {
    'X-App-Key': process.env.CAPTCHALA_APP_KEY,
    'X-App-Secret': process.env.CAPTCHALA_APP_SECRET,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ pass_token: req.body['captchala-token'] }),
})
const { data } = await res.json()
if (!data || !data.valid) return res.status(400).json({ error: 'bot' })

Các bước chuyển đổi

  1. 1

    Đăng ký & lấy App Key + Secret

    Tạo tài khoản CaptchaLa miễn phí, thêm một site, rồi sao chép App Key (công khai) và App Secret (phía máy chủ). Không cần tài khoản Cloudflare.

  2. 2

    Đổi thẻ widget

    Thay cf-turnstile bằng captchala và data-sitekey bằng data-app-key. Đổi script src sang CDN của chúng tôi. Hình thức widget (một div placeholder + một thẻ script) vẫn như cũ.

  3. 3

    Cập nhật tên trường ẩn

    Turnstile chèn cf-turnstile-response; CaptchaLa chèn captchala-token. Phần lớn trình xử lý biểu mẫu không đọc trường theo tên, nhưng nếu của bạn có, hãy đổi tên hằng số ở một chỗ.

  4. 4

    Cập nhật lệnh gọi xác thực máy chủ

    Đổi endpoint thành apiv1.captcha.la/v1/validate. Chúng tôi nhận JSON (Turnstile dùng form-urlencoded), nên hãy cập nhật Content-Type và hình thức body. Phản hồi vẫn trả về cờ valid (data.valid) cho mã rẽ nhánh của bạn.

  5. 5

    Triển khai dần dần

    Giữ Turnstile trên phần lớn biểu mẫu, đưa CaptchaLa vào một biểu mẫu lưu lượng thấp trước. Theo dõi tỷ lệ chuyển đổi và tỷ lệ thử thách trong một ngày. Mở rộng khi đã hài lòng — không có mức tối thiểu, không hợp đồng.

Câu hỏi thường gặp

Tôi có thể giữ CDN Cloudflare mà vẫn dùng CaptchaLa không?

Có. CaptchaLa độc lập với mọi CDN — phần lớn khách hàng của chúng tôi giữ Cloudflare làm CDN và dùng CaptchaLa để xác thực. Hai lớp này không xung đột.

Các quy tắc phát hiện bot của Cloudflare có còn áp dụng không?

Có — đó là các tính năng Cloudflare WAF / Bot Management, tách biệt với Turnstile. Gỡ widget Turnstile không ảnh hưởng đến cấu hình zone Cloudflare của bạn.

Nếu tôi đang dùng Turnstile qua Cloudflare Workers thì sao?

Việc chuyển đổi phía Worker cũng tương tự. Thay lệnh fetch Turnstile bằng lệnh fetch CaptchaLa. Chúng tôi có đoạn mã trong tài liệu tương thích với runtime của Workers.