Cara Memecahkan CAPTCHA di Make.com Tanpa Langkah Kode

make.com captcha - How to Solve CAPTCHA in Make.com Without a Code Step

Langkah captcha di Make.com terdiri dari tiga modul HTTP dan satu Sleep, tanpa kode sama sekali di dalam skenarionya. Kirim tantangannya, tunggu, lakukan polling sampai token kembali, lalu kirimkan token itu bersama formulir. Yang sebenarnya menghentikan orang bukanlah loop-nya, melainkan alamatnya: sebuah skenario berjalan di cloud milik Make.com, jadi 127.0.0.1 di sana adalah container Make.com dan bukan meja Anda, dan modul HTTP hanya mau memanggil URL HTTPS dengan sertifikat yang dipercayainya. Betulkan alamatnya, dan sisanya tinggal lima belas menit mengklik.

Apa yang Anda butuhkan

  • Akun Make.com pada paket apa pun. Setiap modul yang dipakai di sini ada di aplikasi bawaan HTTP, Tools, dan Flow control.
  • CapSkip berjalan dalam mode Server di mesin Windows yang Anda kendalikan dan dapat dijangkau dari internet.
  • Sebuah hostname yang mengarah ke mesin itu dan sertifikat TLS yang dipercaya publik untuknya.
  • URL halaman formulir yang terproteksi, beserta sitekey-nya.

Mode Local dan mode Server sama-sama dijelaskan di bagian pengaturan koneksi. Mode Local adalah pilihan yang tepat ketika otomatisasi Anda dan solver berbagi satu mesin, dan justru itulah yang tidak bisa dilakukan skenario cloud.

Mengapa alamat loopback bukan pilihan di sini

Skenario Make.com dieksekusi di infrastruktur milik Make.com, pada salah satu dari empat zona. Akun Anda berada di us1, us2, eu1, atau eu2, dan setiap permintaan keluar berangkat dari alamat egress yang dipublikasikan untuk zona tersebut. Tidak ada bagian dari jalur itu yang menyentuh jaringan Anda, jadi permintaan ke 127.0.0.1 akan ter-resolve di dalam container yang menjalankan skenario Anda dan tidak menemukan apa pun yang mendengarkan di sana.

Mode Server adalah jawabannya, dan itu bukan produk yang berbeda. Solver tetap berjalan di perangkat keras Anda, tetap memecahkan tanpa biaya per pemecahan, dan tetap menyediakan endpoint kompatibel 2captcha yang sama. Yang berubah adalah antarmuka yang diikatnya: alih-alih hanya melayani perangkat lokal, ia melayani di jaringan atau IP publik Anda sehingga apa pun yang punya alamat dan sebuah key bisa memanggilnya. IP publik statis menjaga alamat itu agar tidak berpindah tanpa sepengetahuan Anda.

Daftar egress yang dipublikasikan itu juga berguna untuk arah sebaliknya. Make.com mendokumentasikan alamat keluar per zona, jadi Anda bisa mengizinkan hanya alamat zona Anda melewati firewall menuju port solver dan menolak sisanya. Alamat masuk di sisi Make.com bersifat dinamis dan tidak dipublikasikan, jadi jangan mencoba mematoknya.

Beri solver alamat yang akan diterima Make.com

Inilah syarat yang menjegal semua orang, dan layak dibaca dua kali. Modul HTTP mendokumentasikan kolom URL-nya sebagai endpoint HTTPS, dan modul itu menolak sertifikat yang tidak bisa diverifikasinya. Sertifikat yang ditandatangani sendiri tidak cukup, begitu pula alamat IP telanjang di port 8080 lewat HTTP biasa.

Jadi, tempatkan sebuah TLS terminator di depan solver. Caddy adalah jalan tersingkat di Windows karena ia meminta dan memperpanjang sertifikat sungguhan dengan sendirinya, dan satu perintah sudah menjadi seluruh konfigurasinya. Arahkan sebuah hostname ke mesin itu lebih dulu, lalu jalankan Caddy.

# Fronts CapSkip on 8080 with a real certificate for the hostname.
# Ports 80 and 443 must reach this machine for the challenge.
caddy reverse-proxy --from solver.example.com --to 127.0.0.1:8080

