
rewerse-engineering v1.3.0
Ingeniería inversa de la API de Rewe en Go
ingeniería inversa
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.
inicio rápido
Extraer certificados del APK de Rewe; consulta docs para instrucciones.
Usar la librería:
O instalar la CLI:
- Descargar una versión
- O instalar vía Go:
go install github.com/ByteSizedMarius/rewerse-engineering/cmd@latest - O clonar y compilar:
go build -o rewerse ./cmd
Verificar: 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€
...
introducción
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.
descargo de responsabilidad
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.
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 Go, incluidos ejemplos de uso.
- Un wrapper FFI para Python está disponible como
rewerseen PyPI – consulta python/readme para detalles y código fuente. - El código fuente de la CLI para la librería Go está en cmd.
- Las versiones están en releases.
[!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.
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
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.
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 discrepancias 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 saltan automáticamente si no se encuentran certificados.
go 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.
contribuciones
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.