Charles – das Icon ist aus unerfindlichen Gründen eine reich verzierte Milchkanne, wie sie unsere Grossmütter gerne nutzen würden – gehört zu den Netzwerkutilities. Das ist eine Programmkategorie, für die ich, wie hier festgestellt, eine gewisse Schwäche habe. Warum dem so ist, bleibt mir selbst ein Rätsel. Mir fehlen sowohl Zeit als auch Fachkenntnisse, um mich im Detail damit auseinanderzusetzen, was sich auf dem Netzwerkkabel oder der WLAN-Schnittstelle im Detail tut. Und eigentlich bin ich zufrieden, wenn die richtigen Daten in ausreichendem Tempo bei mir ankommen.

180913-charles-01.png
Milch. (In Form von HTTP-Kommunikation.)

Doch dann passiert es wieder, und mich packt der Rappel. Dann möchte ich doch genauer wissen, was sich hinter der Benutzeroberfläche meiner Betriebssyteme und der Programme abspielt – und was dieses oder jenes Programm genau treibt. Und dabei hilft Charles. Das Programm nennt sich selbst einen HTTP-Proxy Schrägstrich HTTP Monitor. Der Proxy dokumentiert die HTTP-Anfragen der Browser und Apps und die Antworten, die aus dem Internet zurückkommen. Der Monitor überwacht diesen Datenverkehr und ermöglicht es, nicht nur die Metadaten, sondern auch den Inhalt des Datenverkehrs zu analysieren.

Stellt sich die Frage nach dem Sinn und Zweck: Geht es um die Befriedigung ungezügelter Neugierde? Der Hersteller beschreibt den Daseinszweck seiner App mit dem Bedürfnis von Entwicklern, das Kommunikationsverhalten ihrer Anwendungen analysieren:

In Web and Internet development you are unable to see what is being sent and received between your web browser / client and the server. Without this visibility it is difficult and time-consuming to determine exactly where the fault is. Charles makes it easy to see what is happening, so you can quickly diagnose and fix problems.

Charles makes debugging quick, reliable and advanced; saving you time and frustration!

Das ist selbstverständlich wichtig: Als Entwickler muss sehen, ob die Informationen so ausgetauscht werden, wie das beabsichtigt ist. Und wenn etwas schief geht, braucht man Instrumente für die Fehlersuche. Doch natürlich ist das nicht die ganze Wahrheit. Man kann mit Charles auch fremden Anwendungen hinterherschnüffeln. Das Stichwort Reverse Engineering liegt einem auf der Zunge: Wenn man herausfinden will, wie eine Anwendung mit einem Server kommuniziert, weil man ebenfalls mit dem fraglichen Server kommunizieren möchte, dann hilft Charles weiter. Zumindest, wenn die Schnittstellen, die man würde verwenden wollen, nicht ausreichend gut dokumentiert sind. Ich habe es mal mit meinem Programm Clickomania probiert: Das übermittelt Resultate an meine Website (hier). Und wenn man nun herausfinden möchte, wie das geschieht, dann könnte Charles weiterhelfen. (Ich habe den Aufruf selbst, mit dem das Resultat an den Server übermittelt wird, im Log aber nicht gefunden. Vielleicht, weil ich nicht gut genug gesucht habe. Oder weil er Charles entgangen ist.) Ich nehme an, Leute, die ab und zu versuchen, gefälschte Resultate in die Online-Rangliste einzuschmuggeln, haben ein Programm wie Charles im Einsatz. Das kann nämlich auch Aufrufe mit veränderten Parametern simulieren oder Aufrufe manipulieren.

Beeindruckend an Charles ist, dass das Programm seinen Dienst sofort aufnimmt, ohne dass man an der Netzwerkkonfiguration hätte herumfingern oder irgendwelche ekligen Treiber installieren müssen. Charles bildet unter Structure zu den einzelnen Servern auch die Verzeichnisse ab und zeigt Stylesheets, Bilder, HTML-Dateien, und was es in der grossen, weiten Welt des Webdesigns sonst noch so für Ressourcen und Mime-Types gibt. Unter Overview sieht man die Details zum Aufruf, unter Summary die Ladereihenfolge und unter Chart die Statistiken zur zeitlichen Abfolge, zu den Dateigrössen, Typen und zum Datenfluss. Im Menü Tools finden sich die Werkzeuge, mit denen in den Datenverkehr eingegriffen werden kann. Und via File > Save Session speichert man die gesammelten Daten, um sie in Ruhe durchforsten zu können. Die Sequence-Ansicht zeigt die Aufrufe in der Reihenfolge, also den Live-HTTP(S)-Datenverkehr.

180913-charles-02.png
HTTPS ist (erst einmal) das Äquivalent zu der sauren Milch.

Stellt sich natürlich die Frage: Was ist bei verschlüsseltem Datenverkehr? Normalerweise sieht man dann nur verschlüsselten Verkehr, der, wie im Fall von Nerdfunk.ch, einen Hinweis auf Let’s encrypt enthält. Man kann auch verschlüsselten Verkehr analysieren, wenn man Charles als man-in-the-middle HTTPS proxy aufsetzt. Das habe ich nicht ausprobiert, weil reine Neugierde es IMHO nicht rechtfertigt, SSL-Zertifikate zu installieren, die ich ansonsten nicht brauche – das ist ein Sicherheitsrisiko, dass ich auf meinem Alltagsrechner sicherlich nicht eingehe.

Fazit: Charles ist eine jener Apps, die ich nicht wirklich brauche, die ich aber noch so gerne in meinem Fundus habe. Es gibt sie für Windows, Mac und Linux, eine 30-Tage-Testversion ist verfügbar. Die Lizenz kostet 50 US-Dollar.

Interessanterweise gibt es Charles auch als App fürs iPhone und iPad (9 Franken), die nicht nur eine Überwachung der Browser-Aktivitäten, sondern auch der anderen Apps zulässt. Dass das mit iOS möglich ist, überrascht mich ein bisschen – ich hätte gedacht, dass Apples Sandbox das nicht zulässt. Aber man lernt nie aus. Und man erkennt auch immer wieder aufs Neue, wie wichtig die Verschlüsselung doch ist…