Volver a actualizaciones
Nuevo releaseSep 6, 2026

rewerse-engineering v1.4.0

Ingeniería inversa de la API de Rewe en Go

Compartir

rewerse engineering

Project Logo

Un cliente no oficial de la API de REWE en Go y Python. Implementa los endpoints de acceso público (sin autenticación) que la aplicación REWE utiliza para consultar descuentos actuales (Angebote), productos, mercados y retiradas de productos.

Versión de APK compatible actual: 5.16.2 (a fecha de 06.08.26)

[!CAUTION] Los certificados necesarios para comunicarse con la API de rewe no están incluidos en este repositorio. Debes extraerlos del APK. La documentación y un script de extracción para Windows se encuentran en el directorio docs.

Consulta también rewerse-ui.

inicio rápido

Extrae los certificados del APK de rewe; consulta docs para obtener instrucciones

Usa la librería:

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

O instala la CLI:

  • Descarga una versión
  • O instala vía Go: go install github.com/ByteSizedMarius/rewerse-engineering/cmd@latest
  • O clona y compila: go build -o rewerse ./cmd

Verifica: rewerse --help

Ejemplo: Obtén los descuentos actuales de un mercado:

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

introducción

En marzo de 2024, Rewe comenzó a usar Cloudflare MTLS para proteger sus endpoints de API, lo que rompió las soluciones existentes que permitían, por ejemplo, obtener descuentos para un mercado específico de Rewe. El usuario de Github @torbenpfohl fue obsesivo lo bastante persistente para resolver esto, encontrar el certificado y su contraseña. Este repositorio se basa en su trabajo y tiene como objetivo documentar los procedimientos necesarios e implementar algunos de los endpoints.

Este proyecto no está afiliado, respaldado ni patrocinado por REWE-ZENTRALFINANZ eG. "REWE" es una marca registrada de su respectivo propietario.

Este es un cliente no oficial basado en el tráfico de red públicamente observable de la aplicación móvil de REWE. Se proporciona con fines educativos y de investigación. La API subyacente no está documentada y puede cambiar o dejar de funcionar en cualquier momento sin previo aviso.

El uso de este software es bajo tu propio riesgo. Los usuarios son responsables de garantizar que su uso cumpla con los términos de servicio aplicables.

contenido

  • Una implementación básica en go de la API de rewe está disponible en el directorio pkg; consulta pkg/readme para la documentación de la API de la librería de go, incluidos ejemplos de uso.
  • Un wrapper de Python mediante ffi está disponible como rewerse en PyPI – consulta python/readme para más detalles y el código fuente.
  • El código fuente de la CLI para la librería de go está en cmd.
  • Las versiones están en releases.

[!NOTE] Ten en cuenta que, dado que se trata de un binario de go sin firmar que realiza cifrado/descifrado de certificados y envía solicitudes web a la API de rewe, es probable que tu antivirus lo marque. No tiene dependencias, por lo que puedes compilarlo fácilmente tú mismo, lo cual siempre es recomendable desde una perspectiva de seguridad.

endpoints eliminados

La aplicación ya no tiene un endpoint de autocompletado y simplemente usa la búsqueda normal de productos, por lo que las sugerencias de productos han desaparecido.

cli

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.

pruebas

Las pruebas se encuentran en pkg/*_test.go. Hay dos tipos:

  • Las pruebas unitarias deserializan cargas JSON en nuestras estructuras. Las cargas se derivan de respuestas reales de la API. Estas se ejecutan sin certificados y detectan desajustes de tipos entre nuestras estructuras y las formas reales de la API. go test ./pkg/ -run Unmarshal
  • Las pruebas de integración acceden a la API en vivo y requieren certificados. Se omiten automáticamente si no se encuentran certificados. go test ./pkg/

Si contribuyes con un cambio de estructura, considera añadir o actualizar una prueba de deserialización. Usa una respuesta real de la API si puedes capturar una; de lo contrario, una carga JSON sintética que refleje el comportamiento real de la API es suficiente.

contribuciones

No dudes en abrir issues de github para sugerencias, preguntas o errores. Las PR son bienvenidas. Correo electrónico: rewe at byte dot rest.

atribución

Categorías