
Una herramienta para explorar almacenes de datos de Firebase.

Una herramienta para explorar y explotar almacenes de datos de Firebase. Consulte esta publicación en nuestro blog para obtener una visión general de cómo funciona Firebase y por qué desarrollamos esta herramienta.
git clone https://github.com/iosiro/baserunner.gitcd baserunnernpm installnpm run buildnpm startLa interfaz de Baserunner se ve así:

Primero, use el cuadro de texto de configuración para cargar una estructura JSON de configuración de Firebase desde la aplicación que desea probar. Se ve así:
{
"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/"
}
Luego inicie sesión como usuario normal, ya sea con correo electrónico y contraseña o con un número de teléfono móvil. Al iniciar sesión con un número de teléfono móvil, complete el CAPTCHA antes de enviar su número. Luego se le solicitará una OTP de su SMS. Ingrese esto sin completar el CAPTCHA para finalizar el inicio de sesión. Tenga en cuenta que puede omitir este paso para probar consultas sin autenticación.
Finalmente, puede usar la interfaz de consultas para enviar consultas a Cloud Firestore, Realtime Database y Firebase Storage de la aplicación. Baserunner proporciona una serie de consultas de plantilla para acciones comunes. Haga clic en una de ellas para cargarla en el cuadro de texto y reemplace los valores que se ven ==LIKE THIS== con nombres válidos de colecciones, IDs, campos, rutas de archivos, etc.
Como no hay forma de obtener una lista de las colecciones disponibles usando el SDK de JavaScript de Firebase, deberá adivinarlas u obtener sus nombres del JavaScript front-end de la aplicación objetivo.
Baserunner también puede consultar buckets de Firebase Storage. Actualmente, la herramienta admite listar directorios y descargar archivos. Para usar esto, asegúrese de que su configuración de Firebase incluya un campo storageBucket. Las operaciones de almacenamiento funcionarán con la misma autenticación que sus consultas de base de datos.
¿Cómo sé si una aplicación está usando Cloud Firestore o Realtime Database?
Las aplicaciones que usan Realtime Database tendrán una clave databaseURL en sus objetos de configuración. Las aplicaciones sin esta clave se puede asumir que usan Cloud Firestore. Tenga en cuenta que es posible que las aplicaciones de Firebase usen ambos almacenes de datos, por lo que en caso de duda, ejecute ambos tipos de consultas.
¡Estoy siendo bloqueado por CORS!
Para funcionar como se espera, Baserunner espera que las aplicaciones acepten solicitudes desde localhost, lo cual está habilitado por defecto. Por lo tanto, Baserunner no se puede usar como una aplicación alojada.
Si la aplicación que está probando no permite solicitudes desde localhost, aún se puede ejecutar una versión de Baserunner con un conjunto de características reducido abriendo dist/index.html en su navegador. Tenga en cuenta que esta forma de ejecutar Baserunner solo admite inicio de sesión con correo electrónico + contraseña y no inicio de sesión por teléfono.
¿Cómo sé qué colecciones consultar?
Cloud Firestore: Por razones de seguridad, la API de JavaScript del lado del cliente de Firebase no proporciona un mecanismo para listar colecciones. Deberá deducirlas observando el código JavaScript de la aplicación objetivo y haciendo conjeturas fundamentadas.
Realtime Database: Como este almacén de datos se representa como un objeto JSON, puede usar la consulta proporcionada "[Realtime Database] Read datastore" para intentar ver todo el contenido. Tenga en cuenta que esto puede fallar dependiendo de las reglas configuradas.
¿Cómo sé qué archivos hay en Firebase Storage?
Intente listar la raíz (/) primero. Si está protegida, vea qué archivos está accediendo la aplicación que está probando. Puede intentar con carpetas como /uploads o /images.
¿Puedo ver los resultados de consultas anteriores?
Aunque solo se muestra el último resultado de la consulta en la página de Baserunner, todos los resultados se registran en la consola del navegador.
Al ejecutar consultas de Realtime Database, obtengo un error que dice que el cliente está desconectado.
Intente volver a ejecutar la consulta.
¿Cómo inicio sesión con Google?
Encuentre el ID de cliente de Google OAuth de la aplicación (es decir, NUMERIC_STR-ALPHANUMERIC_STR.apps.googleusercontent.com). Puede hacer esto haciendo clic en 'Sign in with Google' en el sitio, inspeccionando el HTML y buscando apps.googleusercontent.com.
Edite su archivo DNS (/etc/hosts en Linux y macOS, C:\Windows\system32\drivers\etc\hosts en Windows) y agregue la siguiente línea:
127.0.0.1 PROJECT_ID.firebaseapp.com
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ./selfsigned.key -out selfsigned.crt
En los avisos, puede dejar todos los campos en blanco excepto Common Name (e.g. server FQDN or YOUR name) [], que debe configurar como PROJECT_ID.firebaseapp.com.
PROJECT_ID.firebaseapp.com de la configuración de su navegador (alternativamente, use un navegador nuevo) para evitar que el navegador bloquee su conexión debido a una discrepancia de certificado (HSTS).Si usa DNS-over-TLS o DNS-over-HTTPS en el navegador que está usando para Baserunner, desactívelo temporalmente para falsificar el origen requerido para el inicio de sesión de Google en Firebase.
Ejecute Baserunner usando npm run startssl y luego cargue https://PROJECT_ID.firebaseapp.com en su navegador.
Ingrese el cliente de Google OAuth que encontró en el paso 1 en el campo debajo de 'Log in with Google' y haga clic en 'Set Google client ID'.
Haga clic en el botón de inicio de sesión de Google e inicie sesión con la cuenta de Google con la que se registró para la aplicación.
Haga clic en el botón 'Set Google login'.
Explore la base de datos como lo haría con una cuenta que no sea de Google.
Cuando termine las pruebas de seguridad, elimine la línea del paso 2 de su archivo DNS.