Bagaimana cara Google reCAPTCHA v2 bekerja di belakang layar?

303

Posting ini merujuk ke Google ReCaptcha v2 (bukan versi terbaru)

Baru-baru ini Google memperkenalkan sistem verifikasi "captcha" yang disederhanakan ( video ) yang memungkinkan pengguna untuk melewatkan "captcha" hanya dengan mengkliknya.

Tetapi bagaimana bisa membedakan bot dari seseorang hanya dengan satu klik?

Sesuai jawaban ini , (dengan asumsi implementasi yang sama), pada awalnya "recaptcha" menghasilkan kunci tersembunyi dan menempelkannya ke elemen input tersembunyi dan juga dengan malas membuat kotak centang (bukan kotak centang yang sebenarnya inputtetapi a div) dengan kunci yang sama yang ketika diklik, mengirimkan permintaan asinkron (XHR) ke server backend Google untuk menandainya sebagai kunci verifikasi yang valid (yaitu kunci yang harus divalidasi ketika formulir dikirimkan).

Tetapi mengapa bot tidak dapat mengotomatiskan klik tersebut (setidaknya, bot berbasis browser)?

Bagaimana ini bisa berhasil?

everlasto
sumber
1
Mungkin mirip dengan cara mereka mengirim captcha sederhana ke manusia, dan captcha keras ke bot
mukunda
1
Cara saya memahaminya adalah - masih ada captcha, tetapi kecuali jika Anda membuat permintaan yang mencurigakan - Anda tidak akan pernah harus menyelesaikannya.
Kelm
@Louie Apa yang "dicuri"? Seseorang mengajukan pertanyaan yang sama, dan menautkan pos yang sama (dan hanya) —tetapi kata itu sedikit berbeda, dan tidak ada jawaban yang sama. Terlebih lagi, pertanyaan asli Quora telah diposting pada 3 Desember, sehari sebelum pertanyaan ini. Apa yang tampaknya menjadi masalah?
wchargin
10
@CiroSantilli 六四 事件 法轮功 apa-apaan ini? tautannya hilang
TechLife
14
@ TechLife benar! Tampaknya telah pindah ke github.com/neuroradiology/InsideReCaptcha ? Pengingat untuk diri sendiri: selalu garpu barang.
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

Jawaban:

200

