
أداة لاستكشاف مخازن بيانات Firebase.

أداة لاستكشاف واستغلال مخازن بيانات Firebase. اطلع على هذا المنشور في مدونتنا للحصول على نظرة عامة عن كيفية عمل Firebase ولماذا طورنا هذه الأداة.
git clone https://github.com/iosiro/baserunner.gitcd baserunnernpm installnpm run buildnpm startواجهة Baserunner تبدو كالتالي:

أولاً، استخدم مربع نص الإعدادات لتحميل هيكل JSON الخاص بإعدادات Firebase من التطبيق الذي تريد اختباره. يبدو كالتالي:
{
"apiKey": "API_KEY",
"authDomain": "PROJECT_ID.firebaseapp.com",
"databaseURL": "https://PROJECT_ID.firebaseio.com",
"projectId": "PROJECT_ID",
"storageBucket": "PROJECT_ID.appspot.com",
"messagingSenderId": "SENDER_ID",
"appId": "APP_ID",
"measurementId": "G-MEASUREMENT_ID",
"databaseURL": "https://PROJECT_ID.firebasedatabase.app/"
}
ثم قم بتسجيل الدخول كمستخدم عادي، إما باستخدام البريد الإلكتروني وكلمة المرور أو باستخدام رقم الهاتف المحمول. عند تسجيل الدخول برقم الهاتف المحمول، أكمل اختبار CAPTCHA قبل إرسال رقمك. سيُطلب منك بعد ذلك إدخال رمز OTP من رسالتك النصية. أدخله دون إكمال CAPTCHA لإنهاء تسجيل الدخول. لاحظ أنه يمكنك تخطي هذه الخطوة لاختبار الاستعلامات دون مصادقة.
أخيرًا، يمكنك استخدام واجهة الاستعلام لإرسال الاستعلامات إلى Cloud Firestore وRealtime Database وFirebase Storage الخاصة بالتطبيق. يوفر Baserunner عددًا من استعلامات القوالب للإجراءات الشائعة. انقر على أحدها لتحميله في مربع النص، واستبدل القيم التي تبدو ==LIKE THIS== بأسماء صالحة للمجموعات والمعرفات والحقول ومسارات الملفات، إلخ.
نظرًا لعدم وجود طريقة للحصول على قائمة بالمجموعات المتاحة باستخدام Firebase JavaScript SDK، ستحتاج إلى تخمين هذه الأسماء أو استخلاصها من JavaScript الخاصة بالتطبيق الهدف.
يمكن لـ Baserunner أيضًا الاستعلام عن مجموعات Firebase Storage. في الوقت الحالي، تدعم الأداة سرد الدلائل وتنزيل الملفات. لاستخدام ذلك، تأكد من أن إعدادات Firebase تحتوي على حقل storageBucket. ستعمل عمليات التخزين بنفس المصادقة التي تستخدمها استعلامات قاعدة البيانات.
كيف أعرف إذا كان التطبيق يستخدم Cloud Firestore أم Realtime Database؟
التطبيقات التي تستخدم Realtime Database ستحتوي على مفتاح databaseURL في كائنات إعداداتها. يمكن افتراض أن التطبيقات بدون هذا المفتاح تستخدم Cloud Firestore. لاحظ أنه من الممكن أن تستخدم تطبيقات Firebase كلا المخزنين، لذا في حالة الشك، قم بتشغيل كلا النوعين من الاستعلامات.
أواجه حظرًا بسبب CORS!
لكي يعمل Baserunner كما هو مقصود، يتوقع أن تقبل التطبيقات الطلبات من localhost، وهو ما يتم تمكينه افتراضيًا. لذلك، لا يمكن استخدام Baserunner كتطبيق مستضاف.
إذا كان التطبيق الذي تختبره لا يسمح بالطلبات من localhost، فلا يزال بإمكانك تشغيل نسخة من Baserunner بمجموعة ميزات محدودة عن طريق فتح dist/index.html في متصفحك. لاحظ أن هذه الطريقة لتشغيل Baserunner تدعم فقط تسجيل الدخول بالبريد الإلكتروني وكلمة المرور وليس تسجيل الدخول بالهاتف.
كيف أعرف أي المجموعات يجب الاستعلام عنها؟
Cloud Firestore: لأسباب أمنية، لا توفر واجهة JavaScript من جانب العميل في Firebase آلية لسرد المجموعات. ستحتاج إلى استنتاج هذه المجموعات من خلال النظر في كود JavaScript الخاص بالتطبيق الهدف وتخمينات مدروسة.
Realtime Database: نظرًا لأن هذا المخزن يتم تمثيله ككائن JSON، يمكنك استخدام الاستعلام المقدم "[Realtime Database] Read datastore" لمحاولة عرضه بالكامل. لاحظ أن هذا قد يفشل اعتمادًا على القواعد المكونة.
كيف أعرف الملفات الموجودة في Firebase Storage؟
حاول سرد الجذر (/) أولاً. إذا كان محميًا، اطلع على الملفات التي يصل إليها التطبيق الذي تختبره. قد ترغب في تجربة مجلدات مثل /uploads أو /images.
هل يمكنني رؤية نتائج الاستعلامات السابقة؟
بينما يتم عرض أحدث نتيجة استعلام فقط على صفحة Baserunner، يتم تسجيل جميع النتائج في وحدة تحكم المتصفح.
عند تشغيل استعلامات Realtime Database، أحصل على خطأ يقول أن العميل غير متصل.
حاول إعادة تشغيل الاستعلام.
كيف أسجل الدخول باستخدام Google؟
ابحث عن معرف عميل Google OAuth للتطبيق (أي NUMERIC_STR-ALPHANUMERIC_STR.apps.googleusercontent.com). يمكنك فعل ذلك بالنقر على "تسجيل الدخول باستخدام Google" في الموقع، وفحص HTML، والبحث عن apps.googleusercontent.com.
قم بتحرير ملف DNS الخاص بك (/etc/hosts على Linux وmacOS، C:\Windows\system32\drivers\etc\hosts على Windows) وأضف السطر التالي:
127.0.0.1 PROJECT_ID.firebaseapp.com
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ./selfsigned.key -out selfsigned.crt
عند المطالبات، يمكنك ترك جميع الحقول فارغة باستثناء Common Name (e.g. server FQDN or YOUR name) []، والذي يجب عليك تعيينه إلى PROJECT_ID.firebaseapp.com.
PROJECT_ID.firebaseapp.com من إعدادات المتصفح (بدلاً من ذلك، استخدم متصفحًا جديدًا) لمنع المتصفح من حظر اتصالك بسبب عدم تطابق الشهادة (HSTS).إذا كنت تستخدم DNS-over-TLS أو DNS-over-HTTPS في المتصفح الذي تستخدمه لـ Baserunner، فقم بتعطيله مؤقتًا من أجل تزوير المصدر المطلوب لتسجيل الدخول إلى Google على Firebase.
قم بتشغيل Baserunner باستخدام npm run startssl ثم قم بتحميل https://PROJECT_ID.firebaseapp.com في متصفحك.
أدخل معرف عميل Google OAuth الذي وجدته في الخطوة 1 في الحقل الموجود تحت "تسجيل الدخول باستخدام Google" وانقر على "تعيين معرف عميل Google".
انقر على زر تسجيل الدخول باستخدام Google وقم بتسجيل الدخول باستخدام حساب Google الذي سجلت به في التطبيق.
انقر على زر "تعيين تسجيل الدخول باستخدام Google".
استكشف قاعدة البيانات كما تفعل مع حساب غير Google.
عند الانتهاء من اختبار الأمان، قم بإزالة السطر من الخطوة 2 من ملف DNS الخاص بك.