Что это простыми словами
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: если команда уже работает на нём и нужен человек, который выйдет и сразу начнёт без обучения. Но чаще это желательное требование, а не обязательное — уточните у нанимающего менеджера.
Это общий ориентир. В разных компаниях требования отличаются, поэтому всегда сверяйтесь с текстом конкретной вакансии.