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

Chuyển từ reCAPTCHA sang CaptchaLa

Thay thế trực tiếp trong chưa đến 10 phút. Giữ nguyên biểu mẫu, chỉ đổi nhà cung cấp xác thực. Hoạt động với HTML thuần, WordPress, Flarum và mọi backend.

GreCAPTCHACurrent setup~10 minCaptchaLaDrop-in target

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

Before — reCAPTCHA v2
<div class="g-recaptcha" data-sitekey="YOUR_SITE_KEY"></div>
<script src="https://www.google.com/recaptcha/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 — reCAPTCHA server verify (Node)
const res = await fetch('https://www.google.com/recaptcha/api/siteverify', {
  method: 'POST',
  headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
  body: new URLSearchParams({
    secret: process.env.RECAPTCHA_SECRET,
    response: req.body['g-recaptcha-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 thẻ tín dụng.

  2. 2

    Thay thẻ widget trong biểu mẫu

    Thay div và script src của reCAPTCHA bằng phiên bản tương đương của CaptchaLa. Class của thẻ đổi từ g-recaptcha thành captchala, data-sitekey thành data-app-key, và URL script trỏ tới CDN của chúng tôi.

  3. 3

    Cập nhật tên trường gửi biểu mẫu

    reCAPTCHA chèn một trường ẩn tên g-recaptcha-response. CaptchaLa dùng captchala-token. Nếu trình xử lý biểu mẫu của bạn đọc trường theo tên, hãy đổi tên hằng số; nếu không, input ẩn vẫn tự động đi qua.

  4. 4

    Cập nhật xác thực phía máy chủ

    Trỏ yêu cầu xác thực tới apiv1.captcha.la/v1/validate với thông tin xác thực ứng dụng trong header (X-App-Key / X-App-Secret) và pass_token trong body JSON. Phản hồi trả về cùng cờ valid (data.valid) như reCAPTCHA, nên mã rẽ nhánh hiện có vẫn giữ nguyên.

  5. 5

    Triển khai dần dần

    Hầu hết các đội triển khai trên một biểu mẫu (thường là biểu mẫu lưu lượng thấp nhất — đăng ký nhận tin hoặc liên hệ) trước, theo dõi tỷ lệ chuyển đổi và tỷ lệ thử thách vài giờ, rồi mới mở rộng. Không có mức tối thiểu, không hợp đồng, nên việc canary là miễn phí.

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

Tôi có cần chuyển tất cả biểu mẫu cùng lúc không?

Không. Hai hệ thống cùng tồn tại trên cùng một site — chúng không chia sẻ trạng thái hay cookie. Hãy chuyển từng biểu mẫu một.

Còn điểm rủi ro của reCAPTCHA Enterprise thì sao? Điểm có chuyển sang được không?

Điểm không chuyển được (chúng là dữ liệu nội bộ của nhà cung cấp), nhưng CaptchaLa trả về điểm rủi ro riêng trong phản hồi xác thực. Khoảng giá trị số và logic quyết định đều được ghi chép; các đội thường ánh xạ ngưỡng điểm hiện có (ví dụ 0.5) sang của chúng tôi trong vòng một giờ.

Google Site Verification hay các tích hợp Google khác của tôi có hỏng không?

Không. reCAPTCHA tách biệt với Search Console / Site Verification / Analytics. Gỡ thẻ reCAPTCHA không ảnh hưởng đến bất kỳ dịch vụ Google nào khác.

Có script chuyển đổi cho các site có nhiều thẻ reCAPTCHA nhúng không?

Chúng tôi không cung cấp (việc tìm-thay là một regex cho mỗi repo, và cách dựng template của mỗi codebase lại khác nhau). Đoạn shell 10 dòng mà phần lớn các đội dùng có trong tài liệu.