Panduan migrasi

Migrasi dari reCAPTCHA ke CaptchaLa

Pengganti drop-in dalam kurang dari 10 menit. Pertahankan formulir Anda, cukup tukar penyedia verifikasinya. Bekerja dengan HTML murni, WordPress, Flarum, dan backend apa pun.

GreCAPTCHACurrent setup~10 minCaptchaLaDrop-in target

Seperti apa perubahan kodenya

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' })

Langkah migrasi

  1. 1

    Daftar & ambil App Key + Secret Anda

    Buat akun CaptchaLa gratis, tambahkan situs, lalu salin App Key (publik) dan App Secret (sisi server). Tanpa kartu kredit.

  2. 2

    Tukar tag widget di formulir Anda

    Ganti div dan script src reCAPTCHA dengan padanan CaptchaLa. Class tag berubah dari g-recaptcha menjadi captchala, data-sitekey menjadi data-app-key, dan URL script mengarah ke CDN kami.

  3. 3

    Perbarui nama field pengiriman formulir

    reCAPTCHA menyisipkan field tersembunyi bernama g-recaptcha-response. CaptchaLa memakai captchala-token. Jika handler formulir Anda membaca field berdasarkan nama, ganti namanya; jika tidak, input tersembunyi mengalir otomatis.

  4. 4

    Perbarui verifikasi sisi server

    Arahkan permintaan verifikasi ke apiv1.captcha.la/v1/validate dengan kredensial app di header (X-App-Key / X-App-Secret) dan pass_token dalam body JSON. Bentuk respons mengembalikan flag valid yang sama (data.valid) seperti reCAPTCHA, sehingga kode percabangan Anda tetap utuh.

  5. 5

    Luncurkan secara bertahap

    Kebanyakan tim merilis ke satu formulir dulu (biasanya yang lalu lintasnya paling rendah — pendaftaran newsletter atau kontak), mengamati konversi dan tingkat challenge selama beberapa jam, lalu memperluasnya. Tidak ada minimum dan tidak ada kontrak, jadi canary gratis.

Pertanyaan umum

Apakah saya harus memigrasi semua formulir sekaligus?

Tidak. Kedua sistem dapat berdampingan di situs yang sama — keduanya tidak berbagi state atau cookie. Migrasikan satu formulir dalam satu waktu.

Bagaimana dengan skor risiko reCAPTCHA Enterprise? Apakah skor bisa ditransfer?

Skor tidak bisa ditransfer (skor itu internal vendor), tetapi CaptchaLa mengembalikan skor risikonya sendiri dalam respons verifikasi. Rentang angka dan logika keputusannya terdokumentasi; tim biasanya memetakan ambang skor mereka yang ada (mis. 0.5) ke milik kami dalam waktu satu jam.

Apakah Google Site Verification atau integrasi Google lain saya akan rusak?

Tidak. reCAPTCHA terpisah dari Search Console / Site Verification / Analytics. Menghapus tag reCAPTCHA tidak berdampak pada layanan Google lainnya.

Apakah ada skrip migrasi untuk situs dengan banyak tag reCAPTCHA tertanam?

Kami tidak menyediakannya (find-and-replace cukup satu regex per repo, dan templating setiap basis kode berbeda). Cuplikan shell 10 baris yang dipakai kebanyakan tim ada di dokumentasi.