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

rewerse-engineering v1.4.0

Rewe API 逆向工程(Go 语言)

分享

rewerse engineering

项目徽标

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

当前支持的 APK 版本:5.16.2(截至 06.08.26)

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

另请参阅 rewerse-ui

快速开始

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

使用该库:

  • Gogo get github.com/ByteSizedMarius/rewerse-engineering文档
  • Pythonpip 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 未记录在案,可能随时更改或失效,恕不另行通知。

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

内容

  • pkg 目录中提供了 rewe api 的基础 Go 实现;有关 go 库的 api 文档(包括使用示例),请参阅 pkg/readme
  • 一个 ffi Python 包装器以 rewerse 的名称发布在 PyPI 上 – 有关详细信息及源代码,请参阅 python/readme
  • go 库的 cli 源代码位于 cmd 中。
  • 发布版本位于 releases 中。

[!NOTE] 请注意,由于这是一个未签名的 go 二进制文件,它会执行一些证书的加密/解密操作并向 rewe api 发送网络请求,因此很可能会被你的杀毒软件标记。它没有任何依赖项,因此你可以轻松自行编译——从安全角度来看,这始终是推荐的做法。

已移除的端点

该应用不再有自动补全端点,仅使用常规商品搜索,因此商品建议功能已移除。

cli

用法:./rewerse.exe [标志] <命令> [子命令] [标志]

标志:
  -cert <路径>    证书文件(默认:certificate.pem)
  -key <路径>     密钥文件(默认:private.key)
  -json           以 JSON 格式输出

命令:
  markets         搜索并获取市场详情
  products        搜索、浏览并获取商品信息
  discounts       获取市场折扣
  categories      获取商品类别
  recipes         搜索食谱、获取详情及热门搜索词
  recalls         获取商品召回信息
  services        按邮编获取服务组合

示例:
  ./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

运行 './rewerse.exe <命令>' 获取子命令帮助。

测试

测试位于 pkg/*_test.go 中。共有两种类型:

  • 单元测试将 JSON 负载反序列化到我们的结构体中。这些负载源自真实的 API 响应。它们无需证书即可运行,并能捕获我们的结构体与实际 API 形状之间的类型不匹配问题。go test ./pkg/ -run Unmarshal
  • 集成测试会访问实时 API,需要证书。如果未找到证书,它们会自动跳过。go test ./pkg/

如果你要贡献结构体更改,请考虑添加或更新反序列化测试。如果可能,请使用真实的 API 响应;否则,反映实际 API 行为的合成 JSON 负载也是可以的。

贡献

欢迎针对建议、问题、错误开启 github issue。欢迎提交 PR。邮箱:rewe at byte dot rest。

致谢

分类