
rewerse-engineering v1.4.0
Go में Rewe API रिवर्स इंजीनियरिंग
रिवर्स इंजीनियरिंग
Go और Python में एक अनौपचारिक REWE API क्लाइंट। यह उन सार्वजनिक रूप से सुलभ (बिना प्रमाणीकरण वाले) एंडपॉइंट्स को लागू करता है जिनका उपयोग REWE ऐप वर्तमान छूट (Angebote), उत्पादों, बाज़ारों और रिकॉल की जानकारी प्राप्त करने के लिए करता है।
वर्तमान समर्थित APK संस्करण: 5.16.2 (06.08.26 तक)
[!CAUTION] rewe api से बात करने के लिए आवश्यक प्रमाणपत्र इस रिपॉजिटरी में शामिल नहीं हैं। आपको उन्हें APK से निकालना होगा। दस्तावेज़ीकरण और विंडोज़ के लिए एक निष्कर्षण-स्क्रिप्ट docs निर्देशिका में पाई जा सकती है।
rewerse-ui भी देखें।
त्वरित आरंभ
प्रमाणपत्र निकालें rewe apk से; निर्देशों के लिए 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 ने अपने api-एंडपॉइंट्स को सुरक्षित करने के लिए Cloudflare MTLS का उपयोग शुरू किया, जिसने मौजूदा समाधानों को तोड़ दिया जो, उदाहरण के लिए, किसी विशिष्ट Rewe बाज़ार के लिए छूट प्राप्त करने की अनुमति देते थे। Github-उपयोगकर्ता @torbenpfohl इसका पता लगाने, प्रमाणपत्र और उसका पासवर्ड खोजने के लिए जुनूनी पर्याप्त रूप से दृढ़ थे। यह रिपॉजिटरी उनके कार्य पर आधारित है और इसका उद्देश्य आवश्यक प्रक्रियाओं का दस्तावेजीकरण करना और कुछ एंडपॉइंट्स को लागू करना है।
अस्वीकरण
यह प्रोजेक्ट REWE-ZENTRALFINANZ eG से संबद्ध, समर्थित या प्रायोजित नहीं है। "REWE" अपने संबंधित स्वामी का एक पंजीकृत ट्रेडमार्क है।
यह REWE मोबाइल ऐप से सार्वजनिक रूप से देखे जाने योग्य नेटवर्क ट्रैफ़िक पर आधारित एक अनौपचारिक क्लाइंट है। यह शैक्षिक और शोध उद्देश्यों के लिए प्रदान किया गया है। अंतर्निहित API अप्रलेखित है और बिना सूचना के किसी भी समय बदल या टूट सकता है।
इस सॉफ़्टवेयर का उपयोग आपके अपने जोखिम पर है। उपयोगकर्ता यह सुनिश्चित करने के लिए ज़िम्मेदार हैं कि उनका उपयोग लागू सेवा की शर्तों का अनुपालन करता है।
सामग्री
- rewe api का एक बुनियादी go कार्यान्वयन pkg निर्देशिका में उपलब्ध है; go-लाइब्रेरी के api दस्तावेज़ीकरण के लिए उपयोग उदाहरणों सहित pkg/readme देखें।
- एक ffi python रैपर PyPI पर
rewerseके रूप में उपलब्ध है – विवरण और स्रोत कोड के लिए 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 प्रतिक्रिया का उपयोग करें, अन्यथा एक सिंथेटिक JSON पेलोड जो वास्तविक API व्यवहार को दर्शाता है, ठीक है।
योगदान
सुझावों, प्रश्नों, बग्स के लिए बेझिझक github मुद्दे खोलें। PR का स्वागत है। ईमेल: rewe at byte dot rest।