Туториалы

Отладка вызовов API CAPTCHA с помощью Charles Proxy

Когда ваша интеграция CAPTCHA возвращает неожиданные ошибки, проверка необработанного HTTP-трафика показывает, что на самом деле отправляется и принимается. Charles Proxy находится между вашим кодом и CaptchaAI, позволяя вам видеть каждый запрос, ответ и детали времени.


Настраивать

1. Установите прокси-сервер Чарльза.

Скачать сcharlesproxy.com. Доступно в Windows, macOS и Linux.

2. Включите SSL-прокси

CaptchaAI использует HTTPS. Чтобы проверить зашифрованный трафик:

  1. Прокси -> Настройки SSL-прокси -> Добавить
  2. Хост: ocr.captchaai.com, Порт: 443
  3. Справка -> SSL-проксирование -> Установить корневой сертификат Charles
  4. Доверяйте сертификату в хранилище сертификатов вашей ОС.

3. Настройте свой код для использования Чарльза

По умолчанию Чарльз работает на localhost:8888.

Питон:

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,
});

Что проверять

Отправить запрос (POST /in.php)

В Чарльзе нажмите запрос на /in.php. Проверять:

Вкладка Что проверить
Запрос — Заголовки Тип контента правильный
Запрос — Тело Все необходимые параметры присутствуют
Ответ — Тело {"status":1,"request":"TASK_ID"} об успехе
Время Длительность запроса (должна быть <1 с)

Общие проблемы, видимые у Чарльза:

  • Отсутствует параметр method -> ERROR_BAD_PARAMETERS
  • Неверный тип контента — Параметры не анализируются
  • Пустой googlekey -> ERROR_WRONG_GOOGLEKEY
  • Неверный формат тела JSON — Используйте данные формы, а не тело JSON.

Запрос на опрос (GET /res.php)

Проверьте запросы опроса:

  • Параметры: key, action=get, id=TASK_ID.
  • Ответ: CAPCHA_NOT_READY (продолжить опрос) или {"status":1,"request":"TOKEN"}.
  • Время: за каждым опросом следует интервал сна.

Отладка распространенных проблем

Проблема: ERROR_WRONG_GOOGLEKEY.

В Charles посмотрите тело запроса на отправку. Найдите поле googlekey:

# What Charles shows:
key=YOUR_API_KEY&method=userrecaptcha&googlekey=&pageurl=https://example.com&json=1
                                      ^^^^^^^^ empty!

Исправлено: не удалось извлечь ключ сайта в восходящем направлении. Проверьте свой код извлечения.

Проблема: токен отклонен целевым сайтом

Сравните то, что вернул CaptchaAI, с тем, что вы вводите:

  1. В Charles найдите ответ /res.php с помощью status: 1.
  2. Скопируйте полный токен из поля request.
  3. Найдите последующий запрос на целевой сайт
  4. Убедитесь, что токен находится в теле формы как g-recaptcha-response.

Проблема: истекло время выполнения запросов

Используйте представление Чарльза Последовательность, чтобы увидеть время:

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

Если проблема не решена: проверьте правильность ключа сайта и URL-адреса страницы.


Функции Charles для отладки CAPTCHA

Повторить запрос

Щелкните правой кнопкой мыши любой запрос — Повторить, чтобы отправить его повторно. Полезно для тестирования запросов опроса без повторного запуска всего сценария.

Точки останова

Установите точку останова на /in.php, чтобы проверить и изменить запрос перед его отправкой:

  1. Прокси -> Настройки точки останова -> Добавить
  2. Хост: ocr.captchaai.com, Путь: /in.php
  3. Проверьте Запрос
  4. Теперь ваш код приостанавливается перед отправкой — вы можете редактировать параметры.

Карта Местная

Замените ответы API локальными файлами для тестирования:

  1. Инструменты -> Локальная карта -> Добавить
  2. Сопоставьте https://ocr.captchaai.com/res.php с локальным файлом JSON.
  3. Создайте mock_response.json:
{"status": 1, "request": "mock_token_for_testing"}

Это позволяет вам тестировать код передача токена во внутренний QA endpoint без использования кредитов API.

Дроссель

Имитировать медленные соединения:

  1. Прокси -> Настройки регулирования -> Включить
  2. Установите предустановленную скорость 3G или уровня EDGE.
  3. Проверьте, правильно ли ваш код обрабатывает медленные ответы и таймауты.

Альтернативы Чарльзу

Инструмент Платформа HTTPS Расходы
Чарльз Прокси Win/Mac/Linux Требуется установка сертификата Платная (бесплатная пробная версия)
митмппрокси Win/Mac/Linux Требуется установка сертификата Бесплатно
Скрипач Окна Встроенная расшифровка HTTPS Бесплатно
Проксимен macOS Настройка HTTPS в один клик Фримиум

быстрая настройка mitmproxy

# Install
pip install mitmproxy

# Run
mitmproxy --listen-port 8080

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

Поиск неисправностей

Проблема Причина Исправить
Ошибки SSL в коде Сертификат Чарльза не доверен Установите корневой сертификат Charles; используйте verify=False для разработки
Запросов не видно Код не использует прокси Установите прокси в конфиге Requests/axios
Искаженный ответ HTTPS SSL-прокси не включен Добавьте ocr.captchaai.com в настройки SSL-прокси
Чарльз замедляет запросы Точки останова включены Отключайте точки останова, когда они не нужны

Часто задаваемые вопросы

Должен ли я использовать Чарльза в производстве?

Нет. Charles — это инструмент разработки и отладки. Используйте структурированное журналирование и мониторинг для наблюдения за производством.

Влияет ли маршрутизация через Charles на решение CAPTCHA?

Нет. CaptchaAI не видит Чарльза в качестве прокси — ваши запросы проходят прозрачно.


Отладка и оптимизация интеграции CaptchaAI

Получите ключ API по адресуcaptchaai.com.


Связанные руководства

Комментарии для этой статьи отключены.