
Обратная разработка API Rewe на Go
Неофициальный клиент REWE API на Go и Python. Он реализует общедоступные (не требующие аутентификации) эндпоинты, которые приложение REWE использует для запроса текущих скидок (Angebote), товаров, магазинов и отзывов продукции.
Текущая поддерживаемая версия APK: 5.18.1 (по состоянию на 29.09.26)
[!CAUTION] Сертификаты, необходимые для взаимодействия с rewe api, не включены в этот репозиторий. Вам нужно извлечь их из APK. Документация и скрипт извлечения для Windows находятся в каталоге docs.
См. также rewerse-ui.
Извлеките сертификаты из rewe apk; инструкции см. в docs
Используйте библиотеку:
Или установите 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-бинарник, который выполняет шифрование/дешифрование сертификатов и отправляет веб-запросы к rewe api, он, вероятно, будет помечен вашим антивирусом. Зависимостей нет, поэтому вы можете легко скомпилировать его самостоятельно – что всегда рекомендуется с точки зрения безопасности.
В приложении больше нет эндпоинта автодополнения, и оно просто использует обычный поиск товаров, поэтому подсказки товаров исчезли.
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.
Тесты находятся в pkg/*_test.go. Есть два вида:
go test ./pkg/ -run Unmarshalgo test ./pkg/Если вы вносите изменения в структуру, пожалуйста, рассмотрите возможность добавления или обновления теста демаршалинга. Используйте реальный ответ API, если можете его получить, в противном случае подойдёт синтетическая JSON-полезная нагрузка, отражающая фактическое поведение API.
Не стесняйтесь открывать github issues для предложений, вопросов, багов. PR приветствуются. Email: rewe at byte dot rest.