Cara Meningkatkan Skor reCAPTCHA v3: Enam Perbaikan yang Berhasil

Anda tidak bisa menetapkan skor reCAPTCHA v3. Google menetapkannya per permintaan, dan tidak ada apa pun dalam kode Anda yang mengubahnya secara langsung. Yang dapat Anda ubah adalah apa yang menjadi masukannya: bagaimana Anda menamai action, kapan Anda meminta token, seberapa banyak bagian situs Anda yang menjalankan reCAPTCHA, dan apa yang dilakukan backend Anda dengan hasilnya. Perbaiki itu semua dan distribusinya akan bergeser.
Enam perubahan, diurutkan berdasarkan seberapa besar biasanya membantu. Ukur dulu, karena separuh situs yang mengira punya masalah skor sebenarnya punya masalah ambang batas.
Apa arti score yang sebenarnya
v3 mengembalikan angka antara 0,0 dan 1,0 pada setiap verifikasi. Menurut rumusan Google: 1,0 sangat mungkin interaksi yang baik, 0,0 sangat mungkin bot. Tidak ada kotak centang dan tidak ada teka-teki, jadi angka itulah keseluruhan sinyalnya.
Dua hal mengikuti dari itu, dan keduanya penting:
- Skornya adalah per permintaan dan per action, bukan per pengguna. Pengunjung yang sama bisa mendapat score 0.9 di beranda Anda dan 0.3 di checkout.
- Ambang batas awal yang disarankan Google adalah 0.5. Itu adalah nilai bawaan yang justru perlu Anda sesuaikan, bukan target yang harus dicapai.
Jika Anda baru mengenal perbedaan v3 dengan versi checkbox, penjelasan kami tentang cara kerja reCAPTCHA membahas cara kerjanya.
Ukur sebelum Anda mengubah apa pun
Konsol admin reCAPTCHA menampilkan distribusi skor untuk situs Anda dan rincian untuk sepuluh action teratas Anda. Lihat data itu sebelum menyentuh kode. Anda sedang mencari salah satu dari tiga pola berikut:
- Semuanya di 0.9, dan Anda tetap memblokir orang sungguhan. Ambang batas atau logika backend Anda yang bermasalah, bukan skornya.
- Sebaran yang luas dengan lonjakan di ujung bawah. Itu normal. Setel ambang batasnya per action.
- Semuanya di 0.1 hingga 0.3. Ada yang salah secara struktural. Biasanya tokennya, bukan trafiknya.
Google juga memperingatkan bahwa skor di staging atau tepat setelah Anda memasang v3 berbeda dari di produksi, karena model belum memiliki riwayat untuk situs tersebut. Beri waktu seminggu dengan trafik nyata sebelum menarik kesimpulan. Untuk memeriksa satu permintaan secara terpisah, halaman uji reCAPTCHA v3 langsung mengembalikan skor mentah untuk satu pemecahan.
Perbaikan 1: beri nama action Anda, dan beri nama dengan benar
Ini adalah kemenangan tunggal terbesar, dan justru rutin dilewatkan. Google menilai setiap action secara terpisah dan menggunakan riwayat action itu sendiri sebagai konteks. Satu action generik untuk seluruh situs berarti satu riwayat campuran, dan setiap halaman mewarisi bagian terburuknya.
// One action per meaningful event. Not one for the whole site.
grecaptcha.ready(function () {
grecaptcha.execute("YOUR_SITEKEY", { action: "login" })
.then(function (token) {
document.getElementById("recaptcha-token").value = token;
});
});Aturan yang diberlakukan Google: action hanya boleh berisi karakter alfanumerik, garis miring dan garis bawah, dan tidak boleh spesifik per pengguna. Jadi checkout/payment sudah cukup, checkout_user_8842 tidak. Action yang spesifik per pengguna memecah riwayat menjadi ribuan keranjang yang tidak berisi data apa pun, yang lebih buruk daripada tidak menamai action sama sekali.
Perbaikan 2: jalankan reCAPTCHA bukan hanya di formulir
v3 menilai perilaku, dan perilaku membutuhkan lebih dari satu titik data. Jika skripnya hanya dimuat di halaman login Anda, Google melihat pengunjung yang tiba-tiba muncul di sebuah formulir lalu mengirim, dan itu persis seperti tampilan sebuah bot.
Rekomendasi Google sendiri adalah memuat v3 di seluruh situs, termasuk halaman yang tidak memiliki formulir. Anda tidak harus melakukan verifikasi di halaman-halaman itu. Cukup dengan menjalankan skripnya, model sudah punya bahan untuk diolah saat pengunjung sampai ke action yang Anda pedulikan.
Ini juga perbaikan yang tanpa sengaja dibatalkan orang. Memindahkan skripnya ke dalam kondisi yang hanya berjalan di rute checkout akan menurunkan skor Anda dalam hitungan hari.
Perbaikan 3: ambil token saat Anda mengirim, bukan saat halaman dimuat
Token reCAPTCHA v3 kedaluwarsa dua menit setelah diterbitkan. Hasilkan token di dalam ready() saat halaman dimuat, dan setiap pengunjung yang membaca formulir Anda lebih lama dari itu akan mengirimkan token mati. Bergantung pada cara backend Anda menangani kegagalan tersebut, hal itu terbaca sebagai skor buruk atau penolakan langsung.
// Solve on submit so the token is always fresh.
form.addEventListener("submit", function (e) {
e.preventDefault();
grecaptcha.execute("YOUR_SITEKEY", { action: "login" })
.then(function (token) {
tokenField.value = token;
form.submit();
});
});Formulir panjang, checkout multi-langkah, dan apa pun yang melibatkan unggahan berkas adalah tempat masalah ini paling terasa.
Perbaikan 4: verifikasi di sisi server, dan periksa action juga
Token itu tidak berarti apa-apa sampai backend Anda menukarkannya. Pertukaran itu mengembalikan skor, action, dan sebuah hostname, dan Anda seharusnya memeriksa ketiganya.
# Exchange the token for the score. Server side only.
curl -X POST https://www.google.com/recaptcha/api/siteverify \
-d secret=YOUR_SECRET_KEY \
-d response=THE_TOKEN_FROM_THE_PAGE
# {"success":true,"score":0.9,"action":"login","hostname":"example.com"}Jika Anda hanya memeriksa success, Anda sama sekali tidak menggunakan v3. success berarti tokennya berhasil diurai, bukan bahwa pengunjungnya tampak seperti manusia. Dan jika Anda tidak membandingkan action terhadap apa yang diharapkan endpoint tersebut, token yang dibuat di formulir newsletter bernilai rendah Anda akan berfungsi baik di endpoint login Anda.
Perbaikan 5: tetapkan ambang batas per action, bukan satu untuk seluruh situs
Checkout dan pendaftaran newsletter seharusnya tidak berbagi ambang batas yang sama. Setelah Anda punya data satu minggu per action, tetapkan masing-masing sesuai kondisi trafik Anda yang sebenarnya.
| Tipe action | Titik awal yang masuk akal | Apa yang harus dilakukan di bawah itu |
|---|---|---|
| Newsletter, pencarian, tampilan halaman | 0.3 | Izinkan, catat skornya |
| Masuk, komentar | 0.5 | Tambahkan faktor kedua atau kotak centang v2 |
| Checkout, reset kata sandi | 0.7 | Naik ke challenge manual |
Perhatikan bahwa tidak satu pun baris tersebut menyebut “blokir”. Memblokir secara keras pada skor rendah adalah cara penerapan v3 mengunci pelanggan sungguhan yang memakai VPN perusahaan dan browser privasi. Tingkatkan tantangannya saja.
Perbaikan 6: singkirkan penyebab umum turunnya skor
Jika semua perbaikan struktural sudah diterapkan dan score masih rendah, telusuri hal-hal berikut:
| Penyebab | Mengapa skornya rendah |
|---|---|
| Dua skrip reCAPTCHA di satu halaman | Pemuatan kedua menimpa yang pertama dan token terikat ke konteks yang salah |
| IP bersama atau datacenter | NAT kantor, VPN, dan egress cloud semuanya membawa riwayat orang lain |
| Ekstensi privasi yang agresif | Cookie dan storage yang diblokir membuat model tidak punya apa pun untuk dibaca |
| Formulir dalam iframe atau tersemat | Konteks lintas-origin melemahkan sinyalnya |
| Sitekey dan domain tidak cocok | Periksa hostname bidang dalam respons verify |
Satu hal yang tidak di daftar ini: menyembunyikan badge. Itu urusan CSS dan atribusi, dan tidak berpengaruh pada skor. Kami sudah membahas cara yang sesuai aturan untuk melakukannya di menyembunyikan badge reCAPTCHA v3.
Masalah yang tidak bisa diselesaikan dengan penyetelan
Jika trafiknya otomatis, skornya rendah karena memang itulah yang dirancang untuk dideteksi oleh v3. Sebanyak apa pun penamaan action tidak akan memperbaiki browser headless. Untuk menguji situs Anda sendiri, atau untuk otomatisasi yang memang Anda berwenang menjalankannya, Anda mendapatkan token dari sebuah pemecah alih-alih dari halaman:
# pip install capskip
from capskip import CapSkip
solver = CapSkip(host="127.0.0.1", port=8080)
result = solver.recaptcha(
sitekey="YOUR_SITEKEY",
url="https://example.com/page-with-recaptcha",
version="v3",
action="login", # must match the page
)
print(result["code"]) # token, inject it and submitPerhatikan action lagi. Hal ini sama pentingnya di sisi ini seperti di sisi Anda, dengan alasan yang persis sama: backend membandingkannya.
Yang tidak bisa Anda lakukan adalah menentukan skor. Tidak ada parameter skor minimum pada permintaan pemecahan. Angka itu adalah keputusan Google, dibuat saat token Anda diverifikasi, jadi sebuah pemecah hanya memberi Anda token dan tidak lebih.
Pertanyaan yang sering diajukan
Mengapa skor reCAPTCHA v3 saya selalu 0.1?
Nilai 0,1 yang rata di seluruh trafik hampir tidak pernah merupakan masalah perilaku. Periksa apakah ada tag skrip ganda, token basi yang diterbitkan lebih dari dua menit sebelum pengiriman, atau sitekey yang terdaftar pada domain yang berbeda. hostname tersebut dalam respons verify langsung menyelesaikan yang terakhir.
Berapa lama waktu yang dibutuhkan hingga perubahan skor terlihat?
Beberapa hari. Model ini menggunakan riwayat per situs dan per action, jadi action baru dimulai tanpa konteks dan menjadi stabil seiring trafik terkumpul. Jangan menilai sebuah perubahan hanya dari data satu sore.
Apakah ambang skor yang lebih tinggi membuat situs saya lebih aman?
Hanya sampai batas tertentu, dan itu memakan korban pengguna sungguhan. Menaikkan setiap endpoint ke 0,9 akan memblokir orang-orang di IP bersama dan browser privasi jauh sebelum menghentikan penyerang yang gigih. Tetapkan ambang per action dan tingkatkan tantangannya alih-alih menolak mentah-mentah.
Bisakah saya melihat skornya tanpa menulis kode backend?
Ya. Konsol admin menampilkan distribusi untuk situs Anda sendiri, dan halaman demo v3 kami mengembalikan skor mentah untuk satu pemecahan sehingga Anda dapat membandingkan satu permintaan dengan apa yang dilaporkan endpoint Anda sendiri.
Ringkasan
Beri nama satu action per peristiwa, muat v3 di seluruh situs, buat token pada saat pengiriman, verifikasi di sisi server dan bandingkan action-nya, lalu tetapkan ambang per endpoint alih-alih satu batas global. Periksa konsol admin seminggu kemudian, bukan pada hari yang sama.
Untuk mekanisme scoring v3 dan opsi yang menyertainya, lihat pemecahan reCAPTCHA v3, dan Google sendiri memiliki Dokumentasi v3 adalah rujukan resmi untuk ambang batas dan penamaan action. Jika Anda menguji formulir Anda sendiri terhadap skor rendah, CapSkip adalah pemecah captcha yang berjalan secara lokal, sehingga Anda dapat menghasilkan token sepanjang hari tanpa tagihan per pemecahan.
