Když jsem svůj krátkozraký příslib psal, právě končila zima a já si říkal, že se k článku a hlavně focení dostanu, sotvaže trošku vyleze sluníčko – zkrátka aby krabice vypadala co nejvíc sexy. Jenže jsem si nabral ukrutné množství práce, na krabici se mezitím snášel prach, já se uklidňoval, že ještě pořádně sluníčko nesvítí a že tedy není kam spěchat. Ale časem mi začínalo být jasné, že se k tomu asi nedohrabu. Teď už sluníčko nesvítí vůbec, začíná podzim a já se musím přiznat, že jsem hrozně líný něco o té krabici napsat. Kdybych měl víc času (a hlavně kdybych byl někdo jiný, někdo, kdo rád píše a najde si na to volnou chvíli), tak bych vám nadatloval stohy textu o tom, jak velká a potřebná změna ten přechod z PC byl. Ale jelikož já jsem já a já jsem líný až se hory zelenají, bude z toho prd.
No ale něco bych přeci jen měl: sem tam, když se objeví volná hodinka, bych vás rád seznámil se zajímavými programy, které ke své práci potřebuji a bez kterých bych se už asi neobešel. A kdybych byl já opravdu já, přesně v tomto okamžiku bych tento zápis ukončil, poklepal bych si na rameno, že jsem zase něco napsal a slíbil bych vám i sobě, že to co nejdřív dopíšu. Ale protože chci projednou překročit svůj stín, rovnou se vrhnu po nohou do prvního programu. A tím je… (ta da dá)

Cože? Charles? To je mi ale podivné jméno pro program, říkáte si asi. A to jste ještě neviděli jeho ikonku – vlastně tedy už viděli tady nalevo. Inu věřte, že Charles je jedním z nejdotaženějších programů, s jakými jsem měl tu čest kdy pracovat. A navíc není ani drahý – a lze jej docela dobře používat i jako trialware. A ta podivná ikonka s džbánkem z Karlových Varů je už jen navýsost vyladěná třešnička na dortu. Když začnete Charles používat (popravdě řekl bych, že vám bude téměř neustále běžet v minimalizované podobě), začnete se na ten květovaný džbánek těšit. Tedy rozhodně je to jedna z nejvíc nejoriginálnějších ikon, jaké jsem kdy viděl.
Ale zpět k funkcionalitě. Pokud děláte weby (a to asi děláte, protože jinak byste tento článek asi nečetli) – a pokud jsou ty weby navíc flashové, pravděpodobně jste se již dostali do situace, kdy jste potřebovali mít přehled o toku dat z a do vašeho prohlížeče. Zkrátka co, kdy a jak rychle se stahuje do počítače nebo cpe zpátky na internet. Prostě jak probíhá komunikace klient – server. Anebo jste jednoduše potřebovali nasimulovat pomalý modem, abyste mohli precizně vyladit ten děsně povedený flashový preloader, který jste právě připravili pro projekt, na kterém pracujete.
Na to všechno se Charles výborně hodí. Než jsem na něj narazil (ještě když jsem se řadil mezi uživatele platformy PC), sháněl jsem nějaký jednoduchý packet sniffer. nečekal jsem, že by někdo naprogramoval něco až tak dokonalého, co by mi dokázalo splnit všechny tužby (a dovolilo mi psát takové preloadery, jaké teď píšu, hehe). Původně by mi naprosto stačilo, kdyby sniffer ukazoval, jaké soubory se odkud tahají a jestli zrovna aplikace neposílá něco ven. Však to asi znáte, ve Flashi se moc chybových hlášek nedočkáte, všechny testy chyb si musíte naprogramovat sami.

Výchozí pohled na Charlese s jakýmsi výpisem z Q-city. Nahoře je stromová struktura z webu (tak jak jí Charles detekuje z odchozích požadavků), dole informace o vybraném záznamu.
Našel jsem Charlese. On to všechno umí. A mnohem, mnohem víc! Sedí jako proxy server mezi aplikací a internetem. Aplikace je zpravidla prohlížeč, flashový plugin (který vlastně využívá síťové funkce prohlížeče) nebo jakýkoliv program, takže např. i multiplayer hra, klientská aplikace pro přehrávání internetového rádia nebo třeba nějaká věc napsaná v Adobe AIR.
Charles je schopen tuto komunikaci dekódovat. Proti packet snifferu se liší tím, že nedekóduje vše, co chodí z a na síťovou kartu (tzn. všechny protokoly), ale pouze protokoly HTTP a HTTPS (případně tyto protokoly visící na jiném portu, než na jaký jsou stavěné – 80, resp. 443). Charles tuto komunikaci zachytává a loguje, analyzuje a filtruje její obsah a počítá podrobné statistiky. Ve výsledcích můžete vyhledávat, můžete je filtrovat a třídit.
To všechno samozřejmě umí i jiné sniffery, Charles se ale liší jedním (obzvláště pro flashaře) důležitým detailem: umí dekódovat AJAX, XMLHTTP, SOAP a AMF komunikaci. SOAP používá Microsoft ve svých WebServices, AMF0 a AMF3 je remotingový standard původně od Adobe. Charles také analyzuje HTML, JS a CSS soubory, dokáže zobrazit obrázky, které jsou stahovány, ukáže vám metadata SWF a FLV souborů. Umí i několik video formátů.

Analýza SOAP záznamu. Všechny položky jsou editovatelné.
Výše zmíněné SOAP a AMF záznamy dokáže procházet a dokonce editovat. Můžete tak jednotlivé příkazy zopakovat, aby na ně některá strana znovu zareagovala. Tak můžete ladit některé těžce dosažitelné kritické situace. Příkazy můžete ukládat na disk a opět načíst.
Velmi jsem si oblíbil funkci mapování lokálních serverů na servery virtuální. Pokud máte někde na lokálu web http://localhost/mujweb, jednoduše si ho můžete přesměrovat na http://mujweb.cz. Dokud Charles běží, všechny vaše dotazy na mujweb.cz jsou přesměrovány na web server běžící na vašem počítači. Deployment je pak o poznání jednodušší, protože si např. můžete napevno nastavit adresy pro flashový remoting uvnitř vaší flashové aplikace (nebo lépe v jejích konfiguračních souborech).

Nastavení simulace modemu (vlevo) a mapování lokálních serverů.
Jak jsem již řekl, Charles umí zpomalovat komunikaci, dokáže tak simulovat pomalé modemy. Může být použit jako proxy pro celou vaší síť (užitečné je to např. pokud potřebujete ladit na více počítačích najednou – já tak například ladil Q-city). Velmi jednoduše lze nastavit blacklisty na některé adresy – a to i pomocí masek. Výborná funkce je vynucení vypnutí cachování všech souborů v prohlížeči. Tak lze obejít známý problém Flashe, kdy se SWF soubory zpravidla cachují vždy a cache je pak nutno vymazávat ručně (nebo jí v prohlížeči vypnout).
A to nejlepší nakonec: jak jsem již psal, je velice dobře použitelný i v neregistrované verzi (musíte občas odkliknout otravné okénko) a je k dispozici pro Mac OS X, Windows i Linux.

Charles se sekvenčním výpisem.

Detaily jednoho záznamu.

Profilování požadavku.

Další profilování požadavku.
Václav Vančura 10. září 2007, 13:16
První! :)
Roman 2. října 2007, 19:29
Druhý