
rewerse-engineering v1.3.0
هندسة عكسية لـ Rewe API في Go
هندسة عكسية
يهدف هذا المستودع إلى تنفيذ جميع نقاط النهاية (غير الموثقة) المتاحة للجمهور المستخدمة من قبل تطبيق ريف (Rewe) للاستعلام عن الخصومات الحالية والمنتجات والوصفات والاستدعاءات.
إصدار APK المدعوم حاليًا: 5.15.2 (اعتبارًا من 12.07.26)
[!CAUTION] الشهادات المطلوبة للتواصل مع واجهة برمجة تطبيقات ريف غير مضمنة في هذا المستودع. تحتاج إلى استخراجها من ملف APK. يمكن العثور على التوثيق وبرنامج نصي للاستخراج لنظام ويندوز في دليل docs.
انظر أيضًا rewerse-ui.
بداية سريعة
استخراج الشهادات من ملف 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، بدأت ريف في استخدام Cloudflare MTLS لتأمين نقاط النهاية الخاصة بواجهة برمجة التطبيقات، مما أدى إلى تعطيل الحلول الحالية التي كانت تسمح، على سبيل المثال، بجلب الخصومات لسوق ريف معين. كان مستخدم GitHub @torbenpfohl مهووسًا مثابرًا بما يكفي لمعرفة ذلك، والعثور على الشهادة وكلمة مرورها. هذا المستودع مبني على عمله ويهدف إلى توثيق الإجراءات المطلوبة وتنفيذ بعض نقاط النهاية.
إخلاء مسؤولية
هذا المشروع ليس تابعًا لشركة REWE-ZENTRALFINANZ eG أو معتمدًا منها أو مدعومًا منها. "REWE" هي علامة تجارية مسجلة لمالكها.
هذا عميل غير رسمي يعتمد على حركة مرور الشبكة القابلة للملاحظة علنًا من تطبيق ريف المحمول. يتم توفيره للأغراض التعليمية والبحثية. واجهة برمجة التطبيقات الأساسية غير موثقة وقد تتغير أو تتعطل في أي وقت دون إشعار مسبق.
استخدام هذا البرنامج على مسؤوليتك الخاصة. يتحمل المستخدمون مسؤولية ضمان امتثال استخدامهم لشروط الخدمة المعمول بها.
المحتويات
- تطبيق أساسي بلغة Go لواجهة برمجة تطبيقات ريف متوفر في دليل pkg؛ راجع pkg/readme لتوثيق واجهة برمجة التطبيقات لمكتبة Go بما في ذلك أمثلة الاستخدام.
- غلاف FFI بلغة بايثون متوفر باسم
rewerseعلى PyPI – راجع python/readme للتفاصيل وكود المصدر. - كود المصدر لواجهة سطر الأوامر لمكتبة Go موجود في cmd.
- الإصدارات موجودة في releases.
[!NOTE] يرجى ملاحظة أنه نظرًا لأن هذا هو ملف ثنائي Go غير موقع يقوم ببعض التشفير/فك تشفير الشهادات وإرسال طلبات ويب إلى واجهة برمجة تطبيقات ريف، فمن المحتمل أن يتم وضع علامة عليه من قبل برنامج مكافحة الفيروسات الخاص بك. لا توجد تبعيات، لذا يمكنك بسهولة تجميعه بنفسك – وهو أمر موصى به دائمًا من منظور أمني.
واجهة سطر الأوامر (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. هناك نوعان:
- اختبارات الوحدة (Unit tests) تقوم بفك تسلسل حمولات JSON إلى الهياكل الخاصة بنا. الحمولات مستمدة من استجابات API الحقيقية. تعمل هذه الاختبارات بدون شهادات وتلتقط عدم تطابق الأنواع بين هياكلنا وأشكال API الفعلية.
go test ./pkg/ -run Unmarshal - اختبارات التكامل (Integration tests) تصل إلى API الحي وتتطلب شهادات. يتم تخطيها تلقائيًا إذا لم يتم العثور على شهادات.
go test ./pkg/
إذا كنت تساهم في تغيير هيكل، يرجى التفكير في إضافة أو تحديث اختبار Unmarshal. استخدم استجابة API حقيقية إذا كان بإمكانك التقاط واحدة، وإلا فإن حمولة JSON اصطناعية تعكس سلوك API الفعلي كافية.
المساهمة
لا تتردد في فتح مشكلات على GitHub للاقتراحات والأسئلة والأخطاء. طلبات السحب مرحب بها. البريد الإلكتروني: rewe at byte dot rest.