Tutorials

Debug API Call CAPTCHA dengan Charles Proxy

Response yang diharapkan malah jadi CAPCHA_NOT_READY terus-menerus, atau situs target menolak token yang dikirim — log aplikasi cuma menampilkan pesan generic. Charles Proxy menangkap trafik HTTPS di antara kode Anda dan ocr.captchaai.com, jadi Anda melihat persis apa yang dikirim dan diterima, bukan tebakan dari print() tambahan.

Berguna buat tim otomatisasi lepas atau QA engineer yang menjalankan script dari VPS Singapura (ap-southeast-1) atau Jakarta (asia-southeast2) — jadi pembeda antara debugging lima menit dan trial-error berjam-jam.


Setup Charles Proxy untuk Trafik API CaptchaAI

1. Instal Charles Proxy

Unduh dari charlesproxy.com — tersedia untuk Windows, macOS, dan Linux.

2. Nyalakan SSL proxying

CaptchaAI pakai HTTPS — Charles butuh izin untuk membuka trafik terenkripsi:

  1. ProxySSL Proxying SettingsAdd
  2. Host: ocr.captchaai.com, Port: 443
  3. HelpSSL ProxyingInstall Charles Root Certificate
  4. Percayai sertifikat tersebut di certificate store OS Anda

3. Arahkan kode Anda ke Charles

Charles berjalan di localhost:8888 secara default:

Python:

import requests

proxies = {
    "http": "http://localhost:8888",
    "https": "http://localhost:8888",
}

# Nonaktifkan verifikasi SSL untuk Charles (development only)
resp = requests.post(
    "https://ocr.captchaai.com/in.php",
    data={"key": "YOUR_API_KEY", "method": "userrecaptcha", "json": "1"},
    proxies=proxies,
    verify=False,
)

Node.js:

const axios = require('axios');
const HttpsProxyAgent = require('https-proxy-agent');

const agent = new HttpsProxyAgent('http://localhost:8888');

const resp = await axios.post('https://ocr.captchaai.com/in.php', null, {
  params: { key: 'YOUR_API_KEY', method: 'userrecaptcha', json: 1 },
  httpsAgent: agent,
});

Yang Harus Dicek Saat Debug Request dan Response

Bandingkan /in.php (submit) dan /res.php (polling) di Charles dengan tabel ini:

Tahap Yang perlu dicek
Submit — Headers Content-Type benar
Submit — Body Semua parameter wajib ada
Submit — Response {"status":1,"request":"TASK_ID"} = berhasil
Polling — Request key, action=get, id=TASK_ID lengkap
Polling — Response CAPCHA_NOT_READY (lanjut) atau {"status":1,"request":"TOKEN"}
Timing Submit <1 detik; polling ikuti sleep di kode

Gejala paling sering:

  • Parameter method hilang → ERROR_BAD_PARAMETERS
  • Content-Type keliru → parameter gagal di-parse
  • googlekey kosong → ERROR_WRONG_GOOGLEKEY
  • Body request JSON, padahal seharusnya form data

Menelusuri 3 Masalah Paling Umum Saat Debug API CaptchaAI

Masalah: ERROR_WRONG_GOOGLEKEY

Buka body request submit, lalu cari field googlekey:

# Apa yang ditampilkan Charles:
key=YOUR_API_KEY&method=userrecaptcha&googlekey=&pageurl=https://example.com&json=1
                                      ^^^^^^^^ kosong!
  • Penyebab paling umum: ekstraksi sitekey gagal di kode upstream Anda
  • Selector sitekey berubah setelah situs target update markup
  • Sitekey diambil sebelum elemen CAPTCHA selesai render

Masalah: Token Ditolak Situs Target

Bandingkan token dari CaptchaAI dengan yang Anda inject:

  1. Di Charles, temukan response /res.php dengan status: 1
  2. Salin token lengkap dari field request
  3. Temukan request berikutnya yang dikirim ke situs target
  4. Pastikan token itu muncul di form body sebagai g-recaptcha-response

Masalah: Request Macet atau Timeout

Gunakan tampilan Sequence untuk melihat timing:

POST /in.php     → 234ms ✓
GET  /res.php    → 189ms (CAPCHA_NOT_READY)
GET  /res.php    → 201ms (CAPCHA_NOT_READY)
GET  /res.php    → 195ms (CAPCHA_NOT_READY)
... 23 more ...
GET  /res.php    → 188ms (CAPCHA_NOT_READY)  ← tidak pernah resolve
  • Pola di atas terus berulang → cocokkan sitekey dan pageurl dengan halaman target
  • Interval polling tidak lebih cepat dari 3–5 detik

Fitur Charles Proxy yang Paling Berguna untuk CAPTCHA

Kirim ulang request (Repeat)

Klik kanan request → Repeat untuk kirim ulang. Berguna untuk:

  • Menguji polling tanpa re-run script
  • Membandingkan response dari percobaan submit yang berbeda

Breakpoint: intip dan ubah request sebelum terkirim

  1. ProxyBreakpoints SettingsAdd
  2. Host: ocr.captchaai.com, Path: /in.php
  3. Centang Request
  4. Kode Anda berhenti sejenak sebelum dikirim — edit parameter di situ

Map Local: uji kode tanpa memakai kredit API

  1. ToolsMap LocalAdd
  2. Petakan https://ocr.captchaai.com/res.php ke file JSON lokal
  3. Buat mock_response.json:
{"status": 1, "request": "mock_token_for_testing"}

Menguji kode inject token tanpa memotong saldo API.

Throttling: simulasikan koneksi lambat

  1. ProxyThrottle Settings → Enable
  2. Set preset ke kecepatan 3G atau EDGE
  3. Cek apakah kode Anda menangani response lambat dan timeout

Kalau Tidak Mau Bayar Lisensi Charles Proxy

Charles solid, tapi bukan satu-satunya opsi kalau budget terbatas:

Alat Platform HTTPS Biaya
Charles Proxy Win/Mac/Linux Perlu install sertifikat Berbayar (ada uji coba gratis)
mitmproxy Win/Mac/Linux Perlu install sertifikat Gratis
Fiddler Windows Dekripsi HTTPS bawaan Gratis
Proxyman macOS Setup HTTPS satu klik Freemium

Fiddler cocok untuk Windows; mitmproxy paling dekat ke Charles buat pengguna CLI.

mitmproxy: opsi gratis paling mendekati

# Install
pip install mitmproxy

# Jalankan
mitmproxy --listen-port 8080

# Konfigurasi Python
proxies = {"https": "http://localhost:8080"}

Troubleshooting Cepat

Cocokkan gejala Anda dengan tabel ini sebelum menelusuri log satu per satu:

Masalah Penyebab Perbaikan
Error SSL di kode Sertifikat Charles belum dipercaya Install root cert; pakai verify=False
Tidak ada request muncul Kode belum diarahkan ke proxy Set proxy di konfigurasi requests/axios
Response HTTPS berantakan SSL proxying belum aktif Tambahkan ocr.captchaai.com ke SSL Proxying Settings
Charles bikin request lambat Breakpoint masih aktif Matikan breakpoint saat tidak dipakai

Pertanyaan Umum Seputar Debug API CAPTCHA

Apakah Charles Proxy aman dipakai untuk trafik production?

Sebaiknya tidak. Charles untuk debugging, bukan observability produksi — pakai structured logging.

Kenapa response /res.php saya terus-menerus CAPCHA_NOT_READY?

Wajar untuk beberapa kali polling pertama. Lewat 20+ kali tanpa resolve:

  • Sitekey atau pageurl kemungkinan tidak cocok dengan halaman target
  • Cek saldo API di dashboard CaptchaAI Anda

Bisakah Charles Proxy dipakai di VPS Linux tanpa antarmuka grafis?

Charles butuh GUI. Dua opsi untuk VPS headless:

  • Jalankan mitmproxy langsung di server (CLI)
  • Redirect trafik VPS ke Charles lokal lewat SSH tunnel

Siap Debug Integrasi CaptchaAI Sendiri?

Ambil API key CaptchaAI di captchaai.com dan lacak request pertama Anda lewat Charles.

Baca Juga

Komentar dinonaktifkan untuk artikel ini.