Verifikasi dari komputer Anda sendiri sebelum menyentuh Make.com. Jika curl puas dengan sertifikatnya, skenario Anda juga akan puas, dan Anda baru saja memangkas separuh area debugging.

# Submit a reCAPTCHA v2 job. json=1 makes the reply JSON.
curl -s "https://solver.example.com/in.php" \
  -d "key=YOUR_API_KEY" \
  -d "method=userrecaptcha" \
  -d "googlekey=YOUR_SITEKEY" \
  -d "pageurl=https://example.com/page-with-recaptcha" \
  -d "json=1"

# {"status":1,"request":"2122988149"}

Langkah 1: kirim CAPTCHA

Tambahkan sebuah modul HTTP dan pilih aksi yang membuat permintaan. Setel method-nya ke POST dan URL-nya ke endpoint in.php milik solver Anda. Pilih tipe body URL-encoded lalu tambahkan lima kolom, yaitu lima kolom yang sama seperti yang dikirim panggilan curl di atas: key, nama method, sitekey, URL halaman, dan flag JSON.

Nyalakan opsi yang mengurai respons. Tanpa opsi itu, balasannya datang sebagai satu string dan Anda tidak bisa memetakan apa pun darinya. Dengan opsi itu, Anda memperoleh sebuah status dan sebuah nilai request, dan nilai request pada pengiriman yang berhasil adalah id job-nya.

Nama method itulah yang menentukan tipe CAPTCHA. Gunakan userrecaptcha untuk reCAPTCHA v2 dan tambahkan version=v3 untuk v3, turnstile untuk Cloudflare Turnstile, geetest untuk GeeTest v3, dan base64 untuk CAPTCHA gambar yang dikirim inline. Daftar parameter lengkap untuk masing-masing ada di dokumentasi API CapSkip.

Langkah 2: tunggu sebelum Anda melakukan polling

Tambahkan modul Sleep dari aplikasi Tools. Pemecahan reCAPTCHA v2 biasanya memakan waktu lima belas sampai empat puluh lima detik, jadi langsung melakukan polling hanya akan menghabiskan satu operasi untuk diberi tahu bahwa jawabannya belum siap. Dua puluh detik adalah waktu tunggu pertama yang masuk akal.

Sleep menunda skenario sampai 300 detik, yaitu lima menit, dan batas atas itulah alasan langkah berikutnya berupa sebuah loop alih-alih satu jeda panjang. Angka itu jauh lebih dari cukup untuk satu kali pemecahan, tetapi Anda tidak bisa memakainya untuk duduk menunggu percobaan ulang dalam jumlah yang tidak diketahui.

Langkah 3: lakukan polling sampai token datang

Make.com tidak punya modul tunggu-sampai-kondisi, jadi polling-nya dibangun dari sebuah Repeater dan sebuah filter. Repeater berada di aplikasi Flow control dan merupakan generator bundle: beri ia sebuah nilai awal dan jumlah pengulangan, maka ia akan memancarkan sebanyak itu bundle, masing-masing membawa sebuah penghitung bernama i. Semua yang berada di hilirnya berjalan sekali per bundle, dan itulah badan loop Anda.

Setel jumlah pengulangan ke sepuluh. Di belakang Repeater, tempatkan Sleep kedua selama lima detik dan modul HTTP kedua yang memanggil res.php dengan id job dari langkah 1.

# The poll. Same key, the id from the submit, action=get.
curl -s "https://solver.example.com/res.php?key=YOUR_API_KEY&action=get&id=2122988149&json=1"

# Still working:
# {"status":0,"request":"CAPCHA_NOT_READY"}
#
# Done:
# {"status":1,"request":"03AGdBq24PBCbwiDR..."}

Sekarang tambahkan sebuah filter pada tautan yang keluar dari modul itu dan hanya loloskan bundle ketika status-nya sama dengan 1. Dengan begitu, semua yang ada setelah filter berjalan tepat satu kali, yaitu pada polling yang berhasil, dan tidak ada percobaan lain yang lolos melewatinya. Pahami dengan jelas apa yang dilakukan dan tidak dilakukan filter ini. Repeater tetap memancarkan setiap bundle yang Anda minta, jadi loop-nya tidak berakhir lebih awal; yang berakhir lebih awal adalah masa menunggunya, karena token langsung bergerak maju begitu sebuah polling menemukannya. Tokennya adalah nilai request pada bundle tersebut.

