Назад к обновлениям
New releaseSep 6, 2026

rewerse-engineering v1.4.0

Обратная разработка API Rewe на Go

Поделиться

rewerse engineering

Project Logo

Неофициальный клиент API REWE на Go и Python. Он реализует публично доступные (неаутентифицированные) конечные точки, которые приложение REWE использует для запроса текущих скидок (Angebote), товаров, магазинов и отзывов.

Поддерживаемая версия APK: 5.16.2 (по состоянию на 06.08.26)

[!CAUTION] Сертификаты, необходимые для взаимодействия с rewe api, не включены в этот репозиторий. Вам нужно извлечь их из APK. Документация и скрипт для извлечения для Windows находятся в каталоге docs.

Также смотрите rewerse-ui.

быстрое начало

Извлеките сертификаты из apk rewe; см. docs для инструкций

Используйте библиотеку:

Или установите CLI:

  • Скачайте релиз
  • Или установите через Go: go install github.com/ByteSizedMarius/rewerse-engineering/cmd@latest
  • Или клонируйте и соберите: go 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 не документирован и может измениться или перестать работать в любое время без предварительного уведомления.

Использование этого программного обеспечения осуществляется на ваш собственный риск. Пользователи несут ответственность за обеспечение соответствия их использования применимым условиям обслуживания.

содержимое

  • Базовая реализация rewe api на go доступна в каталоге pkg; см. pkg/readme для документации по api go-библиотеки, включая примеры использования.
  • Обёртка ffi для python доступна как rewerse на PyPI – см. python/readme для подробностей и исходного кода.
  • Исходный код cli для go-библиотеки находится в cmd.
  • Релизы находятся в releases.

[!NOTE] Обратите внимание, что, поскольку это неподписанный go-бинарник, который выполняет некоторое шифрование/дешифрование сертификатов и отправляет веб-запросы к rewe api, он, скорее всего, будет помечен вашим антивирусом. Зависимостей нет, поэтому вы можете легко скомпилировать его самостоятельно – что всегда рекомендуется с точки зрения безопасности.

удалённые конечные точки

В приложении больше нет конечной точки автодополнения, и оно просто использует обычный поиск товаров, поэтому предложения товаров исчезли.

cli

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. Есть два вида:

  • Модульные тесты десериализуют JSON-полезные нагрузки в наши структуры. Полезные нагрузки получены из реальных ответов API. Они выполняются без сертификатов и выявляют несоответствия типов между нашими структурами и фактическими формами API. go test ./pkg/ -run Unmarshal
  • Интеграционные тесты обращаются к живому API и требуют сертификаты. Они автоматически пропускаются, если сертификаты не найдены. go test ./pkg/

Если вы вносите изменения в структуру, пожалуйста, рассмотрите возможность добавления или обновления теста десериализации. Используйте реальный ответ API, если можете его захватить, в противном случае подойдёт синтетическая JSON-полезная нагрузка, отражающая фактическое поведение API.

внесение вклада

Не стесняйтесь открывать вопросы на github для предложений, вопросов, ошибок. Приветствуются PR. Электронная почта: rewe at byte dot rest.

атрибуция

Категории