Код отправляет запрос, sitekey скопирован верно, а API всё равно отвечает ERROR_WRONG_GOOGLEKEY или зависает после десятков опросов res.php. Логов приложения тут обычно не хватает — нужно увидеть сам HTTP-трафик. Charles Proxy встаёт между кодом и CaptchaAI и показывает каждый запрос, ответ и время выполнения.
Настройка Charles Proxy для CaptchaAI
Шаг 1: установите Charles Proxy
Скачайте с charlesproxy.com. Есть сборки под Windows, macOS и Linux.
Шаг 2: включите SSL-прокси для ocr.captchaai.com
CaptchaAI работает только по HTTPS — без этой настройки Charles покажет лишь зашифрованный набор байт:
- Proxy → SSL Proxying Settings → Add
- Host:
ocr.captchaai.com, Port:443 - Help → SSL Proxying → Install Charles Root Certificate
- Добавьте сертификат в доверенные в хранилище ОС.
Шаг 3: направьте код через Charles
По умолчанию Charles слушает localhost:8888.
Python:
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:
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,
});
Разбор типичных проблем
ERROR_WRONG_GOOGLEKEY: пустой sitekey
Откройте в Charles тело запроса на отправку и найдите поле googlekey:
# What Charles shows:
key=YOUR_API_KEY&method=userrecaptcha&googlekey=&pageurl=https://example.com&json=1
^^^^^^^^ empty!
Причина обычно одна: sitekey не извлёкся на предыдущем шаге. Проверьте код извлечения, а не отправку в CaptchaAI.
Токен API не принимается на целевом сайте
Сверьте, что вернул CaptchaAI, с тем, что ушло дальше:
- В Charles найдите ответ
/res.phpсоstatus: 1. - Скопируйте полный токен из поля
request. - Найдите следующий запрос на целевой сайт.
- Убедитесь, что токен передан в теле формы под именем
g-recaptcha-response.
Опрос res.php никогда не завершается
Переключитесь на вид Sequence, чтобы увидеть цепочку по времени:
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
Если статус не меняется — обычно виноват sitekey или pageurl, а не CaptchaAI.
Что искать в перехваченном трафике
Запрос на отправку задачи (POST /in.php)
В Charles откройте запрос к /in.php и проверьте по вкладкам:
| Вкладка | Что проверить |
|---|---|
| Request → Headers | Content-Type указан верно |
| Request → Body | присутствуют все обязательные параметры |
| Response → Body | при успехе — {"status":1,"request":"TASK_ID"} |
| Timing | длительность запроса (в норме <1 с) |
Типичные находки в Charles:
- параметр
methodотсутствует →ERROR_BAD_PARAMETERS - неверный Content-Type → параметры не разбираются
- пустой
googlekey→ERROR_WRONG_GOOGLEKEY - тело запроса в формате JSON → нужны form data, а не JSON
Запрос на опрос результата (GET /res.php)
В запросах опроса проверяйте:
- параметры:
key,action=get,id=TASK_ID; - ответ:
CAPCHA_NOT_READY(опрос продолжается) либо{"status":1,"request":"TOKEN"}; - интервал: за каждым опросом должна идти пауза перед следующим.
Если воркеры развёрнуты в Европе или Казахстане, вкладка Timing отдельно покажет сетевую задержку и время ответа сервера — в логах эти два фактора неразличимы, здесь видно оба.
Типичные ошибки при отладке
Сначала сверьтесь с таблицей, прежде чем копать глубже:
| Проблема | Причина | Что делать |
|---|---|---|
| SSL-ошибки в коде | сертификат Charles не в доверенных | установите корневой сертификат Charles; verify=False — только для разработки |
| Запросы не видны | код не использует прокси | пропишите прокси в конфиге requests/axios |
| HTTPS-ответ выглядит как мусор | SSL-прокси не включён | добавьте ocr.captchaai.com в SSL Proxying Settings |
| Charles ощутимо тормозит запросы | включены breakpoints | отключайте breakpoints, когда они не нужны |
Часто задаваемые вопросы
Нужен ли Charles Proxy в продакшене?
Нет, это инструмент разовой отладки, не постоянного мониторинга — в production нужны структурированное журналирование и алертинг.
Влияет ли перехват через Charles на скорость или результат решения CAPTCHA?
Нет — CaptchaAI не отличает трафик через Charles от обычного, запрос проходит прозрачно.
Почему Charles не показывает содержимое HTTPS, хотя прокси уже настроен?
Обычно не включён SSL Proxying для ocr.captchaai.com, либо корневой сертификат Charles не добавлен в доверенные ОС.
Можно ли отлаживать API без установки GUI-приложения на сервер?
Да — для серверов и CI без GUI удобнее mitmproxy: запускается из терминала, трафик можно писать в файл.
Инструменты Charles для отладки CAPTCHA-запросов
Когда базового перехвата уже недостаточно, пригодятся более точечные функции Charles.
Repeat — повтор запроса
Правый клик по запросу → Repeat, чтобы отправить его заново. Удобно для опроса res.php — не нужно перезапускать весь скрипт.
Breakpoints — точки останова
Точка останова на /in.php позволяет посмотреть и поправить запрос до отправки:
- Proxy → Breakpoint Settings → Add
- Host:
ocr.captchaai.com, Path:/in.php - Отметьте Request
- Теперь код останавливается перед отправкой — параметры можно отредактировать вручную.
Map Local — подмена ответа API
Позволяет тестировать обработку ответа без обращения к CaptchaAI:
- Tools → Map Local → Add
- Сопоставьте
https://ocr.captchaai.com/res.phpс локальным JSON-файлом. - Создайте
mock_response.json:
{"status": 1, "request": "mock_token_for_testing"}
Так можно проверить код передачи токена без реальных задач.
Throttle — имитация медленной сети
Часть воркеров работает через нестабильный мобильный канал — стоит проверить это до релиза:
- Proxy → Throttle Settings → включите
- Выберите пресет 3G или EDGE.
- Проверьте, что код корректно обрабатывает медленные ответы и не падает по таймауту.
Чем заменить Charles Proxy
| Инструмент | Платформа | HTTPS | Стоимость |
|---|---|---|---|
| Charles Proxy | Win/Mac/Linux | нужен сертификат | платно (есть пробный период) |
| mitmproxy | Win/Mac/Linux | нужен сертификат | бесплатно |
| Fiddler | Windows | встроенная расшифровка HTTPS | бесплатно |
| Proxyman | macOS | настройка HTTPS в один клик | freemium |
Быстрый старт с mitmproxy
# Install
pip install mitmproxy
# Run
mitmproxy --listen-port 8080
# Configure Python
proxies = {"https": "http://localhost:8080"}
Удобно на headless-воркере в CI без GUI.
Отладка и оптимизация интеграции CaptchaAI
Получите API-ключ на captchaai.com и повторите эти шаги на своей интеграции.
Похожие материалы
- структурированное журналирование операций CAPTCHA
- справочник кодов ошибок CaptchaAI
- коллекция Postman для тестирования API CaptchaAI