Charles Proxy — що це, налаштування та перехоплення HTTPS трафіку

Автор: IT Sectr Опубліковано: 2026-05-08 Час читання: 8 хв

Charles Proxy — це кроссплатформений проксі-сервер для налагодження HTTP/HTTPS-трафіку, який використовується розробниками для перехоплення, перегляду та модифікації мережевих запитів. За даними Karl von Randow, творця інструменту (2025), Charles використовується більш ніж у 50 000 компаній по всьому світу з 2004 року. Проксі підтримує перехоплення трафіку з мобільних пристроїв через WiFi, HTTPS-проксіювання зі встановленням кореневого сертифіката та широкий набір інструментів для аналізу API.

Головне

  • Charles Proxy — це HTTP/HTTPS проксі-сервер для перехоплення та аналізу мережевого трафіку з розширеними можливостями налагодження
  • HTTPS-проксіювання реалізовано через встановлення кореневого сертифіката Charles на пристрій, що дозволяє переглядати зашифрований трафік
  • Rewrite та Breakpoints — потужні інструменти для модифікації запитів і відповідей на льоту без зміни коду сервера або клієнта
  • Map Local та Map Remote дозволяють підмінювати мережеві ресурси на локальні файли або альтернативні сервери для тестування
  • Throttle — імітація повільних та нестабільних мережевих з'єднань для перевірки поведінки додатка в умовах поганого зв'язку

Що таке Charles Proxy?

Charles Proxy — це HTTP-проксі та HTTP-монітор, який працює як посередник між клієнтом і сервером. Всі запити та відповіді проходять через Charles, що дозволяє переглядати їхній вміст, аналізувати структуру, змінювати дані в реальному часі та імітувати різні мережеві умови. Доступний для Windows, macOS та Linux.

Історія та позиціонування

Charles Proxy був створений у 2004 році Карлом фон Рендоу і залишається одним із найпопулярніших інструментів для налагодження мережевого трафіку. На відміну від безкоштовних альтернатив, Charles пропонує платну ліцензію з 30-денним пробним періодом. Інструмент позиціонується як професійне рішення для розробників мобільних додатків, веб-розробників та QA-інженерів, яким потрібен повний контроль над HTTP-комунікаціями.

Сумісність із платформами

Charles працює як системний проксі на комп'ютері та може перехоплювати трафік з будь-яких пристроїв в одній мережі: Android, iOS, симуляторів, емуляторів, веб-браузерів та IoT-пристроїв. Для перехоплення HTTPS необхідно встановити кореневий сертифікат Charles на кожен пристрій. Трафік підтримується на HTTP/1.1 та HTTP/2 (частково). HTTP/3 (QUIC) не підтримується на рівні перехоплення.

Як працює Charles Proxy

Charles працює за принципом MITM (Man-in-the-Middle) проксі: коли клієнт надсилає запит через Charles, інструмент перехоплює цей запит, перенаправляє на цільовий сервер, отримує відповідь і передає її назад клієнту. Весь трафік проходить через Charles, що дозволяє його аналізувати та модифікувати.

Архітектура проксіювання

При запуску Charles створює локальний HTTP-проксі на порту 8888 (за замовчуванням). Операційна система або додаток налаштовується на використання цього проксі. Всі HTTP-запити надсилаються спочатку на Charles, який потім діє як повноцінний клієнт для цільового сервера. Для HTTPS Charles використовує власну техніку SSL-проксіювання: він генерує сертифікат на льоту для кожного домену, підписаний кореневим сертифікатом Charles. Якщо кореневий сертифікат встановлено на пристрої як довірений, Charles може розшифровувати та переглядати HTTPS-трафік.

Режими роботи

Charles підтримує два режими: Proxy(класичний проксі-сервер) та SOCKS Proxy(для UDP та TCP-трафіку). Для веб-розробки використовується стандартний HTTP-proxy. Для мобільних пристроїв — налаштування WiFi Proxy на пристрої із зазначенням IP-адреси комп'ютера, на якому запущено Charles. macOS підтримує автоматичне налаштування проксі для симулятора iOS.

xml
<!-- Налаштування network_security_config.xml для Android з підтримкою Charles -->
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <debug-overrides>
        <trust-anchors>
            <!-- Довіряти сертифікату Charles у Debug-збірці -->
            <certificates src="user" />
        </trust-anchors>
    </debug-overrides>
