返回更新列表
新发布Sep 6, 2026

rewerse-engineering v1.4.0

Rewe API 逆向工程(Go 语言)

分享

rewerse engineering

Project Logo

一个非官方的 REWE API 客户端,使用 Go 和 Python 编写。它实现了 REWE 应用用于查询当前折扣(Angebote)、商品、门店和召回信息的公开(无需认证)端点。

当前支持的 APK 版本:5.18.1(截至 29.09.26)

[!CAUTION] 与 rewe api 通信所需的证书未包含在此仓库中。你需要从 APK 中提取它们。文档及适用于 Windows 的提取脚本可在 docs 目录中找到。

另请参阅 rewerse-ui。

快速开始

提取证书:从 rewe apk 中提取;说明请参见 docs

使用该库:

  • Go:go get github.com/ByteSizedMarius/rewerse-engineering – 文档
  • Python:pip install rewerse – 文档

或安装 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 年 3 月,Rewe 开始 使用 Cloudflare MTLS 来保护其 api 端点,这 破坏了现有解决方案,例如那些允许获取特定 Rewe 门店折扣的方案。 GitHub 用户 @torbenpfohl 足够痴迷执着,弄清了这一点,找到了证书及其密码。本仓库基于 他的工作,旨在记录所需流程并实现部分端点。

免责声明

本项目与 REWE-ZENTRALFINANZ eG 无关联、未获其认可或赞助。“REWE”是其各自所有者的注册商标。

这是一个基于 REWE 移动应用中公开可观察的网络流量构建的非官方客户端。它仅供教育和研究目的使用。底层 API 未公开文档,可能随时更改或失效,恕不另行通知。

使用本软件的风险由你自己承担。用户有责任确保其使用符合适用的服务条款。

内容

  • rewe api 的基础 Go 实现位于 pkg 目录中;有关 Go 库的 api 文档(包括使用示例),请参见 pkg/readme。
  • 一个 ffi Python 封装以 rewerse 之名发布在 PyPI 上 – 详情和源代码请参见 python/readme。
  • Go 库的 cli 源代码位于 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 响应,请使用它;否则,反映实际 API 行为的合成 JSON 负载也可以。

贡献

欢迎为建议、问题、bug 提交 GitHub issue。欢迎 PR。邮箱:rewe at byte dot rest。

致谢

分类