Caputchin
Panduan migrasi

Migrasi dari reCAPTCHA

Caputchin memakai model dua-bagian yang sama dengan reCAPTCHA, sebuah widget di halaman yang menghasilkan token, dan pemeriksaan sisi-server yang memastikannya, jadi migrasi sebagian besar adalah tukar mekanis, bukan penulisan-ulang. Pertukaran server khususnya mencerminkan bentuk siteverify reCAPTCHA dengan sengaja. Panduan ini memberi sebelum-dan-sesudah untuk tiap potongan.

Jika kamu belum membuat akun Caputchin dan kunci situs, lakukan buat akunmu dulu; kamu akan butuh public key (cpt_pub_...) untuk halaman dan secret (cpt_sec_...) untuk backend-mu, pemisahan yang sama dengan site key dan secret key reCAPTCHA.

Model mental tak berubah

Semua yang sudah kamu bangun di sekitar reCAPTCHA, render widget, kumpulkan token, POST ke servermu, verifikasi sebelum memercayai permintaan, tetap. Hanya nama dan endpoint yang berubah.

1. Tukar cuplikan klien

reCAPTCHA (v2 checkbox)Caputchin
Skrip<script src="https://www.google.com/recaptcha/api.js" async defer><script src="https://cdn.jsdelivr.net/npm/@caputchin/widget@3/dist/widget.js">
Elemen<div class="g-recaptcha" data-sitekey="..."><caputchin-widget sitekey="cpt_pub_...">
Field token di formulirg-recaptcha-response (disuntik-otomatis)caputchin-token (disuntik-otomatis)
Membaca token di JSgrecaptcha.getResponse()detail.token event pass

Seperti reCAPTCHA, widget Caputchin menyuntik-otomatis sebuah field token tersembunyi ke formulir tempat ia berada, jadi jika formulirmu sudah melakukan POST biasa, kamu hanya mengubah elemen dan nama field yang dibaca backend-mu. Lihat tambahkan widget untuk penyiapan klien lengkap dan pilihan CDN vs npm.

2. Tukar verify server

Di sinilah keduanya paling dekat, bentuk permintaan dan respons sejajar hampir field demi field.

reCAPTCHACaputchin
EndpointPOST https://www.google.com/recaptcha/api/siteverifyPOST https://caputchin.com/api/v1/siteverify
Field permintaansecret, responsesecret, response (identik)
Respons{ success, challenge_ts, hostname, "error-codes" }{ success, challenge_ts, hostname, error-codes, score? }
Aturan kepercayaanbertindak hanya jika success === truebertindak hanya jika success === true (identik)

Di kebanyakan stack satu-satunya perubahan pada kode verifikasimu adalah URL dan nilai secret. Referensi permintaan/respons penuh, termasuk kode galat, ada di verifikasi token di backend-mu; cuplikan framework ada di contoh backend.

3. Petakan skor, jika kamu memakai reCAPTCHA v3

reCAPTCHA v3 mengembalikan sebuah score (0.0 sampai 1.0) dan memintamu memilih ambang, kamu menebak seberapa manusia sebuah permintaan tampak. Caputchin tak bekerja seperti itu: success adalah lolos/gagal otoritatif, karena verifikasi sebenarnya dituntaskan (pemeriksaan proof-of-work, atau ronde game yang diturunkan-ulang di server), bukan probabilitas.

Jika kodemu punya if (data.score >= 0.5), ganti dengan if (data.success). Bidang score Caputchin ada hanya untuk ronde game dan adalah skor game (informasional, untuk papan-peringkatmu sendiri), tak pernah kemungkinan-bot, jadi jangan menggerbang akses padanya.

Apa yang jadi lebih baik dalam perpindahan

  • Tanpa pengumpulan data pengunjung. reCAPTCHA memprofilkan pengunjungmu; Caputchin tak mengumpulkan IP, User-Agent, sidik jari, atau telemetri perilaku, protokol tak punya tempat untuk menaruh pengenal pengunjung. Lihat filosofi.
  • Satu widget, bukan v2-vs-v3. Tak ada produk tak-kasatmata/skor terpisah untuk dipilih; satu elemen mencakup checkbox dan game opsional.
  • Game opsional. Alih-alih kisi-lampu-lalu-lintas, kamu bisa mengubah verifikasi menjadi game pendek yang sungguh dimainkan pengunjungmu. Lihat tambahkan game.
  • CSP ketat tetap ketat. Caputchin berjalan di bawah Content-Security-Policy yang rapat; kamu mengizinkan beberapa origin ketimbang melonggarkan kebijakanmu. Lihat bagaimana Caputchin men-sandbox game.

Hal yang sering terlewat

  • Dua key, dua rumah. Public key (cpt_pub_...) masuk ke halaman; secret (cpt_sec_...) tetap hanya di sisi-server, persis disiplin reCAPTCHA. Jangan kirim secret ke peramban.
  • Token sekali-pakai. Seperti reCAPTCHA, sebuah token terverifikasi sekali. Jangan cache atau putar-ulang ia.
  • Ubah nama field yang dibaca backend-mu. Field tersembunyinya caputchin-token, bukan g-recaptcha-response, kelewatan satu-baris yang umum.

Lihat juga

Di halaman ini