Protobuf-Dekodierung
ApiCatcher unterstützt die Dekodierung von Protobuf-kodierten Binärdaten aus HTTP/HTTPS-Anfragen und -Antworten in Klartext zur einfachen Anzeige und Analyse.
Standardmäßig erkennt ApiCatcher automatisch, ob der Content-Type-Header der Anfrage/Antwort mit gängigen Protobuf-Inhaltstypen wie application/protobuf oder application/x-protobuf übereinstimmt. Wenn ja, wird ein Dekodierungsversuch unternommen.
private static func isProtobufContentType(_ contentType: String) -> Bool {
let ct = contentType.lowercased().trimmingCharacters(in: .whitespacesAndNewlines)
let mimeType = ct.components(separatedBy: ";").first?.trimmingCharacters(in: .whitespaces) ?? ct
return mimeType == "application/protobuf"
|| mimeType == "application/x-protobuf"
|| mimeType == "application/x-google-protobuf"
|| mimeType == "application/grpc"
|| mimeType == "application/grpc+proto"
|| mimeType == "application/protobuf+json"
|| mimeType == "x-protobuf"
}
Wenn der Content-Type nicht zu den oben genannten Typen gehört, versucht ApiCatcher nicht automatisch zu dekodieren. Sie können jedoch das Dekodierungswerkzeug verwenden, um manuell zu dekodieren – klicken Sie auf das "Unlock"-Symbol auf der Body-Karte, wechseln Sie zu "Protobuf" und klicken Sie dann auf die Schaltfläche "Dekodieren".
Das Standard-Dekodierungsergebnis ist schwer lesbar, da keine Feldnamen vorhanden sind. Wenn Sie eine *.desc-Datei haben, können Sie diese importieren, um Feldnamen zu dekodieren. Wenn die *.desc-Datei korrekt ist, wird das Ergebnis in das JSON-Format konvertiert, das viel besser lesbar ist.
Hier ist ein Vergleich der Dekodierungsergebnisse mit und ohne *.desc-Datei:

Protobuf-Deskriptordateien (*.desc) importieren
Was ist eine *.desc-Datei?
Eine *.desc-Datei ist das binär serialisiertes Ergebnis eines Protobuf-Dateideskriptors (File Descriptor) und enthält alle Nachrichtenstrukturen, Enumerationen, Dienstdefinitionen und andere Metadaten, die in Proto-Dateien definiert sind. Sie ist für die Analyse von Protobuf-Binärdaten unerlässlich.
Wenn Sie nur *.proto-Dateien haben, müssen Sie diese zuerst in eine *.desc-Datei konvertieren, bevor Sie sie für die Protobuf-Dekodierung verwenden können.
Wie generiert man eine *.desc-Datei?
Wenn Sie mehrere *.proto-Dateien haben, können Sie das protoc-Befehlszeilentool verwenden, um eine oder mehrere *.desc-Dateien zu generieren. Schritte:
1. Protobuf-Befehlszeilentool installieren:
brew install protobuf
2. Proto-Dateien vorbereiten:
Erstellen Sie einen input-Ordner und kopieren Sie alle *.proto-Dateien hinein.
3. Generierungsbefehl ausführen:
protoc --descriptor_set_out=output.desc \
--include_imports \
-I=/path/to/input \
/path/to/input/*.proto
Parameterbeschreibung:
| Parameter | Beschreibung |
|---|---|
--descriptor_set_out=output.desc | Gibt den Pfad der Ausgabe-Deskriptordatei an |
--include_imports | Schließt alle abhängigen Import-Dateien ein, sodass das Ergebnis ohne zusätzliche Abhängigkeiten sofort verwendbar ist |
-I=/path/to/input | Gibt den Suchpfad für Proto-Dateien an (Präfix für Import-Pfade) |
/path/to/input/*.proto | Die zu kompilierenden Proto-Dateien (unterstützt Platzhalter) |
Nach der Ausführung wird eine output.desc-Datei im aktuellen Verzeichnis generiert. Übertragen Sie sie auf Ihr Telefon und importieren Sie sie in ApiCatcher zur späteren Verwendung.

Wenn der Anfrage-Body als Protobuf dekodiert werden kann, zeigt die Karte den Hinweis "Wählen Sie eine *.desc-Datei zum Dekodieren von Feldnamen" und bietet eine Auswahlschaltfläche an.
Klicken Sie auf die Auswahlschaltfläche, um eine importierte *.desc-Datei auszuwählen, und die Feldnamen werden dekodiert. Sie können an dieser Stelle auch eine Datei importieren.
Importierte Dateien werden lokal zwischengespeichert und können unter "Einstellungen → Protobuf-Dateiverwaltung" verwaltet werden.
