
Reverse engineering dell'API Rewe in Go
Un client API REWE non ufficiale in Go e Python. Implementa gli endpoint pubblicamente accessibili (non autenticati) che l'app REWE utilizza per interrogare sconti correnti (Angebote), prodotti, mercati e richiami.
Versione APK attualmente supportata: 5.18.1 (al 29.09.26)
[!CAUTION] I certificati necessari per comunicare con l'API di rewe non sono inclusi in questo repository. Devi estrarli dall'APK. La documentazione e uno script di estrazione per Windows si trovano nella directory docs.
Vedi anche rewerse-ui.
Estrai i certificati dall'apk di rewe; consulta docs per le istruzioni
Usa la libreria:
Oppure installa la CLI:
go install github.com/ByteSizedMarius/rewerse-engineering/cmd@latestgo build -o rewerse ./cmdVerifica: rewerse --help
Esempio: Recupera gli sconti correnti per un mercato:
$ 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€
...
A marzo 2024, Rewe ha iniziato
a usare Cloudflare MTLS per proteggere i propri endpoint API, il che
ha reso inutilizzabili le soluzioni esistenti che permettevano, ad esempio, di recuperare gli sconti per uno specifico mercato Rewe.
L'utente GitHub @torbenpfohl è stato ossessionato abbastanza persistente da capirlo, trovare il certificato e la sua password. Questo repo si basa sul
suo lavoro e mira a documentare le procedure necessarie e implementare alcuni degli endpoint.
Questo progetto non è affiliato, approvato o sponsorizzato da REWE-ZENTRALFINANZ eG. "REWE" è un marchio registrato del rispettivo proprietario.
Questo è un client non ufficiale basato sul traffico di rete pubblicamente osservabile dall'app mobile REWE. È fornito per scopi educativi e di ricerca. L'API sottostante non è documentata e può cambiare o rompersi in qualsiasi momento senza preavviso.
L'uso di questo software è a tuo rischio. Gli utenti sono responsabili di garantire che il proprio utilizzo sia conforme ai termini di servizio applicabili.
rewerse su PyPI – consulta python/readme per dettagli e codice sorgente.[!NOTE] Tieni presente che, trattandosi di un binario Go non firmato che esegue crittografia/decrittografia di certificati e invia richieste web all'API rewe, probabilmente verrà segnalato dal tuo antivirus. Non ci sono dipendenze, quindi puoi compilarlo facilmente da solo – cosa sempre raccomandata da un punto di vista della sicurezza.
L'app non ha più un endpoint di completamento automatico e utilizza semplicemente la normale ricerca prodotti, quindi i suggerimenti sui prodotti sono scomparsi.
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.
I test si trovano in pkg/*_test.go. Ce ne sono di due tipi:
go test ./pkg/ -run Unmarshalgo test ./pkg/Se stai contribuendo con una modifica a una struct, considera di aggiungere o aggiornare un test di unmarshal. Usa una risposta API reale se riesci a catturarne una, altrimenti va bene un payload JSON sintetico che rifletta il comportamento effettivo dell'API.
Sentiti libero di aprire issue su GitHub per suggerimenti, domande, bug. Le PR sono benvenute. Email: rewe at byte dot rest.