
Rétro-ingénierie de l'API Rewe en Go
Ce référentiel vise à implémenter tous les points de terminaison de l'API accessibles publiquement (sans authentification) utilisés par l'application Rewe pour interroger les réductions en cours, les produits, les recettes et les rappels.
Version APK actuellement prise en charge : 5.15.2 (au 12.07.26)
[!CAUTION] Les certificats nécessaires pour communiquer avec l'API Rewe ne sont pas inclus dans ce référentiel. Vous devez les extraire de l'APK. La documentation et un script d'extraction pour Windows se trouvent dans le répertoire docs.
Voir aussi rewerse-ui.
Extraire les certificats de l'APK Rewe ; voir docs pour les instructions
Utiliser la bibliothèque :
go get github.com/ByteSizedMarius/rewerse-engineering – docspip install rewerse – docsOu installer le CLI :
go install github.com/ByteSizedMarius/rewerse-engineering/cmd@latestgo build -o rewerse ./cmdVérifier : rewerse --help
Exemple : Récupérer les réductions en cours pour un magasin :
$ 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€
...
En mars 2024, Rewe a commencé à utiliser Cloudflare MTLS pour sécuriser ses points de terminaison API, ce qui a cassé les solutions existantes qui permettaient, par exemple, de récupérer les réductions pour un magasin Rewe spécifique. L'utilisateur GitHub @torbenpfohl a été obsédé assez persévérant pour comprendre cela, trouver le certificat et son mot de passe. Ce dépôt est basé sur son travail et vise à documenter les procédures nécessaires et à implémenter certains des points de terminaison.
Ce projet n'est pas affilié, approuvé ou sponsorisé par REWE-ZENTRALFINANZ eG. « REWE » est une marque déposée de son propriétaire respectif.
Ceci est un client non officiel basé sur le trafic réseau observable publiquement de l'application mobile REWE. Il est fourni à des fins éducatives et de recherche. L'API sous-jacente n'est pas documentée et peut changer ou cesser de fonctionner à tout moment sans préavis.
L'utilisation de ce logiciel se fait à vos propres risques. Les utilisateurs sont responsables de s'assurer que leur utilisation est conforme aux conditions d'utilisation applicables.
rewerse sur PyPI – voir python/readme pour les détails et le code source.[!NOTE] Veuillez noter que, comme il s'agit d'un binaire Go non signé qui effectue un chiffrement/déchiffrement de certificats et envoie des requêtes web à l'API Rewe, il sera probablement signalé par votre antivirus. Il n'y a pas de dépendances, vous pouvez donc facilement le compiler vous-même – ce qui est toujours recommandé d'un point de vue sécurité.
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.
Les tests se trouvent dans pkg/*_test.go. Il y a deux types :
go test ./pkg/ -run Unmarshalgo test ./pkg/Si vous contribuez à une modification de structure, veuillez envisager d'ajouter ou de mettre à jour un test de désérialisation. Utilisez une réponse API réelle si vous pouvez en capturer une, sinon une charge utile JSON synthétique qui reflète le comportement réel de l'API convient.
N'hésitez pas à ouvrir des issues GitHub pour des suggestions, questions, bogues. Les PR sont les bienvenus. Email : rewe at byte dot rest.