Die Bedeutung von Debugging und geeignete Tools
Eine der grundlegenden Fähigkeiten für Softwareentwickler und Systemadministratoren ist das Debuggen von Anwendungen, APIs oder Diensten. Die Kenntnis der richtigen Werkzeuge ist dabei von unschätzbarem Wert.
Was genau ist Debugging?
Das Konzept des Debuggens ist nicht neu und kann mit der Arbeit von Detektiven in Kriminalfilmen verglichen werden. Debugging ist ein Prozess, der verschiedene Methoden und Ansätze erfordert. Es ist das systematische Identifizieren und Beheben von Problemen und Fehlern in einem Programm.
Darüber hinaus beseitigt Debugging alle Probleme, die den korrekten Betrieb einer Software oder, in diesem Fall, einer Webanwendung verhindern könnten. Der Prozess des Debuggens einer API oder Webanwendung beinhaltet in erster Linie den Versuch, das Problem zu reproduzieren.
Hieraus ergibt sich die Notwendigkeit, eine API-Anfrage zu versenden. Genau hier liegt oft das Problem. Die meisten Browser schränken die Möglichkeit ein, den Ursprungs-Header oder auch die URL-Größe zu verändern.
Mit anderen Worten, um ein Problem zu reproduzieren, ist möglicherweise eine gewisse HTTP-Manipulation erforderlich. Dies wiederum macht leistungsstarke Debugging-Tools unerlässlich.
Der gesamte Debugging-Prozess umfasst verschiedene Komponenten oder Methoden:
- Interaktives Debuggen
- Kontrollflussanalyse
- Unit-Tests
- Integrationstests
- Logfile-Analyse
- Überwachung
- Speicherdumps
- Profilierung
Es ist nützlich zu wissen, dass viele HTTP-Clients, wie beispielsweise Webbrowser, eingebaute Webentwickler-Tools anbieten. Diese Tools können zum Debuggen von APIs verwendet werden. Daher ist es oft nicht nötig, eigene Debugging-Tools zu entwickeln.
Was ist ein HTTP-Client?
Nehmen wir an, Sie möchten ein System entwickeln, das das HTTP-Protokoll für verteilte Kommunikation verwendet, oder ein HTTP-fähiges System wie eine Webanwendung. Dann ist die HTTP-Client-Komponente relevant.
Das Hypertext Transfer Protocol (HTTP) ist die Grundlage für die Kommunikation und Datenübertragung im Internet, wenn Sie eine URL eingeben. Es ist ein Anwendungsprotokoll, das das Surfen im Internet ermöglicht.
Ein HTTP-Client ist ein System, das Anfragen im HTTP-Textformat an einen Server sendet und von diesem Server eine Antwort empfängt.
Es ist wichtig, den Unterschied zwischen einem HTTP-Client und einem HTTP-Server zu verstehen.
Unterschiede zwischen HTTP-Client und -Server
Während HTTP-Clients in der Regel Webbrowser oder Dienstprogramme sind, fungieren HTTP-Server als Vermittler für Anwendungsserver.
Einfach ausgedrückt: Smartphones, Fernseher, Spielekonsolen und alle Geräte, die eine Internetverbindung herstellen können, verwenden wahrscheinlich einen HTTP-Client.
Der HTTP-Server ist der Netzwerkcomputer, mit dem sich der HTTP-Client verbindet. Die Beziehung zwischen ihnen ist dialogartig: Der HTTP-Client sendet eine Anfrage, und der HTTP-Server antwortet.
Beispiele für HTTP-Anfragen
Anfrage | Ergebnisse |
GET | Fordert die gesamte Ressource an |
HEAD | Fordert eine Ressource ohne Inhalt an |
POST | Fügt Daten zu einer vorhandenen Webressource hinzu |
PUT | Ändert eine vorhandene Webressource |
DELETE | Entfernt eine spezifische Ressource |
TRACE | Zeigt die Änderungen einer Webressource an |
OPTIONS | Zeigt die verfügbaren HTTP-Methoden für eine URL an |
CONNECT | Konvertiert die Verbindungsanfrage in einen transparenten TCP/IP-Tunnel |
PATCH | Ändert eine Webressource teilweise |
Web-Debugging ist heutzutage einfacher denn je. Mit den richtigen Werkzeugen können Sie entspannt Ihrer Arbeit nachgehen.
HTTPie
Das Hauptziel von HTTPie ist es, die Interaktion mit Webdiensten über die Kommandozeile benutzerfreundlicher zu gestalten. Dieses Tool bietet einen HTTP-Befehl zum Versenden von Anfragen mithilfe einer natürlichen Syntax.
HTTPie kann zum Debuggen, Testen und zur Verbindung mit HTTP-Servern verwendet werden. Es unterstützt HTTP, HTTPS und Proxys.
Wichtige Merkmale:
- Integrierte JSON-Unterstützung
- Installierbar unter Windows, macOS und Linux
- Benutzerdefinierte HTTP-Header und Methoden
- Formulare übermitteln
- Offline-Modus
- Basis- und Digest-Authentifizierung
- Intuitive Syntax
Sie möchten HTTPie nicht lokal installieren? Kein Problem, es ist auch online nutzbar.
Fiddler
Fiddler ist ein plattformübergreifender Web-Debugging-Proxy. Es hilft bei der Manipulation von Websitzungen, der Überprüfung von HTTPS-Datenverkehr und der Überwachung des Datenverkehrs zwischen Ihrem Computer und dem Internet.
Fiddler kann unter Windows, macOS und Linux installiert werden und ist ein sehr beliebtes Tool zum Debuggen des Datenverkehrs.
RESTer
RESTer ist als Erweiterung für Google Chrome und Firefox verfügbar.
Wichtige Merkmale:
- Autorisierungs-Header mit Basic- oder Auth2-Authentifizierung
- Anzeige des Anforderungsverlaufs
- Ausführen von Anfragen mit verschiedenen Methoden, URLs, Texten und benutzerdefinierten Headern
- Testen und Debuggen von APIs
Paw
Paw ist ein voll funktionsfähiger HTTP-Client, mit dem Sie alle Arten von HTTP-Anfragen senden können. Mit Paw können Sie Ihre APIs testen und neue erkunden.
Paw wurde exklusiv für macOS entwickelt und bietet benutzerfreundliche Funktionen. Sie können Swagger, RAML usw. importieren und generieren, und es unterstützt das JSON-Schema.
Wichtige Merkmale:
- Unterstützt verschiedene Authentifizierungsarten wie Basic, OAuth, Hawk und Digest
- Dynamische Werte
- Umgebungen
- Erweiterbar durch JavaScript-basierte Erweiterungen
- Cookies und Sitzungsmanipulation
Requester
Requester ist ein vielseitiger Client, der Funktionen von HTTPie, Postman und Paw kombiniert und ausschließlich mit dem Sublime Texteditor funktioniert.
Wichtige Merkmale:
- Unterstützt JSON Schema
- Anfragen-Sammlungen und Verlauf
- Farbige Ausgabe mit Syntaxhervorhebung
- Moderne Benutzeroberfläche
- Einfaches Festlegen von Cookies, benutzerdefinierten Headern, Anfragetexten und Abfrageparametern
- GraphQL-Unterstützung
Postman
Arbeiten Sie regelmäßig mit APIs?
Dann wird Postman Sie begeistern!
Postman ist zweifellos einer der beliebtesten HTTP-Clients für das Debuggen von Webanwendungen. Er ermöglicht eine schnellere und einfachere API-Entwicklung.
Wichtige Merkmale:
- Leistungsstarke GUI mit benutzerfreundlicher Oberfläche
- Verlauf der Anfragen
- Automatisiertes Testen mit Collection Runner
- Flexible API-Überwachung
- Unterstützt REST, GraphQL und SOAP
- Unterstützung verschiedener Payloads, einschließlich JSON und HTML
cURL
cURL ist ein Kommandozeilen-Tool zum Senden von Daten mithilfe der URL-Syntax.
cURL ist standardmäßig auf den meisten UNIX-Betriebssystemen installiert und unterstützt viele Protokolle, darunter FTP, LDAP, POP3, SMTP, GOPHER, IMAP, HTTP, HTTPS und SCP.
Charles Proxy
Wie der Name schon sagt, ist Charles Proxy ein HTTP- und Reverse-Proxy. Er leitet den lokalen Datenverkehr um.
Charles kann für SSL-Proxys, Bandbreitenbegrenzung, AJAX-Debugging, Breakpoints und mehr verwendet werden.
Whistle
Whistle ist ein NodeJS-basiertes, plattformübergreifendes Debugging-Tool zum Erfassen und Bearbeiten von HTTP-, HTTPS-, WebSocket- und TCP-Datenverkehr.
Zunächst müssen Sie NodeJS und dann Whistle mit npm installieren:
npm install -g whistle
Sie können die Funktionen jederzeit mit Plugins erweitern, falls die Standardfunktionen nicht ausreichen.
mitmproxy
mitmproxy ist ein beliebter Open-Source-HTTPS-Proxy, der besonders bei Sicherheitsforschern beliebt ist. Er kann als CLI-, Web- oder Python-API genutzt werden.
Die Weboberfläche ähnelt von Aussehen und Bedienung den Chrome Developer Tools und unterstützt auch HTTP/2.
Proxyman
Ähnlich wie Paw ist Proxyman eine native Premium-MacOS-Web-Debugging-Proxy-Anwendung.
Es fungiert als Man-in-the-Middle für den Web-Datenverkehr und bietet viele Funktionen, darunter:
- SSL-Proxy
- Wiederholen von Anfragen
- Protobuf
- ReWrite-Scripting
- Lokale und Remote-Zuordnung
- Inhaltsfilterung
- Syntaxhervorhebung
Die Benutzeroberfläche von Proxyman ist sehr benutzerfreundlich.
HTTP Toolkit
HTTP Toolkit ist ein Open-Source-HTTP-Debugger, der als Desktop-App für Windows, Mac und Linux verfügbar ist.
Im Gegensatz zu anderen HTTP-Debuggern bietet HTTP Toolkit ein gezieltes Abfangen für spezifische Clients, einschließlich HTTPS-Setup, anstatt alles von Ihrem gesamten Computer abzufangen. Dadurch werden das Erfassen von irrelevantem Datenverkehr und die Störung anderer Anwendungen vermieden.
Mit nur einem Klick können Sie Browserfenster (einschließlich Chrome, Firefox und andere), Backend-/Skriptsprachen wie Node.js, Python und PHP, beliebige Kommandozeilen-Tools, Electron-Apps oder Android-Geräte und -Emulatoren (einschließlich System-Level-HTTPS-Abfangen) abfangen.
HTTP Toolkit unterstützt Standard-HTTP-Debugger-Funktionen, wie das Setzen von Breakpoints und das Umschreiben von HTTP(S)-Datenverkehr, das Filtern und Durchsuchen von gesammeltem Datenverkehr sowie die Hervorhebung und automatische Formatierung für viele gängige Anfrage- und Antworttextformate. Die Kernfunktionen zum Abfangen, Untersuchen und Umschreiben von HTTP(S) sind alle kostenlos, während einige erweiterte Premium-Funktionen wie Import/Export und automatisierte Scheinregeln ein kostenpflichtiges Konto erfordern.
Fazit
Die hier aufgeführten HTTP-Clients und Web-Debugging-Proxys können Ihnen auf vielfältige Weise helfen. Die meisten sind kostenlos oder bieten Testversionen an. Testen Sie einfach einige davon, um herauszufinden, welche für Ihre Bedürfnisse am besten geeignet sind.
Viel Erfolg beim Debuggen!