Charles Proxy — вишеплатформски прокси сервер за отклањање грешака у HTTP/HTTPS саобраћају, који програмери користе за пресретање, преглед и модификацију мрежних захтева. Према подацима Karl von Randow, творца алата (2025), Charles се користи у преко 50.000 компанија широм света од 2004. године. Прокси подржава пресретање саобраћаја са мобилних уређаја преко WiFi-ја, HTTPS проксирање са инсталацијом коренског сертификата и широк скуп алата за анализу API-ја.
Главно
Charles Proxy — HTTP прокси и HTTP монитор који ради као посредник између клијента и сервера. Сви захтеви и одговори пролазе кроз Charles, што омогућава преглед њиховог садржаја, анализу структуре, измену података у реалном времену и симулацију различитих мрежних услова. Доступан за Windows, macOS и Linux.
Charles Proxy је створио 2004. године Karl von Randow и остаје један од најпопуларнијих алата за отклањање грешака у мрежном саобраћају. За разлику од бесплатних алтернатива, Charles нуди плаћену лиценцу са 30-дневним пробним периодом. Алат је позициониран као професионално решење за програмере мобилних апликација, веб-програмере и QA инжењере којима је потребна потпуна контрола над HTTP комуникацијама.
Charles ради као системски прокси на рачунару и може пресретати саобраћај са било којих уређаја у истој мрежи: Android, iOS, симулатора, емулатора, веб-прегледача и IoT уређаја. За пресретање HTTPS-а потребно је инсталирати коренски сертификат Charles-а на сваки уређај. Саобраћај је подржан на HTTP/1.1 и HTTP/2 (делимично). HTTP/3 (QUIC) није подржан на нивоу пресретања.
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 симулатор.
<!-- Подешавање 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 пружа скуп професионалних алата за анализу и модификацију саобраћаја који далеко превазилази једноставно пресретање захтева.
Алат Rewrite омогућава аутоматску измену одређених делова захтева или одговора: заглавља, URL параметре, тело одговора. На пример, можете заменити заглавље User-Agent вредношћу са другог уређаја или уклонити одређене колачиће. Breakpoints раде као отклањач грешака: захтев се зауставља на изабраној фази (пре слања или пре примања), а програмер може ручно изменити његов садржај пре него што настави даље. Ово је корисно за тестирање обраде грешака или нестандардних стања.
Map Local омогућава замену мрежног ресурса (CSS, JS, JSON) локалном датотеком са диска. Ово је незаменљиво при развоју фронтенда: можете мењати CSS/JS и одмах видети резултат без постављања на сервер. Map Remote преусмерава захтеве са једног URL-а на други — на пример, са продукционог сервера на staging за тестирање. Оба алата раде на основу URL шаблона са подршком за wildcards.
Алат Throttle омогућава симулацију различитих типова мрежних веза по унапред подешеним профилима: 3G, EDGE, GPRS, DSL, WiFi. Могуће је подесити ограничење брзине (download/upload), кашњење, губитак пакета и стабилност. Ово је критично за тестирање понашања апликације при спорој или нестабилној вези — правилна обрада тајмаута, поновни покушаји, офлајн режим.
| Профил | Download | Upload | Кашњење | Типичан сценарио |
|---|---|---|---|---|
| 3G | 780 kbps | 330 kbps | 200 ms | Тестирање са слабим мобилним сигналом |
| EDGE | 130 kbps | 50 kbps | 400 ms | Екстремно спора веза |
| GPRS | 50 kbps | 20 kbps | 500 ms | Минимална могућа веза |
| DSL | 2 Mbps | 256 kbps | 50 ms | Кућна жичана веза |
| WiFi | 10 Mbps | 10 Mbps | 10 ms | Добра WiFi веза |
Charles може аутоматски сачувати сесије саобраћаја у .chls датотеке, што омогућава каснију анализу или дељење са колегама. Recording Control омогућава флексибилно подешавање који саобраћај треба сачувати: по доменима, типовима садржаја, статусним кодовима. Ово је згодно за дугорочно праћење рада API-ја.
За отклањање грешака у саобраћају мобилних апликација, Charles се подешава као WiFi Proxy: сви уређаји у истој мрежи са рачунаром могу усмеравати саобраћај кроз Charles. Исправно подешавање HTTPS-а захтева инсталацију Charles сертификата на мобилни уређај.
За Android потребно је: отворити Settings → WiFi → Advanced → Proxy, изабрати Manual и унети IP адресу рачунара са портом 8888. Затим отворити прегледач на уређају и отићи на адресу http://chls.pro/ssl за преузимање Charles сертификата. На Android 7+ (API 24+) потребан је network_security_config.xml за поверење корисничким сертификатима у Debug издању — у супротном апликација можда неће пропуштати саобраћај кроз Charles.
За 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 (фиксирање сертификата сервера), стандардно проксирање кроз Charles неће радити — апликација ће одбити Charles сертификат. Решења: искључити SSL Pinning у Debug издању кроз поставке OkHttp или URLSession, користити Frida за заобилажење pinning-а у runtime-у, или применити Android Emulator са роот приступом.
Charles Proxy решава конкретне задатке развоја и тестирања. Размотримо најчешће сценарије у којима је алат незаменљив.
Најчешћи сценарио — провера исправности API захтева. Charles показује тачан URL захтева, заглавља, тело, параметре. Ако сервер врати неочекивани одговор, одмах се виде: JSON структура, код грешке, заглавља одговора. Ово омогућава разликовање грешке на клијенту од грешке на серверу без логова са обе стране.
Коришћењем Throttle профила, може се проверити како се апликација понаша при ниској брзини везе: да ли се приказује индикатор учитавања, да ли се тајмаут исправно обрађује, да ли се UI замрзава при губитку везе. Посебно је важно тестирати кеширање — ако су подаци већ учитани, апликација треба да их прикаже из кеша, а не да уђе у бесконачно учитавање.
Помоћу Breakpoints-а можете изменити одговор сервера пре него што буде послат апликацији. На пример, вратити празан низ уместо података, променити статусни код на 500, додати ново поље у JSON. Ово омогућава проверу обраде граничних случајева без модификације кода сервера — једна од најмоћнијих примена Charles-а у мобилном развоју.
Често постављана питања
Charles Proxy је комерцијални производ са 30-дневним пробним периодом. Након истека пробног периода, програм наставља да ради са паузом од 30 минута при сваком покретању. Цена лиценце је 50$ за једну копију. Постоје бесплатне алтернативе, као што су Proxyman (macOS) и mitmproxy (вишеплатформски).
Да, iOS симулатор аутоматски користи системски прокси macOS-а. Довољно је покренути Charles и укључити SSL проксирање — сав саобраћај симулатора биће пресретнут. Подешавање сертификата за симулатор се дешава аутоматски, потребно је само веровати Charles сертификату у привеску кључева macOS-а.
Главне разлике: Charles је вишеплатформски (Windows, macOS, Linux), Proxyman — само macOS и iOS. Charles има шири скуп алата (Rewrite, Map Local, Repeat, Auto Save), али је плаћен. Proxyman је бесплатан за основну функционалност, са модерним интерфејсом и изворном интеграцијом са iOS симулатором.
Charles додаје кашњење при проласку саобраћаја кроз прокси, посебно при активном SSL проксирању (дешифровање/шифровање). На модерним рачунарима кашњење износи 5–15 милисекунди по захтеву. За тестове перформанси препоручује се искључивање SSL проксирања за статичке ресурсе (CSS, JS, слике) путем Recording Control-а.
Charles подржава извоз у формате: .chls (сопствени, за поновно отварање у Charles-у), HAR (HTTP Archive, отвара се у прегледачима и другим алатима), CSV (за обраду у Excel-у или табелама), Trace (за извоз конкретног захтева у curl-компатибилном формату). Извоз кроз мени File → Export Session.
Закључак
Развићемо мобилну апликацију под кључ
IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.
Прочитајте такође