
rewerse-engineering v1.3.0
Go言語によるRewe APIのリバースエンジニアリング
rewerse engineering
このリポジトリは、Reweアプリで使用されている公開アクセス可能な(認証不要の)APIエンドポイントすべてを実装し、現在の割引、商品、レシピ、リコール情報を取得することを目的としています。
現在対応しているAPKバージョン: 5.15.2(12.07.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へのWebリクエストを行うため、アンチウイルスソフトに検知される可能性が高いことに注意してください。依存関係はないため、自分で簡単にコンパイルできます。セキュリティの観点から、自前でコンパイルすることを常にお勧めします。
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
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にあります。2種類あります。
- 単体テストはJSONペイロードを構造体にアンマーシャルします。ペイロードは実際のAPIレスポンスから派生しています。これらは証明書なしで実行され、構造体と実際のAPI形状との型の不一致を検出します。
go test ./pkg/ -run Unmarshal - 統合テストは実際のAPIにアクセスし、証明書が必要です。証明書が見つからない場合は自動的にスキップされます。
go test ./pkg/
構造体の変更を提案する場合は、アンマーシャルテストの追加または更新を検討してください。実際のAPIレスポンスを取得できる場合はそれを使用し、そうでない場合は実際のAPI動作を反映した合成JSONペイロードで構いません。
コントリビューション
提案、質問、バグについては、GitHub issueを開いてください。PRも歓迎します。メール: rewe at byte dot rest