
Ingeniería inversa de la API de Rewe en Go
Este repositorio tiene como objetivo implementar todos los endpoints de API públicas (sin autenticación) utilizados por la aplicación Rewe para consultar descuentos actuales, productos, recetas y retiros del mercado.
Versión de APK actualmente soportada: 5.15.2 (a fecha de 12.07.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.
También consulta rewerse-ui.
Extraer certificados del APK de Rewe; consulta docs para instrucciones.
Usar la librería:
O instalar la CLI:
go install github.com/ByteSizedMarius/rewerse-engineering/cmd@latestgo build -o rewerse ./cmdVerificar: rewerse --help
Ejemplo: Obtener descuentos actuales para 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€
...
En marzo de 2024, Rewe comenzó
a usar Cloudflare MTLS para asegurar sus endpoints de API, lo que
rompió soluciones existentes que permitían, por ejemplo, obtener descuentos para un mercado específico de Rewe.
El usuario de Github @torbenpfohl fue obsesionado lo suficientemente persistente para resolverlo, encontrar el certificado y su contraseña. Este repo 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 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 su propio riesgo. Los usuarios son responsables de asegurarse de que su uso cumpla con los términos de servicio aplicables.
rewerse en PyPI – consulta python/readme para detalles y código fuente.[!NOTE] Ten en cuenta que, dado que se trata de un binario Go sin firmar que realiza cifrado/descifrado de certificados y envía solicitudes web a la API de Rewe, es probable que sea marcado por tu antivirus. No tiene dependencias, por lo que puedes compilarlo fácilmente tú mismo, lo cual siempre se recomienda desde una perspectiva de seguridad.
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.
Las pruebas se encuentran en pkg/*_test.go. Hay dos tipos:
go test ./pkg/ -run Unmarshalgo test ./pkg/Si contribuyes con un cambio de estructura, considera agregar 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.
No dudes en abrir issues en GitHub para sugerencias, preguntas o errores. Las solicitudes de extracción son bienvenidas. Correo electrónico: rewe en byte punto rest.