Retour aux mises à jour
New releaseSep 6, 2026

rewerse-engineering v1.4.0

Rétro-ingénierie de l'API Rewe en Go

Partager

ingénierie inverse

Logo du projet

Un client API REWE non officiel en Go et Python. Il implémente les points de terminaison accessibles publiquement (sans authentification) que l'application REWE utilise pour interroger les réductions actuelles (Angebote), les produits, les marchés et les rappels.

Version APK actuellement prise en charge : 5.16.2 (au 06.08.26)

[!CAUTION] Les certificats requis pour communiquer avec l'API REWE ne sont pas inclus dans ce dépôt. 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.

démarrage rapide

Extraire les certificats de l'APK REWE ; voir docs pour les instructions

Utiliser la bibliothèque :

  • Go : go get github.com/ByteSizedMarius/rewerse-engineeringdocs
  • Python : pip install rewersedocs

Ou installer le CLI :

  • Télécharger une version
  • Ou installer via Go : go install github.com/ByteSizedMarius/rewerse-engineering/cmd@latest
  • Ou cloner et compiler : go build -o rewerse ./cmd

Vérifier : rewerse --help

Exemple : Récupérer les réductions actuelles pour un marché :

$ 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€
...

introduction

En mars 2024, Rewe a commencé à utiliser Cloudflare MTLS pour sécuriser ses points de terminaison d'API, ce qui a cassé les solutions existantes qui permettaient, par exemple, de récupérer les réductions pour un marché Rewe spécifique. L'utilisateur GitHub @torbenpfohl a été obsédé suffisamment 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 requises et à implémenter certains des points de terminaison.

avertissement

Ce projet n'est pas affilié à, approuvé par, ou sponsorisé par REWE-ZENTRALFINANZ eG. « REWE » est une marque déposée de son propriétaire respectif.

Il s'agit d'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.

contenu

  • Une implémentation Go de base de l'API REWE est disponible dans le répertoire pkg ; voir pkg/readme pour la documentation de l'API de la bibliothèque Go, y compris des exemples d'utilisation.
  • Un wrapper Python ffi est disponible sous le nom rewerse sur PyPI – voir python/readme pour les détails et le code source.
  • Le code source du CLI pour la bibliothèque Go se trouve dans cmd.
  • Les versions sont dans releases.

[!NOTE] Veuillez noter que, étant donné qu'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 aucune dépendance, vous pouvez donc facilement le compiler vous-même – ce qui est toujours recommandé d'un point de vue sécurité.

points de terminaison supprimés

L'application n'a plus de point de terminaison de saisie semi-automatique et utilise simplement la recherche de produits normale, donc les suggestions de produits ont disparu.

cli

Usage: ./rewerse.exe [flags] <command> [subcommand] [flags]

Flags:
  -cert <path>    Fichier de certificat (par défaut : certificate.pem)
  -key <path>     Fichier de clé (par défaut : private.key)
  -json           Sortie au format JSON

Commands:
  markets         Rechercher et obtenir les détails des marchés
  products        Rechercher, parcourir et obtenir les informations sur les produits
  discounts       Obtenir les réductions des marchés
  categories      Obtenir les catégories de produits
  recipes         Rechercher des recettes, obtenir les détails et les termes populaires
  recalls         Obtenir les rappels de produits
  services        Obtenir le portefeuille de services par code postal

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

Les tests se trouvent dans pkg/*_test.go. Il existe deux types :

  • Les tests unitaires désérialisent les charges utiles JSON dans nos structures. Les charges utiles sont dérivées de réponses API réelles. Ils s'exécutent sans certificats et détectent les incompatibilités de types entre nos structures et les formes API réelles. go test ./pkg/ -run Unmarshal
  • Les tests d'intégration accèdent à l'API en direct et nécessitent des certificats. Ils sont automatiquement ignorés si aucun certificat n'est trouvé. go 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.

contribution

N'hésitez pas à ouvrir des issues GitHub pour des suggestions, des questions, des bugs. Les PR sont les bienvenues. E-mail : rewe at byte dot rest.

attribution

Catégories