
Reverse Engineering der Rewe-API in Go
Dieses Repository zielt darauf ab, alle öffentlich zugänglichen (nicht authentifizierten) API-Endpunkte der Rewe-App zu implementieren, mit denen aktuelle Rabatte, Produkte, Rezepte und Rückrufe abgefragt werden können.
Aktuell unterstützte APK-Version: 5.15.2 (Stand: 12.07.26)
[!CAUTION] Die für die Kommunikation mit der Rewe-API erforderlichen Zertifikate sind nicht in diesem Repository enthalten. Sie müssen sie aus der APK extrahieren. Dokumentation und ein Extraktionsskript für Windows finden Sie im docs-Verzeichnis.
Siehe auch rewerse-ui.
Zertifikate extrahieren aus der Rewe-APK; siehe docs für Anweisungen
Bibliothek verwenden:
go get github.com/ByteSizedMarius/rewerse-engineering – Dokumentationpip install rewerse – DokumentationOder die CLI installieren:
go install github.com/ByteSizedMarius/rewerse-engineering/cmd@latestgo build -o rewerse ./cmdÜberprüfen: rewerse --help
Beispiel: Aktuelle Rabatte für einen Markt abrufen:
$ rewerse discounts -market 840174
Top-Angebote in deinem Markt
Haribo Goldbären oder Color-Rado, 0.77€
Coca-Cola, Fanta oder Sprite, 0.99€
Obst & Gemüse
Heidelbeeren, 1.49€
Rispentomaten, 0.99€
...
Im März 2024 begann Rewe, Cloudflare MTLS zu verwenden, um ihre API-Endpunkte zu sichern, was bestehende Lösungen zunichtemachte, die es beispielsweise ermöglichten, Rabatte für einen bestimmten Rewe-Markt abzurufen. Der GitHub-Benutzer @torbenpfohl war besessen beharrlich genug, um dies herauszufinden, das Zertifikat und sein Passwort zu finden. Dieses Repository basiert auf seiner Arbeit und zielt darauf ab, die erforderlichen Verfahren zu dokumentieren und einige der Endpunkte zu implementieren.
Dieses Projekt ist nicht mit der REWE-ZENTRALFINANZ eG verbunden, wird von ihr nicht unterstützt oder gesponsert. "REWE" ist eine eingetragene Marke des jeweiligen Inhabers.
Dies ist ein inoffizieller Client, der auf öffentlich beobachtbarem Netzwerkverkehr der REWE-Mobil-App basiert. Er wird zu Bildungs- und Forschungszwecken bereitgestellt. Die zugrunde liegende API ist nicht dokumentiert und kann jederzeit ohne Vorankündigung geändert oder unterbrochen werden.
Die Nutzung dieser Software erfolgt auf eigenes Risiko. Die Benutzer sind dafür verantwortlich, dass ihre Nutzung mit den geltenden Nutzungsbedingungen übereinstimmt.
rewerse auf PyPI verfügbar – siehe python/readme für Details und Quellcode.[!NOTE] Bitte beachten Sie, dass es sich um eine unsignierte Go-Binärdatei handelt, die einige Ver-/Entschlüsselungen von Zertifikaten durchführt und Webanfragen an die Rewe-API sendet. Daher wird sie wahrscheinlich von Ihrem Antivirenprogramm markiert. Es gibt keine Abhängigkeiten, sodass Sie sie leicht selbst kompilieren können – was aus Sicherheitssicht immer empfohlen wird.
Usage: ./rewerse.exe [flags] <command> [subcommand] [flags]
Flags:
-cert <path> Certificate file (default: certificate.pem)
-key <path> Key file (default: private.key)
-json Output as JSON
Commands:
markets Search and get market details
products Search, browse, and get product info
recipes Search and browse recipes
discounts Get market discounts
categories Get product categories
recalls Get product recalls
services Get service portfolio by zip
Examples:
./rewerse.exe markets search -query Köln
./rewerse.exe products search -market 831002 -query Milch
./rewerse.exe products category -market 831002 -slug obst-gemuese
./rewerse.exe recipes search -term Pasta
./rewerse.exe discounts -market 840174
./rewerse.exe categories -market 831002
./rewerse.exe services -zip 50667
Run './rewerse.exe <command>' for subcommand help.
Tests befinden sich in pkg/*_test.go. Es gibt zwei Arten:
go test ./pkg/ -run Unmarshalgo test ./pkg/Wenn Sie eine Strukturänderung beitragen, denken Sie bitte daran, einen Unmarshal-Test hinzuzufügen oder zu aktualisieren. Verwenden Sie eine echte API-Antwort, wenn Sie eine erfassen können, andernfalls ist ein synthetischer JSON-Payload, der das tatsächliche API-Verhalten widerspiegelt, in Ordnung.
Eröffnen Sie gerne GitHub-Issues für Vorschläge, Fragen, Fehler. PRs sind willkommen. E-Mail: rewe at byte dot rest.