العودة إلى التحديثات
New releaseSep 6, 2026

rewerse-engineering v1.4.0

هندسة عكسية لـ Rewe API في Go

مشاركة

rewerse engineering

شعار المشروع

عميل غير رسمي لواجهة برمجة تطبيقات REWE بلغتي Go وPython. يطبّق نقاط النهاية المتاحة للجمهور (غير المصادق عليها) التي يستخدمها تطبيق REWE للاستعلام عن الخصومات الحالية (Angebote) والمنتجات والمتاجر وعمليات الاستدعاء.

إصدار APK المدعوم حالياً: 5.16.2 (اعتباراً من 06.08.26)

[!CAUTION] الشهادات المطلوبة للتواصل مع واجهة برمجة تطبيقات rewe غير مضمّنة في هذا المستودع. تحتاج إلى استخراجها من ملف APK. يمكن العثور على التوثيق وبرنامج نصي للاستخراج لنظام ويندوز في دليل docs.

انظر أيضاً rewerse-ui.

بدء سريع

استخراج الشهادات من ملف rewe apk؛ راجع docs للحصول على التعليمات

استخدام المكتبة:

  • Go: go get github.com/ByteSizedMarius/rewerse-engineeringdocs
  • Python: pip install rewersedocs

أو تثبيت واجهة سطر الأوامر:

  • تنزيل إصدار
  • أو التثبيت عبر 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 باستخدام Cloudflare MTLS لتأمين نقاط نهاية واجهة برمجة التطبيقات الخاصة بها، مما عطّل الحلول الحالية التي سمحت، على سبيل المثال، بجلب الخصومات لمتجر Rewe محدد. كان مستخدم Github @torbenpfohl مهووساً مثابراً بما يكفي لمعرفة ذلك، والعثور على الشهادة وكلمة المرور الخاصة بها. يعتمد هذا المستودع على عمله ويهدف إلى توثيق الإجراءات المطلوبة وتنفيذ بعض نقاط النهاية.

إخلاء مسؤولية

هذا المشروع غير تابع لـ REWE-ZENTRALFINANZ eG أو معتمد منها أو مدعوم من قبلها. "REWE" هي علامة تجارية مسجلة لمالكها المعني.

هذا عميل غير رسمي يعتمد على حركة مرور الشبكة القابلة للملاحظة علناً من تطبيق REWE للجوال. يتم توفيره لأغراض تعليمية وبحثية. واجهة برمجة التطبيقات الأساسية غير موثقة وقد تتغير أو تتعطل في أي وقت دون إشعار.

استخدام هذا البرنامج على مسؤوليتك الخاصة. يتحمل المستخدمون مسؤولية ضمان امتثال استخدامهم لشروط الخدمة المعمول بها.

المحتويات

  • تنفيذ أساسي بلغة go لواجهة برمجة تطبيقات rewe متاح في دليل pkg؛ راجع pkg/readme لتوثيق واجهة برمجة التطبيقات لمكتبة go بما في ذلك أمثلة الاستخدام.
  • غلاف Python عبر ffi متاح باسم rewerse على PyPI – راجع python/readme للتفاصيل والكود المصدري.
  • الكود المصدري لواجهة سطر الأوامر لمكتبة go موجود في cmd.
  • الإصدارات موجودة في releases.

[!NOTE] يرجى ملاحظة أنه نظراً لأن هذا ملف ثنائي go غير موقّع يقوم ببعض عمليات التشفير/فك التشفير للشهادات ويرسل طلبات ويب إلى واجهة برمجة تطبيقات rewe، فمن المحتمل أن يتم الإبلاغ عنه من قبل برنامج مكافحة الفيروسات لديك. لا توجد تبعيات، لذا يمكنك بسهولة تجميعه بنفسك – وهو أمر موصى به دائماً من منظور أمني.

نقاط النهاية المحذوفة

لم يعد التطبيق يحتوي على نقطة نهاية للإكمال التلقائي ويستخدم فقط بحث المنتجات العادي، لذا تمت إزالة اقتراحات المنتجات.

واجهة سطر الأوامر

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 للاقتراحات والأسئلة والأخطاء. الترحيب بطلبات السحب (PRs). البريد الإلكتروني: rewe at byte dot rest.

الإسناد

الفئات