Ada satu sifat API yang membentuk rancangan ini dan mudah terlewat. Sebuah hasil hanya bisa dibaca satu kali, jadi polling sukses pertama adalah satu-satunya yang akan pernah menyerahkan token kepada Anda. Petakan token itu langsung ke modul berikutnya alih-alih memanggil res.php untuk kedua kalinya demi mengambilnya lagi.

Bentuk kirim-lalu-polling yang sama muncul di setiap alat tanpa kode, dan perbedaannya sepenuhnya terletak pada apa yang dipaksakan platform di sekitarnya. Versi self-hosted dari alur ini, tempat otomatisasi dan solver bisa berbagi satu mesin, dibahas dalam panduan workflow CAPTCHA n8n. Platform yang bentuk alurnya ditentukan oleh batas waktu jalan per langkah alih-alih batas Sleep dibahas dalam panduan langkah demi langkah Zapier.

Berapa biaya loop itu dalam satuan operasi

Make.com menagih berdasarkan operasi, dan satu operasi adalah satu modul yang berjalan atas satu bundle. Sebuah trigger dihitung sekali berapa pun banyak data yang dikembalikannya, tetapi setiap modul di belakang Repeater berjalan sekali per bundle, jadi sepuluh pengulangan berisi satu Sleep ditambah satu panggilan HTTP berarti dua puluh operasi, bahkan ketika token sudah datang pada percobaan kedua. Filter tidak menghentikan loop-nya; filter hanya menahan bundle agar tidak melewatinya.

Jumlah itu bersifat tetap, bukan sekadar angka yang biasanya terjadi, dan justru itulah yang membuat dua kebiasaan berikut layak dimiliki. Buat Sleep pertama cukup panjang sehingga jawabannya biasanya sudah siap pada polling pertama atau kedua, karena hanya dengan begitulah jumlah pengulangan yang rendah bisa dipakai sama sekali. Lalu setel jumlah pengulangan untuk menutupi skenario terburuk yang realistis alih-alih yang nyaman saja: sepuluh pengulangan dengan jeda lima detik menambahkan lima puluh detik di atas waktu tunggu awal, dan itu lebih dari cukup untuk v2.

Pemecahannya sendiri sama sekali tidak dihitung per pemakaian. CapSkip berjalan di komputer Anda sendiri, jadi satu-satunya biaya dari sebuah percobaan ulang adalah operasi yang dihitung Make.com untuk modul-modul yang melakukannya.

Langkah 4: kirim token bersama formulir

Apa yang Anda lakukan dengan token bergantung pada targetnya. Jika Anda mengirim sebuah formulir, tambahkan modul HTTP ketiga dan sertakan token sebagai kolom g-recaptcha-response bersama kolom-kolom formulir yang sebenarnya. Untuk Turnstile, kolomnya justru bernama cf-turnstile-response, dan solver juga mengembalikan user agent yang dipakainya, yang akan dituntut hadir di header permintaan oleh halaman tantangan.

Token kedaluwarsa, dan untuk reCAPTCHA v2 jendelanya sekitar dua menit sejak pemecahan selesai. Tempatkan modul pengiriman tepat setelah filter. Apa pun yang lambat, seperti mengambil sebuah record atau menyusun payload, seharusnya berada sebelum pemecahan, bukan di antara pemecahan dan pengiriman. Kedua gaya pengiriman beserta pengaturan waktunya dibahas di halaman pemecah reCAPTCHA v2.

Kesalahan umum dan artinya

