Tutorials

Charles Proxy ile CAPTCHA API Çağrılarında Hata Ayıklama

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:

  1. ProxySSL Proxying SettingsAdd
  2. Host: ocr.captchaai.com, Port: 443
  3. HelpSSL ProxyingInstall Charles Root Certificate
  4. 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.


İlgili kılavuzlar

Bu makale için yorumlar devre dışı bırakılmıştır.