
Engenharia reversa da API Rewe em Go
Este repositório visa implementar todos os endpoints de API publicamente acessíveis (não autenticados) usados pelo aplicativo Rewe para consultar descontos atuais, produtos, receitas e recalls.
Versão APK atualmente suportada: 5.15.2 (atualizado em 12.07.26)
[!CAUTION] Os certificados necessários para se comunicar com a API da Rewe não estão incluídos neste repositório. Você precisa extraí-los do APK. A documentação e um script de extração para Windows podem ser encontrados no diretório docs.
Veja também rewerse-ui.
Extraia os certificados do APK da Rewe; veja docs para instruções
Use a biblioteca:
Ou instale a CLI:
go install github.com/ByteSizedMarius/rewerse-engineering/cmd@latestgo build -o rewerse ./cmdVerifique: rewerse --help
Exemplo: Obtenha os descontos atuais de um 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€
...
Em março de 2024, a Rewe começou a usar Cloudflare MTLS para proteger seus endpoints de API, o que quebrou soluções existentes que permitiam, por exemplo, obter descontos para um mercado específico da Rewe. O usuário do GitHub @torbenpfohl foi obcecado persistente o suficiente para descobrir isso, encontrar o certificado e sua senha. Este repositório é baseado em seu trabalho e visa documentar os procedimentos necessários e implementar alguns dos endpoints.
Este projeto não é afiliado, endossado ou patrocinado pela REWE-ZENTRALFINANZ eG. "REWE" é uma marca registrada de seu respectivo proprietário.
Este é um cliente não oficial baseado no tráfego de rede publicamente observável do aplicativo móvel REWE. É fornecido para fins educacionais e de pesquisa. A API subjacente não é documentada e pode mudar ou quebrar a qualquer momento sem aviso prévio.
O uso deste software é por sua conta e risco. Os usuários são responsáveis por garantir que seu uso esteja em conformidade com os termos de serviço aplicáveis.
rewerse no PyPI – veja python/readme para detalhes e código-fonte.[!NOTE] Observe que, como este é um binário Go não assinado que faz alguma criptografia/descriptografia de certificados e envia requisições web para a API da Rewe, ele provavelmente será sinalizado pelo seu antivírus. Não há dependências, então você pode compilá-lo facilmente – o que é sempre recomendado do ponto de vista de segurança.
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.
Os testes estão em pkg/*_test.go. Existem dois tipos:
go test ./pkg/ -run Unmarshalgo test ./pkg/Se você estiver contribuindo com uma alteração de estrutura, considere adicionar ou atualizar um teste de desserialização. Use uma resposta real da API se puder capturar uma, caso contrário, um payload JSON sintético que reflita o comportamento real da API é suficiente.
Sinta-se à vontade para abrir issues no GitHub para sugestões, perguntas, bugs. PRs são bem-vindos. Email: rewe at byte dot rest.