Ini spekulasi, tetapi berdasarkan referensi Google ke "mesin analisis risiko" yang mereka gunakan ( http://googleonlinesecurity.blogspot.com/2014/12/are-you-robot-introducing-no-captcha.html )

Saya akan berasumsi itu terlihat pada bagaimana Anda berperilaku sebelum mengklik, bagaimana kursor Anda bergerak menuju check (jalur organik / akselerasi), bagian mana dari kotak centang yang diklik (tempat acak, atau mati di tengah setiap kali), browser sidik jari, cookie Google & konten, klik riwayat lokasi terkait dengan sidik jari atau akun Anda jika itu mendeteksi dll.

Cukup sulit untuk memalsukan perilaku "organik" sedemikian rupa sehingga menipu mesin pendeteksi pola yang terus-menerus belajar. Dalam kasus di mana itu tidak yakin, itu masih meminta Anda untuk mencocokkan string CAPTCHA yang sebenarnya.

AgmLauncher
sumber
73
Itu kelihatannya benar dan harus menjelaskan mengapa saya selalu harus mengetikkan string pada PSVita saya dengan tongkat. Itu tidak bergerak seperti tikus normal.
Domino
3
Saya ingin tahu bagaimana Google akan bereaksi pada sejumlah besar perilaku organik yang direkam.
Markus Malkusch
16
Gerakan mouse jelas tidak berkontribusi terhadap hal ini. Tempatkan kursor tepat di tempat kotak centang akan muncul. Arahkan ke situs tanpa memindahkan kursor Anda. Klik kotak centang dan itu akan berlalu.
Derek朕會功夫
3
@ Serek, saya tidak berpikir itu bukti apa pun. Cookie, IP, dan banyak faktor lain mungkin berkontribusi untuk membiarkan Anda lulus sebelum mereka kembali ke gerakan mouse. Saya tidak merasa ingin mengujinya, tetapi jika Anda menyalakan komputer baru dari IP baru dan tidak menggunakan mouse sama sekali, saya berani bertaruh itu akan gagal.
Caimen
13
Perhatikan bahwa Anda juga dapat menabraknya dan menekan spasi.
JSideris
74

Sebuah makalah baru telah dirilis dengan beberapa tes terhadap reCAPTCHA:

https://www.blackhat.com/docs/asia-16/materials/asia-16-Sivakorn-Im-Not-a-Human-Breaking-the-Google-reCAPTCHA-wp.pdf

Beberapa hal penting:

  • Dengan tetap mengaktifkan cookie selama +9 hari (dengan menjelajahi situs dengan sumber daya Google), Anda kemudian dapat meneruskan reCAPTCHA dengan hanya mengklik kotak centang;
  • Tidak ada batasan berdasarkan permintaan per IP;
  • Agen pengguna browser harus nyata, dan Google menjalankan tes terhadap lingkungan Anda untuk memastikannya cocok dengan agen pengguna;
  • Google menguji apakah browser dapat membuat Kanvas;
  • Resolusi layar dan kejadian mouse tidak memengaruhi hasil;

Google telah memperbaiki kerentanan cookie dan mungkin membatasi beberapa perilaku berdasarkan IP.

Temuan menarik lainnya adalah bahwa Google menjalankan VM dalam JavaScript yang mengaburkan banyak kode dan perilaku reCAPTCHA. VM ini dikenal sebagai botguard dan digunakan untuk melindungi layanan lain selain reCAPTCHA:

https://github.com/neuroradiology/InsideReCaptcha

PEMBARUAN 2017

Sebuah makalah baru-baru ini (dari Agustus) diterbitkan pada WOOT 2017 mencapai akurasi 85% dalam menyelesaikan tantangan audio noCAPTCHA reCAPTCHA:

http://uncaptcha.cs.umd.edu/papers/uncaptcha_woot17.pdf

PEMBARUAN 2018

Google memperkenalkan reCAPTCHA v3, yang terlihat seperti "mesin prediksi skor manusia" yang dikalibrasi per situs web. Ini dapat diinstal ke halaman situs web yang berbeda (berfungsi seperti skrip Google Analytics) untuk membantu reCAPTCHA dan pemilik situs web untuk memahami perilaku manusia vs bot sebelum mengisi reCAPTCHA.

https://www.google.com/recaptcha/intro/v3beta.html

barbolo
sumber
4
mouse events don't affect the resultsItu menarik, karena saya (dan saya percaya banyak orang lain) berpikir itu adalah hal utama yang mempengaruhi hasil. Saya pikir di ponsel alih-alih kotak centang, pengguna diminta memilih semua gambar yang sama, karena tidak ada gerakan mouse di layar sentuh. Namun, melihat posting blog pengantar lagi, tampaknya tidak demikian. Mungkin memilih gambar bukannya mengetik teks yang terdistorsi, bukan bukannya menandai kotak. Apakah Anda (atau siapa pun) tahu apakah reCAPTCHA pernah mengizinkannya dengan mencentang kotak di ponsel?
Nateowami
Peristiwa mouse memang mempengaruhi hasil. Jika Anda menekan Tabdan Entermemilih kotak centang, itu akan menunjukkan gambar captcha bagi Anda untuk memilihnya berdasarkan kriteria.
mbomb007
1
@ mbomb007 Acara mouse mungkin memengaruhi hasil tetapi menekan Tabdan Entertidak akan menampilkan gambar captcha sepanjang waktu. Sebagian besar waktu mendesak Tabdan Enterditerima
Manish Ojha
24

Bot saya berjalan dengan baik melawan ReCaptcha.

Sini Solusi saya.

Biarkan Bot Anda melakukan Langkah-langkah ini:

Pertama, tulis Human Move Move Function untuk menggerakkan Mouse Anda seperti B-Spline (Tanya saya untuk Kode Sumber). Ini adalah Poin yang paling penting.

Juga gunakan untuk hasil VPN yang lebih baik seperti https://www.purevpn.com

Untuk setiap Recpatcha lakukan Langkah-langkah ini:

  1. Jika Anda menggunakan VPN, ganti IP terlebih dahulu

  2. Hapus semua Cookie Browser

  3. Hapus semua Tembolok Peramban

  4. Tetapkan salah satu Agen Pengguna ini secara Acak:

    Sebuah. Mozilla / 5.0 (kompatibel; MSIE 9.0; Windows NT 6.1; Trident / 5.0)

    b. Mozilla / 5.0 (Windows NT 6.1; WOW64; rv: 44.0) Gecko / 20100101 Firefox / 44.0

5 Gerakkan Mouse Anda dengan Mouse Pindahkan Manusia Funktion dari RandomPoint ke Saya bukan Robot Gambar setiap kali dengan 10x10 Randomrange berbeda

  1. Kemudian Klik pernah dengan penundaan acak antara

    WM_LBUTTONDOWN

    dan

    WM_LBUTTONUP

  2. Ambil Screenshot dari Image Captcha

  3. Kirim Screenshot ke

    http://www.deathbycaptcha.com

    atau

    https://2captcha.com

dan biarkan mereka memecahkan.

  1. Setelah menerima klik, cooridinate dari captcha solver gunakan Human Mouse move Funktion Anda untuk bergerak dan Klik Recaptcha Images

  2. Gunakan Funktion Gerak Mouse Manusia untuk bergerak dan Klik ke Tombol Verifikasi Recaptcha

Dalam 75% semua percobaan, Recaptcha akan terpecahkan

Chears Google

Tom

Ingo
sumber
2
Mengapa Anda membutuhkan "Fungsi Gerakan Mouse Manusia"? Tampaknya tidak perlu mencapai tujuan Anda.
barbolo
9
Fungsi 'Human Mouse Move' adalah poin terpenting. Google mendeteksi di dalam captcha Mousespeed, MouseWay, MouseButton Acara naik turun, Clickpositions, Mouse EntryPoint ke dalam captcha, ... dan mengirim informasi ini melalui Javascript ke Google Database dengan jutaan Jejak Mousemove Manusia nyata. Setelah menafsirkan semua Informasi yang ditangkap ini, Captcha akan ditandai juga diselesaikan, hanya jika algoritma google mengatakan itu adalah manusia.
Ingo
3
@ barbolo: Silakan Periksa keamanan Blog Google resmi ini.googleblog.com/2014/12/... -> Google mengatakan "Untuk mengatasi ini, tahun lalu kami mengembangkan backend Analisis Risiko Lanjutan untuk reCAPTCHA yang secara aktif mempertimbangkan seluruh keterlibatan pengguna dengan CAPTCHA —Sebelum, selama, dan setelah — untuk menentukan apakah pengguna itu adalah manusia. "
Ingo
6
Langkah 8 menggunakan API eksternal di mana manusia memecahkan captcha untuk Anda. Bot tidak menyelesaikan apa pun.
Andrea Lazzarotto
14
Apakah hanya saya, atau apakah itu mengganggu dan menarik bagi orang lain bahwa penulis bot menggunakan Stack Overflow untuk membantu memecahkan (dan berdebat tentang!) ReCAPTCHA?
Ogre Psalm33
3

Izinkan saya menyampaikan dugaan saya, karena ini bukan teknologi terbuka.

Google mengatakan ini tentang menyisir informasi dari sebelum, selama, setelah untuk membedakan manusia dari robot. Tetapi saya lebih tertarik tentang klik terakhir pada kotak centang.

Katakanlah, data POST (diselesaikan CAPTCHA) memiliki bidang yang disebut sidik jari, string yang dihitung dari perilaku pengguna. Saya pikir mungkin ada bidang tentang lokasi kotak centang itu. Saya kira kotak centang ini berada dalam sistem koordinat yang dibuat secara acak oleh Google back-end dan dienkripsi oleh kunci publik situs saya. Jadi, robot dapat "menebak / menghitung" lokasi tentang kotak ini, tetapi ketika pemilik situs membuat kueri GET dengan kunci pribadi untuk memverifikasi identitas pengguna, Google akan mendekripsi sistem koordinat dan mengatakan jika pengguna mengklik di tempat yang tepat. Jadi, hanya satu klik kanan yang memungkinkan (dengan beberapa penyeimbang, ini kotak kotak) lokasi dalam sistem koordinat acak yang hanya dimiliki oleh Google dan pemilik situs.

hakunami
sumber
Jika peramban cukup baik untuk benar-benar menunjukkan kotak dan mendeteksi klik, lalu mengapa robot peretasan tidak dapat melakukan hal yang sama? Namun saya dapat mengatur posisi kotak centang ke posisi yang sangat tepat (dalam desimal) jadi jika klik terdeteksi dengan desimal yang sama, itu berarti robot yang tidak repot menambahkan desimal acak ke posisi klik. Tapi sekali lagi, itu tidak mudah.
Domino
Google seharusnya menggunakan algoritme 'belajar' sehingga jika beberapa klien dengan karakteristik yang sama tampaknya menggunakan jalur umum yang sama dan waktu umum untuk sampai ke sana dan itu terjadi 100.000 kali sehari, mereka mungkin tidak sah.
Sirene
1
Seharusnya relatif mudah untuk mensimulasikan klik di area kuadrat. Tidak masalah bagaimana google mengenkripsi data sebelum mengirim.
Eugene C
0

Harap diingat bahwa Google juga menggunakan reCaptcha bersama

Canvas fingerprinting 

untuk secara unik mengenali Pengguna / Browser tanpa cookie!

Ingo
sumber