Wie kann ich Charles Proxy automatisiert über die Kommandozeile steuern?

Melden
  1. Grundlagen zur Kommandozeilensteuerung von Charles Proxy
  2. Starten von Charles mit Kommandozeilenparametern
  3. Automatisierung durch Charles Scripting API und External Proxy Steuerung
  4. Verwendung von Charles CLI für Sessions und FTP Export
  5. Alternative Automatisierungsansätze: UI-Automatisierung und Integration mit CI/CD
  6. Fazit

Charles Proxy ist ein weit verbreitetes Tool zur HTTP- und HTTPS-Analyse, das typischerweise über eine grafische Benutzeroberfläche bedient wird. Für einige Anwendungsfälle, besonders wenn es um automatisierte Abläufe oder Integration in Skripte geht, stellt sich die Frage, wie man Charles Proxy über die Kommandozeile steuern kann.

Grundlagen zur Kommandozeilensteuerung von Charles Proxy

Charles Proxy bietet keine vollständige native Kommandozeilenschnittstelle (CLI), wie man es von manchen anderen Proxy- oder Netzwerktools kennt. Allerdings kann man bestimmte Funktionen über die Kommandozeile aufrufen und Charles über Automatisierungsschnittstellen oder Skripte steuern. Charles bringt eine Art "Headless" Modus mit und unterstützt das Starten mit vordefinierten Konfigurationen, was die automatisierte Nutzung erleichtern kann.

Starten von Charles mit Kommandozeilenparametern

Charles kann über das Terminal mit verschiedenen Parametern gestartet werden, zum Beispiel um direkt eine Aufzeichnung zu beginnen, ein Session-File zu laden oder mit einem bestimmten Proxy-Port zu starten. Unter macOS oder Linux wird die ausführbare Datei meist über den Pfad

/Applications/Charles.app/Contents/MacOS/Charles bzw. unter Windows über die ausführbare Datei in Charles.exe angesprochen.

Beispiel für das Starten und direktes Aufzeichnen einer Session könnte so aussehen:

Charles --record

Wobei die genaue Parametrierung je nach Version unterschiedlich sein kann. Es lohnt sich, Charles --help oder die Dokumentation zu prüfen, um unterstützte Optionen zu erfahren.

Automatisierung durch Charles Scripting API und External Proxy Steuerung

Um Charles stärker automatisiert steuern zu können, existiert eine sogenannte Charles Scripting API, die allerdings nur teilweise dokumentiert ist und meist über sogenannte Charles External Proxy Schnittstellen eingesetzt wird. Dabei handelt es sich um eine Möglichkeit, Charles über eine TCP-Schnittstelle oder WebSocket-Verbindung zu steuern, wobei man z.B. das Starten und Stoppen von Aufzeichnungen, Setzen von Breakpoints, Manipulation von Requests/Responses und Extrahieren von Sessions automatisiert auslösen kann.

Diese API ist jedoch nicht direkt über das Terminal steuerbar, sondern man muss hierfür ein externes Skript oder Programm schreiben (z.B. in Python, Node.js oder Java), das die Steuerungsbefehle an Charles sendet. Die Scripts kommunizieren dann über eine TCP-Client-Verbindung mit Charles, welcher einen Steuerungsport öffnet. Oft muss man eingestellt haben, dass Charles auf einem bestimmten Port für diese externe Steuerung lauscht.

Verwendung von Charles CLI für Sessions und FTP Export

Ein nützliches Feature von Charles ist die Möglichkeit, aufgezeichnete Sessions auch per Kommandozeile zu bearbeiten oder zu exportieren. Beispielsweise kann man aufgezeichnete Session-Dateien (.chls) ohne GUI in andere Formate wie HAR oder XML konvertieren. Dies erfolgt meist über das Kommandozeilen-Tool charles, das mit Charles Proxy installiert wird.

Ein Beispielaufruf, um eine Session ins HAR-Format zu konvertieren, sieht so aus:

charles -export har -input session.chls -output session.har

Diese Funktion ist vor allem hilfreich in Automatisierungspipelines, um Daten weiterzuverarbeiten. Die volle Dokumentation hierzu findet sich in den Charles Release Notes oder dem Entwicklerhandbuch.

Alternative Automatisierungsansätze: UI-Automatisierung und Integration mit CI/CD

Wenn keine direkten CLI-Befehle für eine gewünschte Steuerung vorhanden sind, kann man auf Anwendungen zur UI-Automatisierung zurückgreifen, wie etwa AppleScript unter macOS, AutoHotkey unter Windows oder durch Tools wie Sikuli, um Charles über seine grafische Oberfläche zu steuern. Dabei werden Maus- und Tastaturaktionen simuliert, um zum Beispiel das starten/stoppen der Aufzeichnung oder das Laden von Session-Files zu automatisieren.

Für den Einsatz in Continuous Integration / Continuous Deployment (CI/CD) Umgebungen empfehlen sich oft automatisierte Skripte, die via Charles CLI Session Files erzeugen und anschließend exportieren können, um Nutzungsszenarien wie API-Testing mit Proxy-Unterstützung umzusetzen.

Fazit

Während Charles Proxy über keine vollständige native Command-Line Interface mit umfangreicher Steuerbarkeit verfügt, bietet es doch verschiedene Möglichkeiten zur Automatisierung. Dazu zählen das Starten mit Parametern, die Nutzung der externen Steuerungs-API (TCP-Schnittstelle), Skripte zur Automatisierung oder die Verarbeitung von Session-Dateien über den Charles CLI-Export. Je nach Anforderung können diese Ansätze kombiniert werden, um Charles in automatisierte Workflows einzubinden. Für tiefere Steuerung lohnt sich zudem die Recherche zu den aktuellen API-Möglichkeiten und der Nutzung von UI-Automatisierungstools.

0

Kommentare