</network-security-config>

Основні можливості Charles Proxy

Charles Proxy надає набір професійних інструментів для аналізу та модифікації трафіку, що виходить далеко за межі простого перехоплення запитів.

Rewrite та Breakpoints

Інструмент Rewrite дозволяє автоматично змінювати певні частини запитів або відповідей: заголовки, параметри URL, тіло відповіді. Наприклад, можна замінити заголовок User-Agent на значення від іншого пристрою або прибрати певні cookies. Breakpoints працюють як відладчик: запит зупиняється на вибраному етапі (перед надсиланням або перед отриманням), і розробник може вручну змінити його вміст до того, як він піде далі. Це корисно для тестування обробки помилкових відповідей або нестандартних станів.

Map Local та Map Remote

Map Local дозволяє підмінити мережевий ресурс (CSS, JS, JSON) на локальний файл з диска. Це незамінно при розробці фронтенду: можна змінювати CSS/JS і одразу бачити результат, не деплоячи на сервер. Map Remote перенаправляє запити з одного URL на інший — наприклад, з продакшен-сервера на staging для тестування. Обидва інструменти працюють за шаблонами URL з підтримкою wildcards.

Throttle та імітація мережевих умов

Інструмент Throttle дозволяє імітувати різні типи мережевих з'єднань за попередньо встановленими профілями: 3G, EDGE, GPRS, DSL, WiFi. Можна налаштувати обмеження швидкості (download/upload), latency, packet loss та stability. Це критично важливо для тестування поведінки додатка при повільному або нестабільному з'єднанні — правильна обробка таймаутів, повторні спроби, офлайн-режим.

ПрофільDownloadUploadLatencyТиповий сценарій
3G780 kbps330 kbps200 msТестування при слабкому мобільному сигналі
EDGE130 kbps50 kbps400 msЕкстремально повільне з'єднання
GPRS50 kbps20 kbps500 msМінімально можливе з'єднання
DSL2 Mbps256 kbps50 msДомашнє дротове з'єднання
WiFi10 Mbps10 Mbps10 msХороше WiFi-з'єднання

Auto Save та Recording

Charles може автоматично зберігати сесії трафіку у файли .chls, що дозволяє аналізувати їх пізніше або передавати колегам. Recording Control дозволяє гнучко налаштувати, який трафік зберігати: за доменами, за типами контенту, за статус-кодами. Це зручно для довгострокового моніторингу роботи API.

Налаштування Charles Proxy для мобільних пристроїв

Для налагодження трафіку мобільних додатків Charles налаштовується як WiFi Proxy: всі пристрої в одній мережі з комп'ютером можуть направляти трафік через Charles. Коректне налаштування HTTPS вимагає встановлення сертифіката Charles на мобільний пристрій.

Налаштування на Android

Для Android необхідно: відкрити Settings → WiFi → Advanced → Proxy, вибрати Manual та вказати IP-адресу комп'ютера з портом 8888. Після цього відкрити браузер на пристрої та перейти за адресою http://chls.pro/ssl для завантаження сертифіката Charles. На Android 7+ (API 24+) потрібен network_security_config.xml для довіри користувацьким сертифікатам у Debug-збірці — інакше додаток може не пропускати трафік через Charles.

Налаштування на iOS

Для iOS: Settings → WiFi → налаштувати проксі на IP та порт 8888. Потім Safari → http://chls.pro/ssl → встановити профіль сертифіката. В iOS 10.3+ необхідно додатково увімкнути довіру сертифікату: Settings → General → About → Certificate Trust Settings → увімкнути Charles Proxy. iOS більш суворий щодо сертифікатів: деякі додатки можуть використовувати SSL Pinning, блокуючи трафік через Charles навіть із довіреним сертифікатом.

Вирішення проблем із SSL Pinning

Якщо додаток використовує SSL Pinning(фіксацію сертифіката сервера), стандартне проксіювання через Charles не спрацює — додаток відхилить сертифікат Charles. Рішення: вимкнути SSL Pinning у Debug-збірці через налаштування OkHttp або URLSession, використовувати Frida для обходу pinning у runtime, або застосовувати Android Emulator з кореневим доступом.

Практичні сценарії використання Charles Proxy

Charles Proxy вирішує конкретні завдання розробки та тестування. Розглянемо найпоширеніші сценарії, де інструмент незамінний.

