Chuyển từ GeeTest sang CaptchaLa
Định giá tự phục vụ, tài liệu ưu tiên tiếng Anh, và một token duy nhất thay vì bốn trường ẩn. Chuyển đổi trong chưa đến 10 phút.
Thay đổi mã trông như thế nào
<div id="captcha"></div>
<script src="https://static.geetest.com/v4/gt4.js"></script>
<script>
initGeetest4({ captchaId: 'YOUR_CAPTCHA_ID' }, function(captcha) {
captcha.appendTo('#captcha')
captcha.onSuccess(function() {
var result = captcha.getValidate()
document.getElementById('lot_number').value = result.lot_number
document.getElementById('captcha_output').value = result.captcha_output
document.getElementById('pass_token').value = result.pass_token
document.getElementById('gen_time').value = result.gen_time
})
})
</script><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>const sign = crypto.createHmac('sha256', process.env.GEETEST_KEY)
.update(req.body.lot_number).digest('hex')
const res = await fetch(`https://gcaptcha4.geetest.com/validate?captcha_id=${process.env.GEETEST_ID}`, {
method: 'POST',
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
body: new URLSearchParams({
lot_number: req.body.lot_number,
captcha_output: req.body.captcha_output,
pass_token: req.body.pass_token,
gen_time: req.body.gen_time,
sign_token: sign,
}),
})
const data = await res.json()
if (data.result !== 'success') return res.status(400).json({ error: 'bot' })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
Đăng ký & lấy App Key + Secret
Tạo tài khoản CaptchaLa miễn phí — không cần gọi bán hàng, không cần biểu mẫu liên hệ. Thêm một site, sao chép App Key (công khai) và App Secret (phía máy chủ).
- 2
Gỡ phần JS khởi tạo GeeTest
Xóa lệnh gọi initGeetest4 và callback onSuccess của nó. Bỏ bốn input ẩn (lot_number, captcha_output, pass_token, gen_time) mà bạn từng điền.
- 3
Thêm thẻ widget CaptchaLa
Thay toàn bộ khối GeeTest bằng div + script của chúng tôi. Không cần cấu hình JS — widget tự khởi tạo từ data-app-key.
- 4
Đơn giản hóa xác thực máy chủ
Thay phần xác thực GeeTest (với tính toán HMAC sign_token, body bốn trường, và kiểm tra chuỗi result) bằng một lệnh POST JSON duy nhất tới apiv1.captcha.la/v1/validate và một cờ valid (data.valid).
- 5
Triển khai dần dần
Chuyển từng biểu mẫu một. Theo dõi tỷ lệ chuyển đổi và tỷ lệ thử thách. Không có mức tối thiểu hay hợp đồng, nên triển khai theo giai đoạn là miễn phí.
Câu hỏi thường gặp
CaptchaLa có hoạt động tốt tại Trung Quốc đại lục không?
Có. Chúng tôi vận hành các endpoint bản địa bên trong Trung Quốc đại lục — cùng trải nghiệm xác thực độ trễ thấp mà người dùng thật nhận được ở nơi khác. Không cần SDK khác, không có hóa đơn riêng.
Còn trải nghiệm thanh trượt của GeeTest mà đội tôi đã quen thì sao?
CaptchaLa có thanh trượt là một trong các loại thử thách trong hệ thống thích ứng — không phải mặc định, nhưng vẫn dùng được. Phần lớn các đội thấy mặc định (ẩn với rủi ro thấp + nhấp với rủi ro cao hơn) chuyển đổi tốt hơn so với ưu tiên thanh trượt.
Có khác biệt nào về độ nhạy chấm điểm rủi ro không?
Mô hình rủi ro của GeeTest được tinh chỉnh cho mẫu lưu lượng APAC. Của CaptchaLa thì toàn cầu. Nếu lưu lượng của bạn nặng về APAC, hãy kỳ vọng hành vi tương đương. Nếu ở ngoài APAC, bạn có thể thấy false positive giảm đáng kể.