Что такое Charles Proxy и для чего он используется в тестировании?

Ответ

Charles Proxy — это кроссплатформенный отладчик HTTP/HTTPS-трафика, который выступает в роли прокси-сервера между клиентом (браузер, мобильное приложение) и сервером. Основное назначение — анализ, отладка и модификация сетевых запросов.

Ключевые функции для тестировщика:

  • Перехват и логирование трафика: Просмотр всех HTTP/HTTPS запросов и ответов в удобном структурированном виде (заголовки, тело, cookies).
  • Модификация "на лету": Изменение параметров запроса, заголовков или тела ответа для тестирования различных сценариев.
  • Замедление сети (Throttling): Имитация медленного соединения (3G, Edge) для проверки поведения приложения.
  • SSL-проксирование: Расшифровка HTTPS-трафика для его анализа (требует установки сертификата Charles на устройство).
  • Повтор запросов (Repeat): Многократная отправка одного запроса для нагрузочного тестирования или воспроизведения ошибки.

Типичный сценарий использования:

  1. Запустить Charles.
  2. Настроить устройство или браузер на использование Charles как прокси.
  3. Установить SSL-сертификат Charles на устройство для расшифровки HTTPS.
  4. Начать работу с приложением и анализировать трафик.

Пример перехваченного запроса в Charles:

GET /api/v1/products?category=books HTTP/1.1
Host: api.store.com
Authorization: Bearer eyJhbGciOiJIUzI1NiIs...
User-Agent: Mozilla/5.0

Применение в тестировании:

  • Тестирование API: Валидация формата запросов и ответов.
  • Отладка: Поиск причин ошибок (например, 4xx/5xx коды ответов).
  • Безопасность: Проверка, не передаются ли чувствительные данные в открытом виде.
  • Производительность: Анализ размера ответов и времени загрузки.

Ответ 18+ 🔞

Слушай, а вот этот ваш Charles Proxy, ну просто пиздец как удобная штука, если ты, конечно, не просто кнопки в приложении давишь, а хочешь понять, что там у него внутри творится. Представь себе такого цифрового подслушивающего хомяка, который садится ровно посередине между твоим телефоном и интернетом и начинает с умным видом записывать в блокнотик всё, что они друг другу передают.

По-умному это, блядь, «кроссплатформенный отладчик HTTP/HTTPS-трафика». А по-простому — хитрая жопа-посредник. Всё, что летит из приложения, сначала прилетает ему в сраку, а уж потом он решает, куда это переслать дальше. И главное — он всё это не просто пропускает, а ещё и показывает тебе, ебать мои старые костыли!

Чем он тебе, как тестировщику, жизнь облегчит, а нервы потратит:

  • Подсматривает всё, как последний вуайерист. Все запросы, все ответы — заголовки, кукисы, тело послания. Хочешь посмотреть, что твоё приложение на самом деле шлёт на сервер, а не то, что обещало в документации? Пожалуйста, вот оно, родное, в структурированном виде. Иногда такое увидишь — удивление пиздец, волнение ебать.
  • Может нахулиганить «на лету». Это вообще мощнейшая фича. Увидел запрос — щёлк правой кнопкой, «Breakpoint». Приложение отправило запрос, а Чарльз его заморозил и говорит тебе: «Ну чё, пацан? Хочешь поменять что-нибудь перед отправкой?». И ты можешь, блядь, подменить ID пользователя, сумму платежа или ещё какую-нибудь хуйню, чтобы посмотреть, как сервер среагирует на такую наглость. Можно и ответ от сервера подменить! Сервер прислал «ошибка 500»? А ты ему в ответе «всё ок, 200» подсунул и смотришь, не развалится ли твой клиент от счастья.
  • Замедляет интернет до состояния макарон. Есть такая штука — Throttling. Хочешь почувствовать, как твоё приложение будет тормозить у пользователя с интернетом уровня «два куска проволоки и банка»? Выбираешь профиль «3G» или даже «Edge», и Чарльз начинает искусственно придерживать пакеты, имитируя говённую связь. Отличный способ проверить, не вылетает ли приложение по таймауту и показывает ли оно хоть какой-то индикатор загрузки.
  • Взламывает HTTPS, как семечки щёлкает. А как же шифрование, спросишь? А Чарльз, сука, такой хитрожопый! Ты ставишь его личный сертификат доверия на свой телефон или комп, и он становится «доверенным лицом». После этого он спокойно расшифровывает весь HTTPS-трафик, читает его, а потом заново шифрует и отправляет дальше. Со стороны это выглядит как полноценное безопасное соединение, а ты в середине видишь всё содержимое. SSL-проксирование, ёпта!
  • Долбит сервер одним и тем же запросом. Нашёл интересный запрос? Жми «Repeat» хоть сто раз подряд. Хочешь проверить, как сервер держит нагрузку на одну конкретную операцию? Или воспроизвести плавающую ошибку? Вот тебе инструмент — повторяй, пока не надоест или пока сервер не накроется медным тазом.

Как этим пользоваться, если ты не полный профан?

  1. Включаешь Чарльза на компе.
  2. Говоришь своему телефону или браузеру: «Слушай, дружок, весь твой трафик теперь идёт через вот этот IP и порт (которые Чарльз тебе любезно подскажет)».
  3. Суёшь в доверенные сертификаты устройства тот самый корневой сертификат от Чарльза, чтобы он мог HTTPS читать. Без этого шага увидишь только абракадабру.
  4. Начинаешь тыкать в приложение и с диким интересом смотреть, как в окошке Чарльза появляются строчки. Первый раз — чистое волшебство.

Вот, смотри, как он запрос показывает, всё аккуратненько:

GET /api/v1/products?category=books HTTP/1.1
Host: api.store.com
Authorization: Bearer eyJhbGciOiJIUzI1NiIs...
User-Agent: Mozilla/5.0

И где это всё применять, кроме как для развлечения?

  • Тестирование API: Валидируешь, что запрос улетает именно в том формате, в котором договорились с бэкендерами. А то они потом говорят «у нас всё работает», а ты им — «на, блядь, смотри, что твой фронт на самом деле шлёт».
  • Отладка: Поймал в приложении ошибку? Быстро смотришь в Чарльзе — а что сервер в ответ прислал? Может, он тебе «404» или «500» отправил, а клиент это как-то криво обработал.
  • Безопасность: Проверяешь, не летят ли куда-нибудь в открытом виде пароли, токены или номера карт. Если летят — пиши баг-репорт с пометкой «Critical», ибо пидарасы налетят.
  • Производительность: Смотришь, не слишком ли жирные картинки или JSON-ы сервер отдаёт. Можно сразу и время отклика засечь.

Короче, Чарльз — это не просто инструмент, это, блядь, твои рентгеновские очки в цифровой мир. Сначала кажется сложно, а потом без него как без рук, в рот меня чих-пых.