Что это простыми словами

Charles Proxy — это программа-перехватчик, которая показывает, что приложение или сайт отправляет на сервер и что получает в ответ.

Аналогия: представьте почтальона, который стоит между вами и адресатом. Вы отправляете письмо, почтальон его перехватывает, читает содержимое, записывает всё в журнал и только потом передаёт дальше. Обратно то же самое. Charles делает это с интернет-запросами: встаёт посередине между приложением и сервером, записывает всю переписку и показывает её в удобном виде.

Это нужно, чтобы понять, что именно пошло не так, когда приложение работает неправильно: может, сервер вернул ошибку, а может, само приложение отправило неверные данные.

Официальное определение

Теперь, когда суть понятна, вот как Charles описывают в вакансиях и документации. Эту формулировку вы будете встречать у заказчика, в резюме и в речи тестировщиков и разработчиков — теперь вы понимаете, что за ней стоит.

«Charles Proxy — HTTP/HTTPS прокси-сервер для перехвата и анализа сетевого трафика между клиентом и сервером с возможностью модификации запросов, throttling и SSL proxying».

Разберём по словам. «HTTP/HTTPS» — протоколы, по которым браузеры и приложения общаются с серверами; HTTPS — защищённая версия. «Прокси-сервер» — посредник, который стоит между приложением и сервером. «Клиент» — это приложение или браузер на вашем устройстве. «Трафик» — данные, которые летают туда-сюда. «Модификация запросов» — Charles умеет не только смотреть, но и изменять данные на лету. «Throttling» — искусственное замедление соединения, чтобы проверить, как приложение работает на медленном интернете. «SSL proxying» — расшифровка защищённых HTTPS-соединений, чтобы видеть их содержимое.

Какую задачу решает

Когда приложение или сайт ломается, непонятно, где проблема: в самом приложении или на сервере. Приложение может отправить неверный запрос, а может сервер вернуть ошибку. Без Charles это чёрный ящик — ничего не видно.

Charles показывает всю переписку между приложением и сервером: какие данные ушли, что пришло в ответ, сколько времени это заняло, какой код ответа вернул сервер. Это позволяет точно понять, на каком этапе что-то пошло не так.

Ещё Charles умеет:

  • Изменять запросы и ответы на лету — например, подменить данные, чтобы проверить, как приложение отреагирует на ошибку.

  • Замедлять интернет, чтобы проверить, как приложение работает на плохой связи.

  • Перехватывать защищённые HTTPS-соединения — для этого нужна дополнительная настройка.

Это платная программа, но она стала стандартом в тестировании.

Кто им пользуется

Charles — это не язык программирования и не фреймворк, он ни к какому языку не привязан. Это рабочий инструмент нескольких ролей сразу:

  • QA Engineer (тестировщик) — основной пользователь. Проверяет, правильно ли приложение общается с сервером, воспроизводит баги, тестирует разные сценарии.

  • Backend-разработчик — проверяет, что сервер отдаёт правильные данные, отлаживает API.

  • Mobile-разработчик — смотрит, что приложение отправляет и получает, проверяет интеграцию с API.

  • Frontend-разработчик — реже, обычно пользуется встроенными инструментами браузера, но иногда и Charles тоже нужен.

Чаще всего Charles встречается в вакансиях тестировщиков — для них это повседневный рабочий инструмент.

Аналоги / чем заменяется

Charles решает ту же задачу, что и другие прокси-инструменты:

  • Fiddler — бесплатный аналог, популярен на Windows. Функционал похож.

  • Proxyman — современная альтернатива для macOS, удобный интерфейс.

  • mitmproxy — бесплатный, работает через командную строку, для продвинутых пользователей.

  • Встроенные инструменты браузера (DevTools) — показывают запросы, но только для веб-страниц, а не для мобильных приложений.

Переход между прокси-инструментами несложный: человек, который умеет работать с Charles, освоит Fiddler или Proxyman за несколько дней. Логика везде одна, отличается интерфейс.

Что не путать

  • Charles ≠ Postman. Postman создаёт запросы вручную и отправляет их на сервер — это инструмент для тестирования API. Charles перехватывает то, что уже летает между приложением и сервером — это инструмент для анализа. Они решают разные задачи, хотя обе связаны с тестированием.

  • Charles ≠ VPN. VPN шифрует весь ваш трафик и скрывает его от провайдера, а Charles наоборот расшифровывает его, чтобы вы могли посмотреть содержимое. Это противоположные задачи.

  • Charles ≠ язык программирования. Это готовая программа с графическим интерфейсом. Программировать для работы с Charles не нужно.

  • Charles ≠ DevTools браузера. DevTools встроены в браузер и показывают только то, что происходит на веб-странице. Charles работает на уровне всей системы и видит трафик любых приложений, включая мобильные.

Насколько это важно при отборе

Короткий ответ: важен не сам Charles, а умение анализировать сетевой трафик.

Если кандидат работал с Fiddler, Proxyman или даже просто с DevTools браузера и понимает, как устроено взаимодействие клиента и сервера, — он освоит Charles за неделю. Отсеивать хорошего тестировщика только потому, что в резюме указан не тот прокси-инструмент, — ошибка: логика у них общая.

А вот понимание HTTP и умение читать запросы/ответы — это базовые навыки для тестировщика API и мобильных приложений. Без них никакой инструмент не поможет. Если в резюме нет упоминаний о работе с сетевым трафиком, это серьёзный сигнал для вакансий, где тестируют взаимодействие с сервером.

Когда стоит обратить внимание именно на Charles: если команда уже работает на нём и нужен человек, который выйдет и сразу начнёт без обучения. Но чаще это желательное требование, а не обязательное — уточните у нанимающего менеджера.

Это общий ориентир. В разных компаниях требования отличаются, поэтому всегда сверяйтесь с текстом конкретной вакансии.