
Rewe API 리버스 엔지니어링 (Go)
이 저장소는 Rewe 앱에서 현재 할인, 제품, 레시피 및 리콜을 조회하는 데 사용되는 모든 공개적으로 접근 가능한 (인증되지 않은) API 엔드포인트를 구현하는 것을 목표로 합니다.
현재 지원되는 APK 버전: 5.15.2 (12.07.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년 3월, Rewe는 API 엔드포인트 보안을 위해 Cloudflare MTLS를 도입하면서, 특정 Rewe 마켓의 할인 정보를 가져올 수 있었던 기존 솔루션이 작동하지 않게 되었습니다. GitHub 사용자 @torbenpfohl는 이를 알아내고 인증서와 비밀번호를 찾을 만큼 집착 끈질겼습니다. 이 저장소는 그의 작업을 기반으로 하며, 필요한 절차를 문서화하고 일부 엔드포인트를 구현하는 것을 목표로 합니다.
이 프로젝트는 REWE-ZENTRALFINANZ eG와 제휴, 보증 또는 후원 관계가 없습니다. "REWE"는 해당 소유자의 등록 상표입니다.
이는 REWE 모바일 앱의 공개적으로 관찰 가능한 네트워크 트래픽을 기반으로 한 비공식 클라이언트입니다. 교육 및 연구 목적으로 제공됩니다. 기반 API는 문서화되어 있지 않으며 언제든지 변경되거나 중단될 수 있습니다.
이 소프트웨어의 사용은 사용자 본인의 책임입니다. 사용자는 사용이 해당 서비스 약관을 준수하는지 확인할 책임이 있습니다.
rewerse로 제공됩니다. 자세한 내용 및 소스 코드는 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
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에 있습니다. 두 가지 종류가 있습니다:
go test ./pkg/ -run Unmarshalgo test ./pkg/구조체 변경에 기여하는 경우, 역직렬화 테스트를 추가하거나 업데이트해 주세요. 실제 API 응답을 캡처할 수 있다면 사용하고, 그렇지 않으면 실제 API 동작을 반영하는 합성 JSON 페이로드를 사용해도 괜찮습니다.
제안, 질문, 버그는 GitHub 이슈를 열어주세요. PR도 환영합니다. 이메일: rewe at byte dot rest.