Apa yang Anda lihatPenyebabPerbaiki
Error koneksi pada modul pertamaSolver berada di alamat loopback atau alamat privatAlihkan CapSkip ke mode Server dan gunakan hostname publik
Error sertifikat atau TLSSertifikat yang ditandatangani sendiri, atau HTTP biasaTempatkan sertifikat yang dipercaya publik di depan solver
Respons datang sebagai satu string yang belum diuraiOpsi parse nonaktif pada modul HTTPNyalakan opsi itu, lalu petakan ulang kolom-kolomnya
ERROR_WRONG_USER_KEYKolom key kosong atau salah bentukPeriksa nilai yang dipetakan ke dalam permintaan
ERROR_GOOGLEKEYSitekey kosong atau salah sampai ke solverBaca ulang sitekey dari halaman aslinya
CAPCHA_NOT_READY pada setiap pengulanganLoop-nya lebih pendek daripada waktu yang dibutuhkan pemecahanNaikkan Sleep pertama, atau tambah jumlah pengulangan
Polling kedua kembali tanpa tokenSebuah hasil hanya bisa dibaca satu kaliPetakan pada polling yang berhasil, jangan mengambilnya ulang
Formulir menolak token yang tampak baik-baik sajaToken kedaluwarsa sebelum pengiriman berjalanPindahkan modul yang lambat ke depan pemecahan

FAQ

Bisakah skenario menjangkau solver di 127.0.0.1?

Make.com adalah produk terkelola dan tidak ada edisi self-hosted, jadi alamat loopback tidak pernah menjadi milik Anda di dalam sebuah skenario. Jika otomatisasi Anda benar-benar berjalan di mesin yang sama dengan solver, berarti Anda sedang menggambarkan alat yang berbeda. Sebuah instance n8n self-hosted menjaga trafiknya tetap di perangkat lokal, dan begitu juga skrip yang ditulis menggunakan salah satu CapSkip SDKs.

Apakah aman membuka solver ke internet?

Aman, asalkan Anda mempersempit siapa yang bisa menjangkaunya. Nyalakan validasi key agar permintaan tanpa autentikasi ditolak, beri skenario itu key-nya sendiri supaya bisa dicabut sendirian, dan batasi aturan firewall hanya pada alamat egress yang dipublikasikan untuk zona Make.com Anda. TLS terminator di depannya berarti key tidak pernah melintasi jaringan dalam bentuk terbuka.

Mengapa tidak satu Sleep panjang saja alih-alih sebuah loop?

Karena satu Sleep hanya mencapai maksimal 300 detik, dan karena Anda hanya akan menebak-nebak. Waktu tunggu tetap akan menghabiskan waktu sia-sia di setiap proses atau justru kembali dengan tangan kosong pada proses yang lambat, dan dalam kedua kasus itu Anda tidak mendapat percobaan kedua. Repeater-lah yang memberi Anda percobaan ulang, dan token sampai ke modul pengiriman begitu sebuah polling menemukannya, biasanya polling kedua. Loop-nya sendiri tetap berjalan sampai hitungan penuh, jadi yang Anda dapatkan dari ini adalah keandalan, bukan tagihan yang lebih kecil.

Apakah skenario membutuhkan proxy untuk pemecahannya?

Biasanya tidak. Dukungan proxy tersedia untuk reCAPTCHA, Turnstile, dan GeeTest, dan hal itu penting ketika situs target mengikat token pada IP yang akan mengirimkannya. CAPTCHA gambar sama sekali tidak menerima proxy. Tambahkan parameter proxy ke modul HTTP pertama, yaitu modul yang memanggil in.php, dan hanya jika Anda melihat token ditolak padahal datang tepat waktu.

Versi singkatnya

Tempatkan CapSkip dalam mode Server, pasang sebuah hostname dan sertifikat tepercaya di depannya, lalu rangkai empat hal di dalam skenario: satu pengiriman HTTP, satu Sleep, satu Repeater dengan sebuah Sleep dan sebuah polling HTTP di belakangnya, serta satu filter yang hanya meloloskan hasil yang sudah selesai. Tidak ada langkah kode yang terlibat sama sekali. Alur yang sama menyusut menjadi satu panggilan saja dalam Python, Node.js, PHP, atau C#, dan semuanya ditunjukkan di halaman SDK CapSkip.

Perlu diketahui sebelum Anda menskalakan sebuah skenario. Karena CapSkip adalah pemecah captcha yang berjalan di perangkat keras yang sudah Anda miliki, jumlah pemecahan tidak pernah muncul di tagihan. Satu-satunya hal yang bertambah seiring volume adalah jumlah operasi yang ditagih Make.com untuk modul-modul di sekitarnya.