Migrasi dari GeeTest ke CaptchaLa
Harga mandiri, dokumentasi mengutamakan bahasa Inggris, dan token tunggal alih-alih empat field tersembunyi. Beralih dalam kurang dari 10 menit.
Seperti apa perubahan kodenya
<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' })Langkah migrasi
- 1
Daftar & ambil App Key + Secret Anda
Buat akun CaptchaLa gratis — tanpa panggilan sales, tanpa formulir kontak. Tambahkan situs, salin App Key (publik) dan App Secret (sisi server).
- 2
Hapus JS inisialisasi GeeTest
Hapus pemanggilan initGeetest4 dan callback onSuccess-nya. Buang empat input tersembunyi (lot_number, captcha_output, pass_token, gen_time) yang Anda isi.
- 3
Tambahkan tag widget CaptchaLa
Ganti seluruh blok GeeTest dengan div + script kami. Tidak perlu konfigurasi JS — widget menginisialisasi diri dari data-app-key.
- 4
Sederhanakan verifikasi server
Ganti verifikasi GeeTest (dengan komputasi HMAC sign_token, body empat field, dan pemeriksaan string result) dengan satu POST JSON ke apiv1.captcha.la/v1/validate dan satu flag valid (data.valid).
- 5
Luncurkan secara bertahap
Beralih satu formulir dalam satu waktu. Amati konversi dan tingkat challenge. Tidak ada minimum atau kontrak, jadi peluncuran bertahap gratis.
Pertanyaan umum
Apakah CaptchaLa bekerja sama baiknya di Tiongkok daratan?
Ya. Kami mengoperasikan endpoint native di dalam Tiongkok daratan — verifikasi latensi rendah yang sama seperti yang didapat pengguna nyata di tempat lain. Tanpa SDK berbeda, tanpa penagihan terpisah.
Bagaimana dengan UX slider GeeTest yang sudah biasa dipakai tim saya?
CaptchaLa menyertakan slider sebagai salah satu jenis challenge dalam sistem adaptif — itu bukan default, tetapi tersedia. Kebanyakan tim mendapati default-nya (tak terlihat untuk risiko rendah + klik untuk risiko lebih tinggi) berkonversi lebih baik daripada slider-first.
Apakah ada perbedaan sensitivitas skor risiko?
Model risiko GeeTest disetel untuk pola lalu lintas APAC. Milik CaptchaLa bersifat global. Jika lalu lintas Anda dominan APAC, harapkan perilaku yang sebanding. Jika di luar APAC, Anda mungkin melihat penurunan signifikan pada false positive.