
Обратная разработка API Rewe на Go
Этот репозиторий содержит реализацию всех общедоступных (неаутентифицированных) конечных точек API, используемых приложением Rewe для получения текущих скидок, товаров, рецептов и отзывов.
Текущая поддерживаемая версия APK: 5.15.2 (по состоянию на 12.07.26)
[!CAUTION] Сертификаты, необходимые для взаимодействия с API Rewe, не включены в этот репозиторий. Их необходимо извлечь из APK. Документация и скрипт извлечения для Windows находятся в каталоге docs.
См. также rewerse-ui.
Извлеките сертификаты из APK Rewe; см. инструкции в docs
Используйте библиотеку:
go get github.com/ByteSizedMarius/rewerse-engineering – документацияpip install rewerse – документацияИли установите CLI:
go install github.com/ByteSizedMarius/rewerse-engineering/cmd@latestgo build -o rewerse ./cmdПроверка: rewerse --help
Пример: Получение текущих скидок для магазина:
$ 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€
...
В марте 2024 Rewe начал использовать Cloudflare MTLS для защиты своих API-конечных точек, что сломало существующие решения, позволявшие, например, получать скидки для конкретного магазина Rewe.
Пользователь GitHub @torbenpfohl был одержим настойчив, чтобы разобраться в этом, найти сертификат и его пароль. Этот репозиторий основан на его работе и призван документировать необходимые процедуры и реализовать некоторые конечные точки.
Этот проект не связан с REWE-ZENTRALFINANZ eG, не одобрен и не спонсируется ею. «REWE» является зарегистрированной торговой маркой своего владельца.
Это неофициальный клиент, основанный на общедоступном сетевом трафике мобильного приложения REWE. Он предоставляется в образовательных и исследовательских целях. Используемый API не документирован и может измениться или перестать работать в любое время без предупреждения.
Использование этого программного обеспечения осуществляется на ваш собственный риск. Пользователи несут ответственность за соблюдение применимых условий обслуживания.
rewerse на PyPI – подробности и исходный код см. в python/readme.[!NOTE] Обратите внимание, что поскольку это неподписанный Go-бинарник, который выполняет шифрование/дешифрование сертификатов и отправляет веб-запросы к API Rewe, он, скорее всего, будет помечен вашим антивирусом. Зависимостей нет, поэтому вы легко можете скомпилировать его самостоятельно – что всегда рекомендуется с точки зрения безопасности.
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.
Тесты находятся в pkg/*_test.go. Есть два типа:
go test ./pkg/ -run Unmarshalgo test ./pkg/Если вы вносите изменения в структуру, пожалуйста, рассмотрите возможность добавления или обновления теста разбора (unmarshal test). Используйте реальный ответ API, если можете его получить, в противном случае подойдёт синтетическая JSON-нагрузка, отражающая реальное поведение API.
Смело открывайте вопросы на GitHub для предложений, вопросов, сообщений об ошибках. PR приветствуются. Email: rewe at byte dot rest.