Du hast deinen AdBlocker an?

Es wäre ein Traum, wenn du ihn für t3n.de deaktivierst. Wir zeigen dir gerne, wie das geht. Und natürlich erklären wir dir auch, warum uns das so wichtig ist. Digitales High-five, deine t3n-Redaktion

Entwicklung & Design

„Charles, die nächste API bitte!“ – So kommst du an Daten aus undokumentierten Schnittstellen

(Screenshot: Charles)

Nicht jeder App-Entwickler bietet eine offene, gut dokumentierte API an. Wir zeigen euch am Beispiel des Debugging-Proxies Charles, wie ihr trotzdem an die Daten kommt.

Private APIs: So kommt ihr an die Daten

Wir leben in einer Welt, in der unzählige Dienste und Apps offene, gut dokumentierte Programmierschnittstellen anbieten. Doch längst nicht jeder App-Entwickler schätzt diese Form der Offenheit. Aber irgendwoher bekommen auch deren Smartphone- und Tablet-Apps ihre Daten.

Der Londoner Entwickler Tim Rogers beispielsweise nutzte einen Proxy, um die nicht-öffentlichen APIs von American Express, British Airways und Rap Genius zu erkunden und auf die damit verfügbaren Daten zuzugreifen. In einem Blog-Beitrag erklärte er, wie er dazu die Debugging-Poxy-Software Charles verwendet hat. Für uns Grund genug, seiner Erklärung zu folgen und einen Blick auf das Tool zu werfen.

Web-Debugging-Proxy: Mit einem Tool wie Charles könnt ihr den ausgehenden Traffic eures Smartphones überwachen und aufzeichnen. (Screenshot: t3n)
Web-Debugging-Proxy: Mit einem Tool wie Charles könnt ihr den ausgehenden Traffic eures Smartphones überwachen und aufzeichnen. (Screenshot: t3n)

Charles: So legt ihr mit dem Proxy los

Charles gibt es für OS X, Windows und Linux. Es existiert eine Testversion, die ihr 30 Tage nutzen könnt. Allerdings schließt sich diese Version nach 30 Minuten selbstständig. Der Preis für die Vollversion beträgt 50 US-Dollar – ab fünf Lizenzen bekommt ihr vom Anbieter Rabatt. Außerdem würden sich natürlich auch andere Web-Debugging-Proxy-Tools für die Aufgabe eignen.

Unter OS X müsst ihr zur Installation nur die DMG-Datei öffnen und die App in euer Programmverzeichnis verschieben. Um den ausgehenden Traffic eures Smartphones mit Charles zu überwachen, müsst ihr jetzt die entsprechenden Einstellungen vornehmen. Viele Apps werden über eine per SSL verschlüsselte Verbindung mit ihrer API kommunizieren. Die Daten könnt ihr also nicht so einfach auslesen.

Ihr könnt Charles aber als Mittelsmann verwenden, der sein eigenes Zertifikat vorzeigt, die Daten ausliest, und erst dann an den eigentlichen Server weiter verschickt. Dazu müsst ihr das Zertifikat charlesproxy.com/charles.crt auf eurem iOS- oder Android-Smartphone installieren. Wichtig: Das Zertifikat solltet ihr nach eurem Test unbedingt wieder entfernen. Ansonsten könnten andere Nutzer eure Verbindungen mitschneiden, wenn ihr nicht damit rechnet.

APIs ausspähen: So nutzt ihr Charles

Um mit dem Proxy alle HTTP-Anfragen eures Smartphones abzufangen, müssen euer Computer und euer Smartphone im selben WLAN angemeldet sein. Anschließend müsst ihr die IP-Adresse eures Rechners rauskriegen. Unter OS X findet ihr sie unter Systemeinstellungen > Netzwerke. Jetzt müsst ihr den Proxy auf eurem Smartphone einrichten. Unter iOS müsst ihr dazu auf das Icon neben eurer WLAN-Verbindung klicken und bis „HTTP Proxy“ runterscrollen. Diesen Wert setzt ihr auf „Manual“, die IP eures Rechners in das Server-Feld ein und wählt 8888 als Port aus.

Unter Android gestaltet sich der Vorgang je nach Version des Betriebssystems unterschiedlich. Unter den Android-Versionen Ice Cream Sandwich und Jelly Bean reicht es, längere Zeit auf den Netzwerknamen zu tippen. Daraufhin müsste sich ein Menü öffnen. Jetzt klickt ihr auf „Netzwerk ändern“ und scrollt anschließend bis zum Auswahlfeld „Erweiterte Optionen anzeigen“. Unter dem Feld „HTTP Proxy“ gebt ihr anschließend wie gehabt die IP-Adresse eures Rechners und den Port 8888 an.

Charles zeigt euch alle HTTP-Requests und die entsprechenden Antworten des Servers auf einer einfachen Oberfläche an. (Screenshot: t3n)
Charles zeigt euch alle HTTP-Requests und die entsprechenden Antworten des Servers auf einer einfachen Oberfläche an. (Screenshot: t3n)

