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:
- Proxy → SSL Proxying Settings → Add
- Host:
ocr.captchaai.com, Port:443 - Help → SSL Proxying → Install Charles Root Certificate
- 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
methodhilang →ERROR_BAD_PARAMETERS - Content-Type keliru → parameter gagal di-parse
googlekeykosong →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:
- Di Charles, temukan response
/res.phpdenganstatus: 1 - Salin token lengkap dari field
request - Temukan request berikutnya yang dikirim ke situs target
- 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
- Proxy → Breakpoints Settings → Add
- Host:
ocr.captchaai.com, Path:/in.php - Centang Request
- Kode Anda berhenti sejenak sebelum dikirim — edit parameter di situ
Map Local: uji kode tanpa memakai kredit API
- Tools → Map Local → Add
- Petakan
https://ocr.captchaai.com/res.phpke file JSON lokal - Buat
mock_response.json:
{"status": 1, "request": "mock_token_for_testing"}
Menguji kode inject token tanpa memotong saldo API.
Throttling: simulasikan koneksi lambat
- Proxy → Throttle Settings → Enable
- Set preset ke kecepatan 3G atau EDGE
- 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
- Structured logging untuk operasi CAPTCHA
- Referensi kode error CaptchaAI