Налагодження інтеграції з API

Найпоширеніший сценарій — перевірка коректності API-запитів. Charles показує точний URL запиту, заголовки, тіло, параметри. Якщо сервер повертає неочікувану відповідь, одразу видно: структуру JSON, код помилки, заголовки відповіді. Це дозволяє відрізнити помилку на клієнті від помилки на сервері без логів з обох сторін.

Тестування з повільним з'єднанням

Використовуючи профілі Throttle, можна перевірити, як додаток поводиться при низькій швидкості з'єднання: чи відображається індикатор завантаження, чи коректно обробляється таймаут, чи не зависає UI при втраті з'єднання. Особливо важливо тестувати кешування — якщо дані вже завантажені, додаток повинен показувати їх з кешу, а не йти в нескінченне завантаження.

Редагування відповідей сервера

За допомогою Breakpoints можна змінити відповідь сервера перед його надсиланням додатку. Наприклад, повернути порожній масив замість даних, змінити статус-код на 500, додати в JSON нове поле. Це дозволяє перевірити обробку граничних випадків без модифікації серверного коду — один із найпотужніших застосунків Charles у мобільній розробці.

Часті запитання

Charles Proxy безкоштовний?

Charles Proxy є комерційним продуктом з 30-денним пробним періодом. Після закінчення пробного періоду програма продовжує працювати з перервою в 30 хвилин при кожному запуску. Вартість ліцензії — $50 за одну копію. Існують безкоштовні альтернативи, такі як Proxyman (macOS) та mitmproxy (кроссплатформений).

Чи можна перехоплювати трафік iOS симулятора?

Так, iOS симулятор автоматично використовує системний проксі macOS. Достатньо запустити Charles та увімкнути SSL-проксіювання — весь трафік симулятора буде перехоплено. Налаштування сертифіката для симулятора відбувається автоматично, потрібно лише довірити сертифікат Charles у зв'язці ключів macOS.

Чим Charles відрізняється від Proxyman?

Основні відмінності: Charles — кроссплатформений (Windows, macOS, Linux), Proxyman — тільки macOS та iOS. Charles має ширший набір інструментів (Rewrite, Map Local, Repeat, Auto Save), але платний. Proxyman — безкоштовний для базового функціоналу, з сучасним інтерфейсом та нативною інтеграцією з iOS-симулятором.

Як Charles Proxy впливає на продуктивність?

Charles додає затримку при проходженні трафіку через проксі, особливо при активному SSL-проксіюванні (дешифровка/зашифровка). На сучасних комп'ютерах затримка становить 5–15 мілісекунд на запит. Для тестів продуктивності рекомендується вимикати SSL-проксіювання для статики (CSS, JS, зображення) через Recording Control.

Як експортувати сесію з Charles?

Charles підтримує експорт у формати: .chls(власний, для повторного відкриття в Charles), HAR(HTTP Archive, відкривається в браузерах та інших інструментах), CSV(для обробки в Excel або таблицях), Trace(для експорту конкретного запиту в curl-сумісному форматі). Експорт через меню File → Export Session.

Підсумки

  • Charles Proxy — це професійний HTTP/HTTPS проксі-сервер для перехоплення, перегляду та модифікації мережевого трафіку з 2004 року
  • Принцип роботи — MITM-проксі: всі запити проходять через Charles, що дозволяє аналізувати та змінювати їх на льоту
  • Потужні інструменти: Rewrite, Breakpoints, Map Local, Map Remote, Throttle — для всебічного налагодження API та користувацького досвіду
  • HTTPS-проксіювання вимагає встановлення кореневого сертифіката Charles на пристрій, а для Android 7+ — network_security_config.xml у Debug-збірці
  • Throttle-профілі дозволяють імітувати 3G, EDGE, DSL та інші типи з'єднань для тестування поведінки додатка в реальних умовах
  • Експорт сесій у HAR, CSV та .chls формати для аналізу, звітності та передачі команді
  • Для проєктів з обмеженим бюджетом розгляньте безкоштовні альтернативи: Proxyman (macOS) або mitmproxy (кроссплатформений open-source)

Ми розробимо мобільний застосунок під ключ

IT Sectr створює застосунки для iOS та Android для стартапів і бізнесу з 2017 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.

Обговорити проект

Читайте також