CAPTCHA API çağrılarınız beklenmedik bir hata kodu döndürdüğünde, sorunu tahmin ederek değil ham HTTP trafiğine bakarak çözersiniz. Charles Proxy tam olarak bunu yapar: kodunuz ile CaptchaAI arasına girer ve /in.php ile /res.php uçlarına giden her isteği, dönen her yanıtı, aradaki her milisaniyeyi olduğu gibi önünüze serer.
Aşağıda bir entegrasyonu SSL proxy kurulumundan token doğrulamasına kadar adım adım ayıklarsınız.
Charles Proxy kurulumu ve trafik yönlendirme
Charles'ı üç adımda kurarsınız; sıra önemlidir, çünkü sertifikaya güvenilmeden HTTPS trafiği çözülemez.
Adım 1: Charles Proxy'yi yükleyin
Uygulamayı charlesproxy.com adresinden indirin; Windows, macOS ve Linux'ta çalışır.
Adım 2: SSL proxy'yi etkinleştirin
CaptchaAI istekleri HTTPS üzerinden gider. Şifrelenmiş içeriği görebilmek için:
- Proxy → SSL Proxying Settings → Add
- Host:
ocr.captchaai.com, Port:443 - Help → SSL Proxying → Install Charles Root Certificate
- Sertifikaya işletim sisteminizin sertifika deposunda güvenin
Adım 3: Kodunuzu Charles üzerinden yönlendirin
Charles localhost:8888 portunda dinler. Python'da proxy'yi ve — yalnızca geliştirmede — verify=False verin:
import requests
proxies = {
"http": "http://localhost:8888",
"https": "http://localhost:8888",
}
# Disable SSL verification for 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'te aynısını bir HttpsProxyAgent ile kurarsınız:
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,
});
Kurulumda takılırsanız
Charles'ın en sık takıldığı noktalar sertifika güveni ve proxy yapılandırmasıdır.
| Sorun | Sebep | Çözüm |
|---|---|---|
| Kodda SSL hataları | Charles sertifikasına güvenilmiyor | Kök sertifikayı yükleyin; geliştirmede verify=False kullanın |
| Hiçbir istek görünmüyor | Kod proxy'yi kullanmıyor | İstek/axios yapılandırmasında proxy'yi ayarlayın |
| Bozuk HTTPS yanıtı | SSL proxy etkin değil | ocr.captchaai.com'u SSL Proxying Settings'e ekleyin |
| Charles istekleri yavaşlatıyor | Kesme noktaları açık | Gerekmediğinde kesme noktalarını kapatın |
İki adımlı akışta trafiği okuma
CaptchaAI akışı iki adımlıdır: önce /in.php ile görevi gönderir, sonra /res.php ile sonucu sorgularsınız. Charles ikisini ayrı satırlarda listeler.
POST /in.php — görev gönderimi
Gönderim isteğine tıklayıp şu sekmeleri kontrol edin:
| Sekme | Doğrulanması gereken |
|---|---|
| Request → Headers | Content-Type doğru mu |
| Request → Body | Gerekli tüm parametreler mevcut mu |
| Response → Body | Başarıda {"status":1,"request":"TASK_ID"} dönüyor mu |
| Timing | İstek süresi (< 1 saniye olmalı) |
Bu istekte en sık şu dört sorunu görürsünüz:
| Belirti | Anlamı |
|---|---|
method parametresi eksik |
ERROR_BAD_PARAMETERS |
| Yanlış Content-Type | Parametreler ayrıştırılamıyor |
Boş googlekey |
ERROR_WRONG_GOOGLEKEY |
| Bozuk JSON gövdesi | JSON değil, form verisi gönderin |
GET /res.php — sonucu sorgulama
Periyodik sorgulama isteklerinde şunları doğrulayın:
- Parametreler:
key,action=get,id=TASK_ID - Yanıt:
CAPCHA_NOT_READY(sorgulamaya devam edin) veya{"status":1,"request":"TOKEN"} - Timing: Her sorgulamanın ardından kodunuzdaki bekleme aralığı gelir
Örneğin İstanbul'daki bir e-ticaret ekibi, ödeme adımındaki reCAPTCHA'yı QA ortamında test ederken gönderdiği pageurl ile staging URL'sinin eşleştiğini Charles'ta saniyeler içinde doğrular.
Sık karşılaşılan hataları ayıklama
Boş sitekey: ERROR_WRONG_GOOGLEKEY
Gönderim gövdesine bakıp googlekey alanını bulun:
# What Charles shows:
key=YOUR_API_KEY&method=userrecaptcha&googlekey=&pageurl=https://example.com&json=1
^^^^^^^^ empty!
Alan boşsa sitekey çıkarımı bir üst adımda başarısız olmuştur; çıkarma kodunu kontrol edin.
İstekler zaman aşımına uğruyor
Zamanlamayı görmek için Charles'ın Sequence görünümünü açın:
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) ← never resolves
Sonuç hiç dönmüyorsa sitekey ve sayfa URL'sini doğrulayın.
Token hedef sitede reddediliyor
CaptchaAI'nin döndürdüğü token ile hedef siteye enjekte ettiğiniz token'ı karşılaştırın: status: 1 içeren /res.php yanıtındaki request alanını tam kopyalayıp bir sonraki istekte g-recaptcha-response alanında yer aldığını doğrulayın. Çoğu "geçersiz token" vakası, kopyalarken token'ın kesilmesinden kaynaklanır; bu fark hemen görünür.
CAPTCHA ayıklamasında işe yarayan Charles özellikleri
En değerli özellik, bakiye harcamadan test etmenizi sağlayan Map Local'dir.
Yerel Harita (Map Local): bakiye harcamadan test
Token enjeksiyon kodunuzu API bakiyesi harcamadan test edersiniz: Tools → Map Local → Add ile https://ocr.captchaai.com/res.php adresini bir mock_response.json dosyasına eşleyin:
{"status": 1, "request": "mock_token_for_testing"}
Hata ayıklamayı hızlandıran üç özellik daha
| Özellik | Ne işe yarar | Nasıl açılır |
|---|---|---|
| Repeat | Betiği baştan çalıştırmadan bir sorgulama isteğini yeniden gönderir | İsteğe sağ tıklayın → Repeat |
| Breakpoints | İsteği duraklatıp parametreleri elle düzeltir | Proxy → Breakpoint Settings → Add, /in.php yolunu ekleyin |
| Throttle | Yavaş bağlantıları taklit eder | Proxy → Throttle Settings, ön ayarı 3G veya EDGE yapın |
Charles'a alternatifler
| Araç | Platform | HTTPS | Maliyet |
|---|---|---|---|
| Charles Proxy | Win/Mac/Linux | Sertifika kurulumu gerekir | Ücretli (ücretsiz deneme) |
| mitmproxy | Win/Mac/Linux | Sertifika kurulumu gerekir | Ücretsiz |
| Fiddler | Windows | Yerleşik HTTPS şifre çözme | Ücretsiz |
| Proxyman | macOS | Tek tıkla HTTPS kurulumu | Freemium |
mitmproxy ile hızlı kurulum
# Install
pip install mitmproxy
# Run
mitmproxy --listen-port 8080
# Configure Python
proxies = {"https": "http://localhost:8080"}
Sık sorulan sorular
Charles'ı üretimde kullanmalı mıyım?
Hayır. Charles bir geliştirme ve hata ayıklama aracıdır. Üretim gözlemlenebilirliği için yapılandırılmış günlük kaydı ve izleme kullanın.
Charles üzerinden geçen istekler CAPTCHA çözümünü etkiler mi?
Hayır. CaptchaAI, Charles'ı bir proxy olarak görmez; istekleriniz şeffaf biçimde iletilir ve çözüm süresi değişmez.
SSL proxy açıkken "certificate not trusted" hatası alıyorum, ne yapmalıyım?
Charles kök sertifikasını işletim sisteminizin sertifika deposuna yükleyip güvenilir olarak işaretleyin. Yerel geliştirmede kod tarafında verify=False da kullanabilirsiniz.
Charles yerine ücretsiz bir araç var mı?
Evet. mitmproxy ve Fiddler ücretsizdir; macOS'ta Proxyman freemium modelle çalışır. Aynı iki adımlı /in.php ve /res.php akışını hepsinde inceleyebilirsiniz.
Entegrasyonunuzu Charles ile inceleyin
API anahtarınızı captchaai.com üzerinden alın ve ilk isteğinizi Charles üzerinden gönderip dönen token'ı gövdede olduğu gibi görün.