Auch wenn es für mich als Softwaretester nicht im Fokus steht, die Ursache von Problemen herauszubekommen, ist es aber beim Testen von Webseiten immer wieder wichtig die eigentliche Datenkommunikation auswerten zu können. Hierzu gibt es verschiedene Tools, die den Netzwerkverkehr mitschneiden und damit analysierbar machen.
Ich möchte hier das Tool Fiddler Everywhere vorstellen, da dies für meine Arbeit mit Webseiten und Webservices ein leicht zu verstehendes und hilfreiches Werkzeug war. Auch gerade für die Analyse von HTTPS-Verbindungen, die sich inzwischen als Standard durchgesetzt haben.
Ansatz von Fiddler
Der PC, auf dem Fiddler installiert wird, muss die Datenpakete erhalten, die sonst direkt zwischen den Kommunikationspartnern ausgetauscht werden. Hier nutzt Fiddler die Möglichkeit eines Proxys, der in den Einstellungen des Client-PCs gesetzt wird. Damit wird der gesamte Datenverkehr über diesen Fiddler-Proxy gelenkt, der diese Datenpakete in der Oberfläche anzeigt.
Dies ist sehr einfach für unverschlüsselte HTTP-Verbindungen möglich, für HTTPS-Verbindungen gibt sich Fiddler als Man-In-The-Middle aus, d.h. es kann durch die verwendeten self-signed Zertifikate die verschlüsselten Verbindungen dekodieren und somit lesbar machen.
Somit kann eine Fiddler-Installation recht schnell und einfach in das Netzwerk integriert werden, ohne die Infrastruktur zu verändern oder andere Abhängigkeiten zu besitzen.
Erste Schritte
Einrichtung Fiddler
Die Installation unter Windows und macOS gestaltet sich über ein sehr einfaches Installationsprogramm. Das Setup kann ohne Änderung an den Standardwerten durchgeführt werden. Eine alternative Installation unter Linux wäre möglich, wurde aber bisher von mir nicht vorgenommen.
Die Konfiguration innerhalb des Programmes beschränkt sich auf einige wenige Punkte. So ist das vertrauenswürdige Root-Zertifikat zu installieren, das Mitschneiden des HTTPS-Datenverkehrs zu aktivieren, den Port zu definieren und die Erlaubnis, eine Verbindung von Remote-Computern zuzulassen, zu setzen. Nun muss nur noch die eigene IP Adresse ermittelt werden und die Einrichtung des Clients kann erfolgen.
Einrichtung Client
Entweder in den Betriebssystem Netzwerkeinstellungen oder auch in der Applikation (z.B. Firefox) sind die Proxyserver für HTTP- und HTTPS-Verbindungen zu setzen. Hier ist die IP-Adresse mit der Fiddler-Installation und der in Fiddler konfigurierte Port anzugeben.
Für das Auslesen von HTTPS-Verbindungen muss noch zusätzlich das Fiddler-Root-Zertifikat installiert werden. Dies erfolgt über die URL http://ipv4.fiddler:[Ihr Proxy-Port] und je nach Betriebssystem weiteren Konfigurationen in der Zertifikatsverwaltung bzw. Netzwerkeinstellungen. Sind diese korrekt durchgeführt, können nun auch HTTPS-Verbindungen aufgebaut werden und der PC mit Fiddler schneidet diese nun mit.
Einsatzbeispiel
Es lassen sich alle Datenpakete, die zwischen dem Client PC und x-beliebigen Seiten stattfinden, mitschneiden. Anhand der Webseite httpvshttps.com lässt sich gut zeigen wie Fiddler eingesetzt werden kann. Die Seite kann entweder als HTTP oder HTTPS Variante aufgerufen werden.
Für meinen Test habe ich dies jeweils 1x durchgeführt. Jeder Aufruf hat jeweils ca. 400 Datenpakete verursacht, die in Fiddler erscheinen. Der Überwiegende Teil der Kommunikation fand direkt mit der Webseite statt, aber auch teilweise mit eingebetteten Inhalten, wie Twitter, Google und Facebook, die gar nicht offensichtlich auf der Seite erscheinen. Filtere ich nun nach dem Protokoll HTTP und den Host httpvshttps.com bleiben 363 Pakete übrig. Filtere ich weiter nach check.png in der URL erhalte ich 360 Pakete. Genauso viele Bilder lädt die Webseite nach ihrer Beschreibung herunter.
Möchte ich nun aber die eigentliche HTML Seite erhalten, muss ich den URL-Filter “does not contain” check.png verwenden und erhalte u.a. ein Datenpaket, das in der URL nur ein “/” stehen hat. Hier lässt sich der HTML-Seiteninhalt im Response Text einsehen (siehe Screenshot).