
Reverse Engineering der Rewe-API in Go
Ein inoffizieller REWE-API-Client in Go und Python. Er implementiert die öffentlich zugänglichen (unauthentifizierten) Endpunkte, die die REWE-App zum Abfragen aktueller Rabatte (Angebote), Produkte, Märkte und Rückrufe verwendet.
Aktuell unterstützte APK-Version: 5.18.1 (Stand 29.09.26)
[!CAUTION] Die für die Kommunikation mit der rewe api erforderlichen Zertifikate sind nicht in diesem Repository enthalten. Du musst sie aus der APK extrahieren. Dokumentation & ein Extraktionsskript für Windows findest du im Verzeichnis docs.
Siehe auch rewerse-ui.
Zertifikate extrahieren aus der rewe apk; siehe docs für Anweisungen
Die Bibliothek verwenden:
Oder 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 abzusichern, was
bestehende Lösungen unbrauchbar machte, die es beispielsweise ermöglichten, Rabatte für einen bestimmten Rewe-Markt abzurufen.
Der Github-Nutzer @torbenpfohl war besessen hartnäckig genug, um das herauszufinden, das Zertifikat und sein Passwort zu finden. Dieses Repo basiert auf
seiner Arbeit und zielt darauf ab, die erforderlichen Verfahren zu dokumentieren und einige der Endpunkte zu implementieren.
Dieses Projekt ist nicht mit 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 aus der REWE-Mobile-App basiert. Er wird zu Bildungs- und Forschungszwecken bereitgestellt. Die zugrunde liegende API ist undokumentiert und kann sich jederzeit ohne Vorankündigung ändern oder nicht mehr funktionieren.
Die Nutzung dieser Software erfolgt auf eigenes Risiko. Nutzer sind dafür verantwortlich, sicherzustellen, dass ihre Nutzung den geltenden Nutzungsbedingungen entspricht.
rewerse auf PyPI verfügbar – siehe python/readme für Details und Quellcode.[!NOTE] Bitte beachte, dass dies eine unsignierte Go-Binary ist, die eine Verschlüsselung/Entschlüsselung von Zertifikaten durchführt und Webanfragen an die rewe api sendet, weshalb sie wahrscheinlich von deinem Antivirus gemeldet wird. Es gibt keine Abhängigkeiten, sodass du sie leicht selbst kompilieren kannst – was aus Sicherheitsperspektive immer empfohlen wird.
Die App hat keinen Autocomplete-Endpunkt mehr und verwendet einfach die normale Produktsuche, daher sind Produktvorschläge weggefallen.
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
discounts Get market discounts
categories Get product categories
recipes Search recipes, get details and popular terms
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 discounts -market 840174
./rewerse.exe categories -market 831002
./rewerse.exe services -zip 50667
./rewerse.exe recipes search -term Lachs -difficulties 1
./rewerse.exe recipes details -id blt4aaa7361ba69f8c8
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 du eine Struct-Änderung beiträgst, ziehe bitte in Betracht, einen Unmarshal-Test hinzuzufügen oder zu aktualisieren. Verwende eine echte API-Antwort, wenn du eine erfassen kannst, andernfalls ist ein synthetischer JSON-Payload, der das tatsächliche API-Verhalten widerspiegelt, in Ordnung.
Öffne gerne GitHub-Issues für Vorschläge, Fragen, Bugs. PRs willkommen. E-Mail: rewe at byte dot rest.