Hentikan spam formulir kontak5 menit baca
Alternatif reCAPTCHA untuk formulir website
Bandingkan alternatif reCAPTCHA untuk formulir, dari Turnstile dan hCaptcha hingga proof-of-work dan tanpa captcha sama sekali, lalu beralih dengan perubahan kecil yang aman.
Cloudflare Turnstile adalah pengganti reCAPTCHA yang paling dekat: sebagian besar tak terlihat, memakai pola site key dan secret key yang sama, dan pemeriksaan servernya memakai parameter yang sama. hCaptcha cocok untuk situs yang ingin tantangan gambar dari pihak selain Google, dan alat proof-of-work seperti ALTCHA berjalan tanpa pihak ketiga sama sekali. Untuk banyak formulir kontak, honeypot, skor konten, dan rate limit membuat captcha tidak diperlukan.
Mengapa orang beralih dari reCAPTCHA
reCAPTCHA masih berfungsi. Alasan menggantinya biasanya soal biaya bagi pengunjung dan bagi Anda. Versi 2 menampilkan teka-teki gambar ke sebagian pengunjung, yang lambat di ponsel dan sulit bagi pengguna screen reader. Versi 3 tak terlihat tetapi mengembalikan skor yang ambangnya harus Anda tentukan sendiri, tanpa tantangan sebagai cadangan. Dan reCAPTCHA kini merupakan produk Google Cloud: dokumentasi billing Google mencantumkan kuota gratis 10.000 penilaian per bulan, dengan tingkatan berbayar di atasnya.
Sebagian tim juga ingin lebih sedikit skrip pihak ketiga di halaman mereka. Apakah hal itu penting bagi kewajiban privasi Anda adalah pertanyaan untuk tinjauan hukum Anda sendiri; halaman ini hanya membandingkan cara kerja alat-alatnya.
Perbandingan alternatif
| Opsi | Yang dilihat pengunjung | Siapa yang memverifikasi | Perlu diketahui |
|---|---|---|---|
| reCAPTCHA v2 | Checkbox, kadang teka-teki gambar | Server Anda, dengan Google | Familier. Teka-tekinya adalah keluhan utama |
| reCAPTCHA v3 | Tidak ada | Server Anda, dengan Google | Mengembalikan skor dari 0.0 hingga 1.0. Anda memilih batasnya dan menangani area abu-abu |
| Cloudflare Turnstile | Biasanya tidak ada, kadang checkbox | Server Anda, dengan Cloudflare | Tanpa teka-teki gambar. Tanpa biaya untuk hingga 20 widget |
| hCaptcha | Checkbox, kadang teka-teki gambar | Server Anda, dengan hCaptcha | Bentuknya mirip reCAPTCHA v2, dari perusahaan lain. Ada paket Basic gratis, dengan paket Pro dan Enterprise berbayar |
| Friendly Captcha | Widget kecil yang memecahkan teka-teki di latar belakang | Server Anda, dengan Friendly Captcha | Proof of work, bukan sinyal pelacakan. Gratis untuk situs kecil non-komersial, paket berbayar untuk yang lain |
| ALTCHA | Widget kecil yang memecahkan teka-teki di latar belakang | Hanya server Anda sendiri | Open source dan di-host sendiri, jadi tanpa pihak ketiga. Anda yang menjalankan dan memeliharanya |
| No captcha | Tidak ada | Server Anda | Honeypot, waktu bertanda tangan, skor konten, dan rate limit. Menghentikan sebagian besar bot, tidak semua |
Setiap opsi kecuali yang terakhir tetap bergantung pada pemeriksaan sisi server. Widget saja tidak menghentikan apa pun, karena bot bisa mengirim ke endpoint Anda tanpa memuat halaman.
Apa yang diminta setiap opsi dari orang
Nilai setiap opsi dari sudut pandang pengunjung yang paling kesulitan dengannya. Teka-teki gambar lambat di ponsel dan sulit atau mustahil bagi orang yang penglihatannya terbatas; alternatif audio membantu sebagian orang dan membuat frustrasi yang lain. Pemeriksaan tak terlihat, seperti mode biasa Turnstile, reCAPTCHA v3, dan widget proof-of-work, tidak meminta apa-apa dari kebanyakan pengunjung, tetapi tetap bisa gagal bagi orang yang memakai browser berfokus privasi, jaringan ketat, atau perangkat lama. Saat itu terjadi, orang tersebut butuh jalan keluar: checkbox yang terlihat, pesan yang jelas, atau alamat email untuk menulis sebagai gantinya. Formulir yang gagal tanpa kabar kehilangan justru pesan-pesan yang tidak pernah Anda ketahui.
Pilih dengan dua pertanyaan
- Pertama, tanyakan apakah bot lolos dari pemeriksaan tak terlihat. Jika tidak, tetap tanpa captcha dengan honeypot, skor, dan rate limit.
- Jika ya, tanyakan apakah Anda bisa menjalankan kode server. Jika bisa, pilih widget seperti Turnstile, hCaptcha, atau ALTCHA dan verifikasi di server Anda.
- Tanpa server, kirim formulir ke backend yang memverifikasi key Turnstile Anda, atau pakai pemeriksaan terkelola yang tidak butuh key.
Beralih dari reCAPTCHA ke Turnstile
Keduanya cukup mirip sehingga peralihannya hanya beberapa baris di setiap sisi. Buat widget Turnstile di dashboard Cloudflare untuk hostname yang sama, lalu ubah markup dan pemeriksaan server bersamaan.
| Bagian | reCAPTCHA v2 | Turnstile |
|---|---|---|
| Skrip | https://www.google.com/recaptcha/api.js | https://challenges.cloudflare.com/turnstile/v0/api.js |
| Elemen | <div class="g-recaptcha" data-sitekey> | <div class="cf-turnstile" data-sitekey> |
| Field token | g-recaptcha-response | cf-turnstile-response |
| URL verifikasi | https://www.google.com/recaptcha/api/siteverify | https://challenges.cloudflare.com/turnstile/v0/siteverify |
| Parameter verifikasi | secret, response, remoteip | secret, response, remoteip, idempotency_key |
<form action="/api/contact" method="POST">
<input name="email" type="email" required />
<textarea name="message" required></textarea>
<div class="g-recaptcha" data-sitekey="RECAPTCHA_SITE_KEY"></div>
<button>Send</button>
</form>
<script src="https://www.google.com/recaptcha/api.js" async defer></script>const form = await request.formData();
const body = new URLSearchParams({
secret: process.env.RECAPTCHA_SECRET_KEY!,
response: String(form.get("g-recaptcha-response") ?? ""),
});
const check = await fetch("https://www.google.com/recaptcha/api/siteverify", { method: "POST", body });
const { success } = (await check.json()) as { success: boolean };- Ini berlaku untuk key reCAPTCHA klasik, yang diverifikasi di
siteverify. Key yang dibuat di Google Cloud diperiksa lewat API assessment reCAPTCHA Enterprise; sisi Turnstile-nya tetap sama. - Jika Anda memakai v3, hapus ambang skor Anda. Turnstile menjawab lolos atau gagal; periksa
actiondi jawabannya sebagai gantinya. - Perbarui Content Security Policy Anda: izinkan
https://challenges.cloudflare.comdiscript-srcdanframe-src, dan hapus entri Google begitu tidak ada lagi yang memakainya. - Kirim perubahan markup dan server dalam satu deploy. Halaman dengan widget baru yang mengirim ke server yang masih mengharapkan
g-recaptcha-responseakan menggagalkan setiap kiriman.
Mengganti reCAPTCHA dengan Ikiform
Jika formulir Anda mengirim ke Ikiform, hapus widget reCAPTCHA sepenuhnya. Ikiform tidak memverifikasi token reCAPTCHA atau hCaptcha. Nilai g-recaptcha-response yang tersisa akan masuk sebagai field tambahan, atau gagal dengan 422 validation_failed sebagai field tak dikenal jika Anda mendefinisikan field formulir. Lalu pilih penggantinya:
- Tidak ada tambahan. Honeypot, skor konten, dan rate limit berjalan di setiap formulir. Banyak formulir kontak tidak butuh lebih dari itu.
- Spam check diatur ke Ikiform. Cloudflare Turnstile, dijalankan oleh Ikiform, tanpa akun atau key. Kiriman HTML biasa mendapat halaman pemeriksaan singkat; kode
fetchmemanggilchallenge()dari@ikiform/sdk. - Key Turnstile Anda sendiri. Pertahankan widget Anda sendiri di halaman, tempel key-nya ke pengaturan formulir, dan Ikiform memverifikasi token-nya.
<form action="https://ikiform.com/f/frm_xxxxxxxxxxxxxxxx" method="POST">
<input name="email" type="email" required />
<textarea name="message" required></textarea>
<input name="_gotcha" type="text" tabindex="-1" autocomplete="off" hidden />
<button>Send</button>
</form>Formulir itu sama sekali tidak punya widget. Dengan Spam check diatur ke Ikiform, pemeriksaan manusia terjadi di ikiform.com setelah kiriman, jadi halaman Anda tidak memuat skrip captcha apa pun. Dokumentasi spam membahas setiap mode.
Pastikan berfungsi
- Kirim formulir setelah peralihan. Kiriman diterima dan Anda paling banyak hanya melihat checkbox.
- Kirim ke endpoint dengan curl tanpa token. Kiriman ditolak, yang membuktikan server memeriksa token baru.
- Cari
g-recaptchadanrecaptcha/api.jsdi halaman-halaman Anda. Tidak ada yang tersisa. - Buka Submissions di dashboard. Kiriman baru ada di sana dengan setiap field yang Anda kirim.
- Tidak ada yang masuk? Ubah filter status di dashboard ke Spam. Spam mendapat jawaban sukses yang sama dengan kiriman asli.
Hal yang sering menjebak
- Pengaturan pembuat situs. Pembuat situs dengan pengaturan reCAPTCHA bawaan mungkin mewajibkan elemen itu di setiap formulir selama pengaturannya aktif. Matikan pengaturannya sebelum menghapus elemen.
- Halaman yang di-cache. Pengunjung dengan halaman lama yang di-cache masih mengirim
g-recaptcha-responseuntuk sementara setelah Anda deploy. Perkirakan beberapa kegagalan, atau terima kedua token selama sehari. - Skor v3 di laporan. Jika dashboard atau peringatan membaca skor reCAPTCHA, semuanya akan diam setelah peralihan. Perbarui.
Pertanyaan
Untuk sebagian besar formulir, Cloudflare Turnstile: biasanya tak terlihat, tanpa biaya di skala kecil, dan memverifikasi dengan parameter secret dan response yang sama. Jika Anda sama sekali tidak ingin pihak ketiga, alat proof-of-work yang di-host sendiri seperti ALTCHA bisa dipakai. Banyak formulir kontak tidak butuh captcha begitu honeypot, skor, dan rate limit sudah terpasang.
Dokumentasi billing Google mencantumkan kuota gratis 10.000 penilaian per bulan, dengan tingkatan berbayar di atasnya. Cek harga Google yang berlaku sebelum membuat rencana berdasarkan itu.
Tidak. Ikiform hanya memverifikasi Cloudflare Turnstile, baik pemeriksaan terkelolanya sendiri maupun key Turnstile Anda sendiri. Hapus widget captcha lain dari formulir yang mengirim ke Ikiform.
Biasanya tidak. Anda mengubah URL skrip, class elemen, nama field token, dan URL verifikasi, dan mempertahankan parameter secret dan response yang sama. Deploy perubahan halaman dan server bersamaan.
Mentok di salah satu langkah, atau ingin panduan untuk situasi Anda? Email hello@ikiform.com.