Charles im Einsatz: So zeigen sich eure Apps

Anschließend müsst ihr nur noch Charles öffnen. Auf der linken Seite seht ihr alle Verbindungen die über den Proxy laufen. Wenn ihr jetzt eine neue App öffnet, sollten auch ihre Verbindungen angezeigt werden. Wenn die App, für deren private API ihr euch interessiert, eine Verbindung über HTTPS aufbaut, müsst ihr per Rechtsklick „SSL Proxying“ aktivieren, um die verschlüsselten API-Aufrufe lesen zu können.

Jetzt heißt es „Trial and Error“. Tim Roger empfiehlt, in der Ziel-App rumzuklicken und die Dinge zu tun, die ihr gerne über die API automatisieren würdet. Im Fall der Rap-Genius-App wollte er beispielsweise die Anmerkungen zu Songs runterladen. Also rief er einen Song mit der App auf und guckte sich anschließend in Charles den entsprechenden Request an.

Die Header-Informationen zu „User-Agent“, „Accept“ und „Content-Type“ sollten vermutlich nicht verändert werden. Generell könnte es unterschiedliche Authentifizierungs-Mechanismen geben und ihr werdet etwas experimentieren müssen. Nachdem ihr den Request verstanden habt, solltet ihr einen Blick auf den Response werfen. Da heute viele APIs mit JSON arbeiten, sollte ihr versuchen, euch die Antwort von Charles als JSON-Text anzeigen zu lassen. Alles in allem müsst ihr nur den Request und das zurückgegebene JSON-Format verstehen, um eine API nachbauen zu können.

Private APIs abschnorcheln: Lohnt sich das? Und: Sollte ich das überhaupt?

Bevor ihr jetzt aber einen Haufen Arbeit in die Entdeckung undokumentierter APIs steckt, sollten euch zwei Dinge klar sein. Erstens: Die API könnte sich jederzeit ändern. Immerhin sind die Entwickler niemandem Rechenschaft schuldig, wie ihre App mit ihrem Service kommuniziert. Und eine Änderung kann eure gesamte Detektivarbeit zunichte machen.

Zweitens: Rein rechtlich gesehen bewegt ihr euch zumindest auf dünnem Eis. Tim Rogers hat nach eigenem Bekunden bisher keine Probleme bekommen, andere Entwickler allerdings schon. Es ist nicht auszuschließen, dass ein Unternehmen auch rechtliche Schritte einleitet, wenn ihr eure Entdeckung öffentlich macht oder sogar einen kommerziellen Dienst auf Basis einer privaten API oder damit gewonnener Daten aufmacht.

Bitte beachte unsere Community-Richtlinien

8 Reaktionen
Manuel

Besser hätt ich es nicht sagen können ;)

Patrick Baber

Ein sehr nützliches Tool. Ich brauche es nur recht selten, aber wenn es zum Einsatz kommt, freue ich mich jedes Mal, dass es diese Art von Software gibt. Mal eben einen JavaScript-Hotfix im Live-System getestet - genial! Super auch, dass dies auch mit TLS verschlüsselten Websites funktioniert.

Fiddler hatte ich zuvor auch getestet, allerdings macht das Interface keinen Spaß. Charles ist intuitiver und daher spreche ich meine volle Kaufempfehlung aus. Das Ding gehört in die Toolchain eines jeden Web-Entwicklers.

Daniel

Dafür läuft Charles auf Windows, OS X *und* Linux. Für unser Team ein essentielles Werkzeug, was uns schon häufig viel Zeit und Nerven gerettet hat.

Chrisissorry

Interessant, aber ich hätte mir gewünscht, dass ihr zu Beginn des Artikels kurz das Prinzip erläutert, statt zu erklären wie ich mein Smartphone konfigurieren muss.

Oliver

Ist auch ohne Probleme in Fiddler möglich und noch viel mehr: http://www.telerik.com/download/fiddler/fiddlerscript-editor

Jaxn

Oh ja, damit konnte man damals schon so herrlich bei Zynga-Games cheaten ;)

Manuel

Ansichtssache. Charles macht optisch und von der Bedienung her in meinen Augen wesentlich mehr Spaß und wenn man das Tool bezahlt, und die 50 $ ist es definitiv wert, dann schließt sich das auch nicht alle 30 Minuten.

Unglaublich nützlich ist die Map Local/Remote Funktion um mal eben schnell online CSS- oder JS-Files auf das lokale Filesystem zu mappen um Änderungen zu testen bevor man sie auf den Server deployed.

Ein Prozess der mittlerweile unglaublich essentiell ist für meine Arbeit und den ich längst mal in nem Blog-Artikel beschrieben haben wollte.

Oliver

Da ist Fiddler von Telerik wesentlich besser und es schließt sich nicht alle 30 Minuten.

Du musst angemeldet sein, um einen Kommentar schreiben zu können.

Jetzt anmelden

Finde einen Job, den du liebst