
Reverse engineering dell'API Rewe in Go
Questo repository mira a implementare tutti gli endpoint API pubblicamente accessibili (non autenticati) utilizzati dall'app Rewe per interrogare sconti correnti, prodotti, ricette e richiami.
Versione APK attualmente supportata: 5.15.2 (al 12.07.26)
[!CAUTION] I certificati necessari per comunicare con l'API Rewe non sono inclusi in questo repository. Devi estratti dall'APK. La documentazione e uno script di estrazione per Windows si trovano nella directory documentazione.
Vedi anche rewerse-ui.
Estrai i certificati dall'APK Rewe; consulta documentazione per le istruzioni
Usa la libreria:
go get github.com/ByteSizedMarius/rewerse-engineering – documentazionepip install rewerse – documentazioneOppure 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 market:
$ 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€
...
Nel marzo 2024, Rewe ha iniziato a utilizzare Cloudflare MTLS per proteggere i propri endpoint API, il che ha rotto le soluzioni esistenti che permettevano, ad esempio, di recuperare gli sconti per uno specifico market Rewe. L'utente GitHub @torbenpfohl è stato ossessionato abbastanza persistente da capirlo, trovare il certificato e la sua password. Questo repository 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 suo 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 proprio rischio. Gli utenti sono responsabili di garantire che il loro utilizzo sia conforme ai termini di servizio applicabili.
rewerse su PyPI – vedi python/readme per dettagli e codice sorgente.[!NOTE] Nota bene: poiché questo è un binario Go non firmato che esegue alcune crittografia/decrittografia di certificati e invia richieste web all'API Rewe, è probabile che venga segnalato dal tuo antivirus. Non ci sono dipendenze, quindi puoi facilmente compilarlo da solo – cosa sempre consigliata dal punto di vista della sicurezza.
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.
I test risiedono in pkg/*_test.go. Ce ne sono due tipi:
go test ./pkg/ -run Unmarshalgo test ./pkg/Se contribuisci con una modifica alle strutture, considera l'aggiunta o l'aggiornamento di un test di deserializzazione. 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. PR benvenuti. Email: rewe at byte dot rest.