Cómo ver el tráfico de tu aplicación móvil: guía paso a paso con mitmproxy y Charles
Contenido del artículo
- Introducción: por qué un desarrollador y un tester necesitan ver el tráfico de su aplicación
- Preparación previa: herramientas, requisitos y qué instalar
- Conceptos básicos: cómo funciona un proxy mitm y por qué necesitas tu propio certificado
- Paso 1: configurar el proxy en la red en android e ios
- Paso 2: instalar y confiar en el certificado raíz
- Paso 3: lo mismo en el emulador de android y el simulador de ios
- Paso 4: trabajar con ssl pinning en tu compilación de depuración
- Paso 5: leer y analizar el tráfico
- Cómo los proxies móviles ayudan a probar la aplicación desde otra red y región
- Verificación de resultados: lista de verificación de configuración exitosa
- Errores típicos y soluciones
- Opciones adicionales y configuraciones avanzadas
- Faq: preguntas frecuentes
- Conclusión
¿Desarrollas o pruebas una aplicación móvil y quieres saber exactamente qué solicitudes envía al servidor y qué recibe como respuesta? Esta guía paso a paso te llevará desde cero hasta tener control total sobre el tráfico de red de tu propia aplicación. Analizaremos las herramientas más populares de 2026, aprenderemos a instalar un certificado de confianza en el teléfono, emulador y simulador, y también a evitar cuidadosamente el SSL pinning en compilaciones de depuración usando métodos estándar.
Importante desde el principio: todo lo descrito a continuación se aplica exclusivamente a tu propia aplicación o a una que tengas autorización por escrito para investigar. Este material es para ingenieros de calidad y desarrolladores, no una instrucción para interferir en programas ajenos. Hablaremos de esto en detalle en la sección sobre reglas y ética.
Introducción: por qué un desarrollador y un tester necesitan ver el tráfico de su aplicación
La aplicación móvil se comunica constantemente con el servidor: inicia sesión, carga el catálogo de productos, envía analíticas, sincroniza datos. Mientras todo funciona, estas solicitudes permanecen invisibles. Pero en cuanto algo falla, la pregunta siempre es la misma: ¿qué fue exactamente al servidor y qué regresó?
Saber leer el tráfico de tu propia aplicación resuelve varios problemas a la vez:
- Verificación de integraciones. Ves el formato exacto de las solicitudes a tu API, encabezados, cuerpo, códigos de respuesta. Es fácil entender quién tiene la culpa de un error: el cliente o el backend.
- Reproducción de errores. Cuando un tester reporta un problema, puedes ver la secuencia real de solicitudes y repetir el escenario.
- Auditoría de fugas. Verificas si se está filtrando información innecesaria: tokens en logs, datos personales en analíticas, campos redundantes.
- Pruebas de escenarios de error. Puedes modificar la respuesta del servidor y ver cómo se comporta la aplicación ante un error 500 o un timeout.
¿Qué obtendrás al final?
Después de seguir la guía, podrás levantar un proxy local en tu computadora, dirigir el tráfico del teléfono a través de él, descifrar solicitudes HTTPS protegidas, leerlas en una interfaz cómoda, repetirlas y modificar las respuestas. Todo esto para tu propia aplicación.
¿Para quién es esta guía?
El material está escrito para ingenieros QA, desarrolladores móviles y especialistas técnicos que quieran entender la capa de red de su aplicación. Nivel: para principiantes, pero con elementos para avanzados.
¿Qué necesitas saber de antemano?
Basta con una comprensión básica de qué es una solicitud HTTP, un servidor y un cliente. Conocer la línea de comandos es una ventaja, pero también analizaremos herramientas gráficas. No se requieren conocimientos profundos de criptografía.
¿Cuánto tiempo tomará?
La primera configuración tomará entre una y dos horas, incluyendo la instalación de herramientas y certificados. Los lanzamientos posteriores tomarán solo un par de minutos.
Preparación previa: herramientas, requisitos y qué instalar
Antes de sumergirnos en el tráfico, armemos el entorno de trabajo. Analizaremos cuatro herramientas populares y elegiremos la que más te convenga.
Comparación de herramientas: mitmproxy, Charles, Proxyman y Burp
Cada una de estas herramientas funciona como un proxy MITM, es decir, un intermediario entre tu aplicación y el servidor. Las diferencias están en la interfaz, el precio y la comodidad.
- mitmproxy. Gratuito y de código abierto. Funciona en la terminal, pero también tiene una interfaz web llamada mitmweb. Ideal para quienes aman los scripts y la automatización con Python. Multiplataforma.
- Charles. De pago, con período de prueba. Interfaz gráfica clásica en Java, funciona en Windows, macOS y Linux. Muy popular entre los QA móviles por su simplicidad.
- Proxyman. Herramienta moderna con interfaz atractiva, originalmente para macOS, con versiones para Windows y Linux. Configuración automática de certificados muy útil.
- Burp Suite. Herramienta del mundo de la seguridad. Potente, tiene una versión gratuita Community. Un poco excesiva para solo ver tráfico, pero útil para análisis avanzados.
Consejo: Si eres principiante y quieres ver resultados rápido, empieza con Charles o Proxyman. Si te gusta la terminal y la automatización, instala mitmproxy. Para los fines de esta guía, nos basaremos en mitmproxy y Charles por ser las opciones más universales.
Requisitos del sistema
- Computadora con Windows, macOS o Linux y permisos de administrador.
- Dispositivo móvil o emulador de Android o simulador de iOS.
- Una red Wi-Fi compartida para el teléfono y la computadora, o un emulador configurado.
- Acceso al código fuente de tu aplicación para compilar una versión de depuración.
Qué descargar e instalar
- Descarga la herramienta proxy seleccionada desde su sitio web oficial. Para mitmproxy, es el instalador para tu sistema operativo o un paquete a través del gestor de paquetes.
- Instala la herramienta siguiendo el asistente de instalación estándar para tu sistema.
- Para el emulador de Android, instala Android Studio con el emulador y una imagen del sistema sin servicios de Google, si quieres trabajar fácilmente con el almacén de certificados del sistema.
- Para el simulador de iOS en macOS, instala Xcode desde la App Store.
⚠️ Atención: Descarga las herramientas solo desde los sitios web oficiales de los desarrolladores. Los programas proxy tienen acceso profundo al tráfico, por lo que las falsificaciones pueden ser peligrosas. Verifica las firmas de los instaladores cuando sea posible.
Copias de seguridad y preparación del dispositivo
Trabajar con certificados y configuraciones de red suele ser seguro y reversible. Pero antes de hacer cambios, vale la pena tomar precauciones.
- Anota la configuración Wi-Fi actual del teléfono para poder restaurarla después.
- Usa un dispositivo de prueba separado o un perfil para los experimentos, no tu teléfono principal de trabajo.
- Si trabajas con un dispositivo laboral, recuerda qué certificados instalaste para eliminarlos después de la depuración.
✅ Verificación: En este punto, debes tener instalada la herramienta proxy, un dispositivo de prueba o emulador listo, y acceso a la compilación de tu aplicación.
Conceptos básicos: cómo funciona un proxy MITM y por qué necesitas tu propio certificado
Para avanzar con confianza, analicemos los términos clave en palabras sencillas. Esta es la base sin la cual los pasos parecerán magia.
¿Qué es un proxy MITM?
MITM significa hombre en el medio. El proxy se coloca entre tu aplicación y el servidor. La aplicación cree que está hablando con el servidor, y el servidor cree que está hablando con la aplicación. En realidad, ambos se comunican con el proxy, que puede ver y mostrar todo el tráfico.
Para HTTP normal, esto funciona de inmediato: los datos se transmiten en texto claro. Pero las aplicaciones modernas usan HTTPS, donde el tráfico está cifrado. Aquí comienza lo interesante.
¿Qué sucede durante el handshake TLS?
HTTPS se basa en el protocolo TLS. Cuando la aplicación se conecta al servidor, realizan el llamado handshake. El servidor presenta su certificado, que confirma que es quien dice ser. La aplicación verifica este certificado contra la lista de autoridades de certificación de confianza.
Autoridad de certificación, o CA, es una organización en la que los dispositivos confían. Su firma en el certificado del servidor convence a la aplicación de que la conexión es segura.
¿Por qué necesitas tu propio certificado CA?
Para que el proxy pueda mostrar el tráfico cifrado, debe actuar como servidor para la aplicación. Para ello, el proxy genera sobre la marcha un certificado para cada dominio solicitado y lo firma con su propio certificado raíz CA.
Pero la aplicación, por defecto, no confía en esta CA casera. Por eso instalamos manualmente el certificado raíz del proxy en el almacén de certificados de confianza del dispositivo. Después de eso, la aplicación ve la firma del proxy como confiable y establece la conexión sin problemas.
Consejo: Piensa en el certificado raíz del proxy como un pase. Mientras no le des este pase al dispositivo, no permitirá que el proxy lea el tráfico protegido.
¿Por qué sin confianza solo se ve el nombre del host en SNI?
Si el certificado del proxy no está instalado, la aplicación se negará a establecer una conexión segura a través de él. Pero aún así se verá algo. Al inicio del handshake TLS se transmite el campo SNI, es decir, el nombre del servidor al que se conecta. Esto es necesario para que el servidor sepa qué sitio se está solicitando.
Por lo tanto, incluso sin confiar en el certificado, verás la lista de dominios a los que se conecta la aplicación, pero no podrás leer el contenido de las solicitudes y respuestas. Para leer el contenido se necesita un certificado instalado y de confianza.
¿Qué es SSL pinning?
SSL pinning, o fijación de certificados, es una protección adicional. La aplicación almacena internamente la huella digital del certificado o clave del servidor esperado y verifica que el servidor presente exactamente ese certificado. Incluso si hay un certificado de proxy de confianza en el sistema, la aplicación con pinning lo rechazará porque la huella digital no coincide. Sobre cómo trabajar con pinning en tus compilaciones de depuración hablaremos por separado.
✅ Verificación: Entiendes que el proxy muestra el tráfico al ser un intermediario, y que para leer HTTPS se necesita un certificado raíz de proxy de confianza en el dispositivo.
Paso 1: configurar el proxy en la red en Android e iOS
Objetivo de la etapa: dirigir todo el tráfico web del teléfono a través de tu computadora, donde se ejecuta la herramienta proxy.
Preparar la computadora y conocer su dirección
- Asegúrate de que la computadora y el teléfono estén conectados a la misma red Wi-Fi.
- Inicia la herramienta proxy. Para mitmweb, en la terminal ingresa el comando para iniciar la interfaz web; para Charles, simplemente abre la aplicación.
- Verifica en qué puerto escucha el proxy. Por defecto, mitmproxy usa el puerto 8080, Charles también 8888 o 8080 según la versión.
- Obtén la dirección IP local de tu computadora en la red. En Windows es el comando para ver la configuración de red; en macOS y Linux un comando similar en la terminal. La dirección se ve aproximadamente como 192.168.1.15.
Consejo: Anota la dirección IP de la computadora y el puerto del proxy en un papel. Estos dos valores los ingresarás en la configuración del teléfono.
Configurar proxy en Android
- Abre la aplicación Ajustes en tu teléfono.
- Ve a la sección Red e internet, luego Wi-Fi.
- Toca el nombre de tu red actual para abrir sus parámetros.
- Busca la opción Avanzado o el icono de lápiz para editar la red.
- En el campo Proxy, selecciona Manual.
- En el campo Nombre de host del proxy, ingresa la dirección IP de la computadora, por ejemplo 192.168.1.15.
- En el campo Puerto, ingresa el puerto del proxy, por ejemplo 8080.
- Guarda la configuración tocando Guardar.
Configurar proxy en iOS
- Abre la aplicación Ajustes.
- Ve a la sección Wi-Fi.
- Toca el icono azul de información junto al nombre de tu red.
- Desplázate hacia abajo hasta la sección Configurar proxy HTTP.
- Selecciona el modo Manual.
- En el campo Servidor, ingresa la dirección IP de la computadora.
- En el campo Puerto, ingresa el puerto del proxy.
- Regresa; la configuración se guardará automáticamente.
⚠️ Atención: Después de configurar el proxy, todo el tráfico web del teléfono pasará por la computadora. Si la herramienta proxy está apagada, el internet en el teléfono dejará de funcionar. Esto es normal: simplemente enciende el proxy o elimina la configuración.
Resultado esperado
Abre un navegador en el teléfono y visita un sitio web simple por HTTP. En la interfaz del proxy deberían aparecer registros de las solicitudes. Por ahora, HTTPS se mostrará solo como nombre de host, porque el certificado aún no está instalado.
Posibles problemas. Si no aparece nada, verifica que el teléfono y la computadora estén en la misma red, que hayas ingresado la IP y el puerto correctos, y que el firewall de la computadora no esté bloqueando las conexiones.
✅ Verificación: En la ventana del proxy se ven solicitudes entrantes desde el teléfono, al menos como lista de dominios.
Paso 2: instalar y confiar en el certificado raíz
Objetivo de la etapa: hacer que el dispositivo confíe en el certificado raíz del proxy y permita leer el contenido de las solicitudes HTTPS.
Descargar el certificado del proxy
Cuando el proxy está configurado y el teléfono pasa por él, hay una forma cómoda de obtener el certificado directamente en el dispositivo.
- Abre el navegador en el teléfono.
- Para mitmproxy, ve a la dirección especial de servicio mitm.it. Esta página aparece solo cuando el tráfico pasa por mitmproxy.
- Verás botones para diferentes plataformas. Selecciona la que corresponda, por ejemplo Android o Apple.
- Se descargará un archivo de certificado.
- Para Charles, el certificado también está disponible a través de una dirección de servicio que muestra el propio programa en el menú de ayuda.
Instalación en Android 7 y versiones posteriores
A partir de Android 7, el sistema divide dos almacenes de certificados: el de usuario y el del sistema. Este es un punto muy importante.
- Almacén de usuario. Aquí puedes instalar un certificado sin permisos root. Pero las aplicaciones, por defecto, no confían en los certificados de usuario, a menos que el desarrollador lo haya permitido explícitamente en la configuración de la aplicación.
- Almacén del sistema. Todas las aplicaciones confían en él, pero agregar un certificado allí solo es posible en un dispositivo con acceso root o en un emulador con una imagen sin servicios de Google.
Para instalar en el almacén de usuario, sigue estos pasos:
- Abre Ajustes, luego Seguridad.
- Busca la opción Cifrado y credenciales o Configuración adicional de seguridad.
- Selecciona Instalar certificado, luego Certificado CA.
- El sistema te advertirá sobre los riesgos; confirma la instalación.
- Indica el archivo de certificado descargado.
- Asigna al certificado un nombre descriptivo, por ejemplo DebugProxy.
Importante: Precisamente debido a la separación de almacenes en Android 7 y versiones posteriores, tu aplicación puede no ver el tráfico, incluso si el certificado está instalado en el almacén de usuario. La solución mediante la configuración de la aplicación la veremos en el paso sobre pinning.
Instalación y confianza en iOS
En iOS, el proceso se divide en dos etapas: instalar el perfil y activar la confianza.
- Después de descargar el certificado, iOS notificará que el perfil se ha descargado.
- Abre Ajustes; en la parte superior aparecerá la opción Perfil descargado.
- Tócalo y selecciona Instalar en la esquina superior derecha.
- Ingresa el código de bloqueo del dispositivo, si lo tiene.
- Confirma la instalación del perfil.
Ahora el paso clave que a menudo se olvida: activar la confianza total.
- Abre Ajustes, luego General.
- Ve a la sección Acerca de este dispositivo.
- Desplázate hacia abajo hasta la opción Confianza en certificados.
- Busca tu certificado del proxy en la lista.
- Activa el interruptor junto a él para habilitar la confianza total en el certificado raíz.
⚠️ Atención: Sin activar el interruptor en la sección Confianza en certificados, iOS considerará el certificado instalado pero no confiable. El tráfico HTTPS no se podrá leer. Este es el error más común de los principiantes en iOS.
Resultado esperado
Abre el navegador y visita cualquier sitio web por HTTPS. Ahora, en la interfaz del proxy deberías ver el contenido completo de las solicitudes y respuestas, no solo los nombres de los dominios.
✅ Verificación: En la herramienta proxy se muestra el contenido descifrado de las solicitudes HTTPS desde el navegador del teléfono.
Paso 3: lo mismo en el emulador de Android y el simulador de iOS
Objetivo de la etapa: configurar la captura de tráfico sin un dispositivo físico, directamente en la computadora del desarrollador.
Emulador de Android
El emulador es útil porque puedes usar una imagen sin servicios de Google y obtener acceso al almacén de certificados del sistema.
- En Android Studio, abre Device Manager y crea un dispositivo virtual.
- Al elegir la imagen del sistema, prefiere una variante sin la etiqueta Google Play para tener permisos sobre la partición del sistema.
- Inicia el emulador.
- En la configuración avanzada del emulador puedes especificar el proxy directamente, o configurarlo en los ajustes Wi-Fi dentro del emulador igual que en un teléfono real.
- Para el almacén del sistema, usa herramientas de línea de comandos que permitan reiniciar el emulador con permiso de escritura en la partición del sistema y agregar allí el certificado.
Consejo: El emulador sin servicios de Google y con acceso al almacén del sistema te evita muchos problemas con la confianza de certificados. Es la mejor opción para depuración regular.
Simulador de iOS
El simulador de iOS en macOS utiliza los certificados de confianza del propio sistema macOS, lo que simplifica la configuración.
- Instala el certificado raíz del proxy en el llavero del sistema de tu Mac.
- Abre la aplicación Llavero, busca el certificado del proxy.
- Haz doble clic para abrirlo y, en la sección Confianza, establece el valor Siempre confiar.
- Inicia el simulador desde Xcode. Heredará la confianza en el certificado desde macOS.
- El tráfico del simulador pasará a través del proxy del sistema de Mac, si está configurado, o a través del proxy definido en la configuración de red.
Resultado esperado. En ambos casos, ves el tráfico descifrado de la aplicación de prueba o del navegador ejecutándose en el emulador o simulador.
Posibles problemas. Si el emulador de Android no adopta el proxy, verifica la configuración Wi-Fi dentro de él y los parámetros de inicio. Para el simulador de iOS, asegúrate de que el certificado en el llavero esté marcado como confiable.
✅ Verificación: El tráfico desde el emulador o simulador se lee en la herramienta proxy de forma descifrada.
Paso 4: trabajar con SSL pinning en tu compilación de depuración
Objetivo de la etapa: entender si la aplicación tiene fijación de certificados y debilitarla correctamente solo en la compilación de depuración usando los medios estándar de la plataforma.
Esta es la sección más importante, así que abordémosla con cuidado.
Cómo saber si el pinning está activado
Si el certificado del proxy está instalado y es confiable, el navegador muestra tráfico, pero tu aplicación aún no funciona o se queja de un error de red, lo más probable es que tenga pinning.
- En la interfaz del proxy verás una interrupción de la conexión en la etapa de handshake TLS para los dominios de tu aplicación.
- En los registros de la aplicación pueden aparecer mensajes de error de verificación de certificado o cadena no confiable.
- A menudo el desarrollador mismo sabe que se agregó pinning intencionalmente para proteger la versión de producción.
Debilitar el pinning en Android mediante network_security_config
Android proporciona un mecanismo estándar de configuración de seguridad de red. Con él, puedes permitir la confianza en certificados de usuario solo para la compilación de depuración.
- En el proyecto, crea un archivo de configuración de seguridad de red en los recursos.
- En él, describe las reglas de confianza para certificados específicamente para la configuración de depuración, utilizando un bloque especial para anulaciones de depuración.
- Indica que en depuración la aplicación confía en el almacén de certificados de usuario.
- Vincula este archivo en el manifiesto de la aplicación mediante el atributo correspondiente.
- Asegúrate de que las anulaciones de depuración se apliquen solo cuando la aplicación esté compilada en modo de depuración y nunca en la versión de producción.
Importante: El bloque especial de anulaciones de depuración funciona solo cuando la aplicación está marcada como depurable. En la compilación de producción, estas reglas son completamente ignoradas por el sistema, lo que garantiza la seguridad.
Debilitar las comprobaciones en iOS mediante ajustes en Info.plist
En iOS, la seguridad del transporte está controlada por el mecanismo ATS. En la compilación de depuración, se pueden relajar las comprobaciones estrictas para dominios específicos de tu entorno de prueba.
- Abre el archivo Info.plist de tu configuración de depuración.
- Agrega la configuración de seguridad de transporte para los dominios del servidor de prueba que necesites.
- Recuerda que ATS regula la política de conexiones, pero el pinning personalizado en el código de la aplicación debe desactivarse por separado.
- Si el pinning está implementado en el código, agrega una condición para que la verificación de la huella digital se realice solo en la configuración de producción.
⚠️ Atención: Nunca dejes las comprobaciones debilitadas en la compilación de producción. Esto crea una vulnerabilidad real para los usuarios de tu aplicación. Todos los cambios deben aplicarse estrictamente en la configuración de depuración y desaparecer automáticamente en producción.
¿Por qué solo en depuración y nunca en producción?
SSL pinning protege a los usuarios de tu aplicación contra la interceptación de su tráfico. Al desactivarlo en depuración, lo haces en tu dispositivo controlado, con fines de diagnóstico, de forma consciente y temporal. En producción, esta protección es críticamente importante y debe mantenerse lo más estricta posible.
Consejo: Separa la lógica de verificación de certificados mediante una bandera de compilación. Configúralo de manera que ni siquiera accidentalmente se pueda compilar una versión de producción con comprobaciones debilitadas. Esto te protegerá de errores humanos.
Resultado esperado
Después de configurar correctamente la compilación de depuración, tu aplicación establece la conexión a través del proxy y ves sus solicitudes y respuestas descifradas.
✅ Verificación: Las solicitudes de tu aplicación a su API se muestran en el proxy en formato legible, y los cambios solo afectan a la compilación de depuración.
Paso 5: leer y analizar el tráfico
Objetivo de la etapa: aprender a encontrar las solicitudes necesarias, filtrar el ruido, exportar datos, repetir solicitudes y modificar respuestas.
Filtros y búsqueda
Incluso una aplicación pequeña genera decenas de solicitudes. Los filtros ayudan a encontrar lo que necesitas.
- Usa un filtro por dominio para dejar solo las solicitudes a tu API.
- Filtra por tipo de contenido, por ejemplo solo respuestas JSON.
- Busca por una cadena en el cuerpo de la solicitud o respuesta para encontrar rápidamente la llamada deseada.
- En Charles hay un árbol por hosts muy útil; en mitmweb, una barra de filtros flexible.
Consejo: Configura el filtro para que solo se muestren los dominios de tu aplicación. Esto eliminará de inmediato el tráfico de fondo del sistema y de servicios de terceros.
Exportar a HAR
El formato HAR es una forma estándar de guardar una sesión de tráfico en un solo archivo. Es útil para compartir con el equipo de backend o adjuntar a un reporte de error.
- Selecciona las solicitudes que necesites o toda la sesión.
- Elige la opción de exportar al formato HAR en el menú de la herramienta.
- Guarda el archivo y adjúntalo a la tarea en el gestor de proyectos.
Repetir solicitud
A veces es necesario repetir la misma solicitud varias veces, por ejemplo para verificar idempotencia o reproducir un error.
- Selecciona la solicitud deseada en la lista.
- Usa la función de repetición; en Charles es Repeat, en mitmproxy el comando para repetir el flujo.
- Si es necesario, edita la solicitud antes de repetirla, modificando encabezados o el cuerpo.
Modificar la respuesta para probar escenarios de error
Esta es una capacidad poderosa. Puedes hacer que la aplicación reciba la respuesta que necesitas en lugar de la real.
- Configura una regla de modificación; en Charles son las funciones Map Local o Breakpoints, en mitmproxy scripts en Python.
- Define que, al realizar una solicitud a una dirección determinada, se devuelva una respuesta preparada de antemano, por ejemplo un error 500 o una lista vacía.
- Ejecuta el escenario en la aplicación y observa cómo maneja el error.
Consejo: Con la modificación de respuestas es útil probar el comportamiento de la aplicación ante mala conexión a internet, errores del servidor y datos inesperados, sin tocar el backend real.
✅ Verificación: Sabes filtrar tráfico, exportar HAR, repetir solicitudes y modificar respuestas en tu aplicación.
Cómo los proxies móviles ayudan a probar la aplicación desde otra red y región
Vale la pena mencionar por separado los proxies móviles. Son servidores proxy que funcionan a través de redes móviles reales de operadores. Son útiles para probar cómo se comporta tu aplicación cuando un usuario accede desde internet móvil en otra región.
¿Para qué sirve esto a QA?
- Verificación de contenido regional. Muchas aplicaciones muestran datos diferentes según la región del usuario. Un proxy móvil permite ver la aplicación desde la perspectiva de un usuario en la región deseada.
- Pruebas en red móvil. El comportamiento de la aplicación en internet móvil difiere del Wi-Fi: otras latencias, cambio de IP, peculiaridades de las redes de operadores. Un proxy móvil ayuda a reproducir esas condiciones.
- Verificación de lógica dependiente de la ubicación. Si tu backend determina la región por IP, puedes asegurarte de que la lógica funcione correctamente para diferentes lugares.
Importante: Usa proxies móviles solo para probar tu propia aplicación y dentro de la ley. Es una herramienta de QA para verificar la corrección de la lógica regional, no un medio para evadir algo. Servicios de proxies móviles como MobileProxy.space brindan acceso legal a IPs móviles para tales tareas.
Consejo: Combina un proxy móvil para cambiar el punto de salida con un proxy MITM local para leer el tráfico. Así verás simultáneamente el contenido de las solicitudes y comprobarás el comportamiento regional.
Verificación de resultados: lista de verificación de configuración exitosa
Revisa esta lista para asegurarte de que todo funciona como debería.
- La herramienta proxy está ejecutándose y escuchando en el puerto adecuado.
- El teléfono, emulador o simulador dirige el tráfico a través del proxy.
- El certificado raíz del proxy está instalado y es de confianza en el dispositivo.
- El tráfico HTTPS del navegador se lee de forma descifrada.
- En la compilación de depuración de la aplicación se ha debilitado el pinning usando medios estándar.
- Las solicitudes de tu aplicación a la API se muestran completamente en el proxy.
- Sabes filtrar, exportar, repetir y modificar solicitudes.
Cómo probar
- Inicia la compilación de depuración de la aplicación.
- Ejecuta un escenario típico, como iniciar sesión y cargar la pantalla principal.
- Verifica que en el proxy aparezcan solicitudes a tu API con cuerpo legible.
- Repite una solicitud y modifica una respuesta para comprobar la reacción de la aplicación.
Indicadores de éxito. Ves el ciclo de vida completo de la interacción de red de tu aplicación y puedes influir en él para realizar pruebas.
Errores típicos y soluciones
Analicemos problemas comunes con su causa y solución.
La aplicación ignora el proxy del sistema
Problema: el tráfico no aparece en el proxy, aunque el navegador funciona. Causa: la aplicación usa su propia pila de red que no lee la configuración de proxy del sistema. Solución: en la compilación de depuración, configura el cliente de red para que tenga en cuenta el proxy del sistema, o utiliza el modo de proxy transparente a nivel de red.
El tráfico por QUIC no es visible
Problema: faltan algunas solicitudes. Causa: la aplicación utiliza el protocolo QUIC sobre UDP, que los proxies HTTP comunes no interceptan. Solución: en la compilación de depuración, desactiva temporalmente el soporte de QUIC en el cliente de red para que el tráfico vaya por HTTPS normal y sea visible en el proxy.
Detalles de Android 14
Problema: el certificado está instalado pero la aplicación no lo ve. Causa: en versiones recientes de Android, las reglas de gestión de certificados de usuario se han vuelto más estrictas, y las aplicaciones por defecto no confían en ellos. Solución: usa la configuración de seguridad de red con anulaciones de depuración o el almacén del sistema en un emulador.
iOS no descifra el tráfico
Problema: las solicitudes de la aplicación en iOS no se leen. Causa: el certificado está instalado pero no se ha activado la confianza total en la sección Confianza en certificados. Solución: ve a Ajustes, General, Acerca de este dispositivo, Confianza en certificados y activa el interruptor.
gRPC y HTTP/2
Problema: los datos se ven pero en un formato binario incomprensible. Causa: la aplicación usa gRPC sobre HTTP/2 con serialización binaria. Solución: usa herramientas que entiendan HTTP/2 y, si es necesario, complementos para decodificar el formato de los mensajes y así leer el contenido.
Sin internet después de configurar el proxy
Problema: el teléfono dejó de tener conexión a internet. Causa: la herramienta proxy está apagada, pero la configuración del proxy permanece. Solución: enciende el proxy en la computadora o elimina la configuración del proxy en los ajustes Wi-Fi del teléfono.
El firewall bloquea las conexiones
Problema: el teléfono no puede conectarse al proxy. Causa: el firewall de la computadora bloquea las conexiones entrantes al puerto del proxy. Solución: agrega una regla de permiso para el puerto del proxy en el firewall del sistema.
Opciones adicionales y configuraciones avanzadas
Una vez dominada la configuración básica, vale la pena ampliar el arsenal.
Scripts y automatización
mitmproxy permite escribir scripts en Python que modifiquen automáticamente solicitudes y respuestas. Esto es útil para pruebas de regresión y escenarios complejos de modificación.
Guardar sesiones
Guarda las sesiones de tráfico grabadas en archivos para volver a ellas más tarde o compartirlas con el equipo. Esto acelera el análisis de errores.
Mapeo a archivos locales
La función de modificar la respuesta con un archivo local permite desarrollar la interfaz de la aplicación independientemente de la disponibilidad del backend. Simplemente le entregas a la aplicación respuestas JSON preparadas de antemano.
Limitación de velocidad
Muchos proxies pueden ralentizar artificialmente la conexión. Esto ayuda a probar el comportamiento de la aplicación en una red lenta y encontrar problemas con tiempos de espera.
Consejo: Crea un conjunto de escenarios típicos de modificación y ralentización y reutilízalos en cada lanzamiento. Esto convertirá la depuración manual en un proceso de prueba repetible.
FAQ: preguntas frecuentes
¿Se necesita root en Android para leer el tráfico?
Para el almacén de usuario y tu propia aplicación con configuración de depuración, no se necesita root. Para el almacén del sistema en un dispositivo real se requiere root, pero es más fácil usar un emulador sin servicios de Google.
¿Se puede prescindir de instalar el certificado?
Sin un certificado de confianza, solo verás los nombres de dominio en SNI, pero no el contenido de HTTPS. Para leer las solicitudes, el certificado es obligatorio.
¿Por qué el navegador ve el tráfico pero la aplicación no?
Lo más probable es que la aplicación tenga SSL pinning activado o su propia pila de red. Configura la compilación de depuración como se describe en el paso sobre pinning.
¿Es seguro instalar el certificado raíz del proxy?
En un dispositivo de prueba y durante el tiempo de depuración, es aceptable. Después del trabajo, elimina el certificado para no dejar una confianza extendida en el dispositivo.
¿Qué hacer si el tráfico va por QUIC?
Desactiva QUIC en la compilación de depuración del cliente de red para que las conexiones vayan por HTTPS normal y sean visibles para el proxy.
¿Se puede analizar el tráfico de una aplicación ajena?
No. Solo de tu propia aplicación o de una con permiso explícito del propietario. Esta es una regla fundamental.
¿Charles o mitmproxy? ¿Qué elegir para un principiante?
Charles es más fácil para empezar gracias a su interfaz gráfica. mitmproxy es más potente para automatización. Empieza con el que te resulte más cómodo.
¿Cómo eliminar todos los cambios después de la depuración?
Elimina la configuración del proxy en Wi-Fi, elimina el certificado instalado en los ajustes de seguridad y compila la aplicación en configuración de producción con todas las comprobaciones activas.
¿Por qué en iOS no funciona la confianza en el certificado?
Instalaste el perfil, pero no activaste la confianza total en la sección Confianza en certificados. Ese es un paso adicional obligatorio.
¿Se puede ver el tráfico en una red lenta?
Sí, muchos proxies pueden ralentizar artificialmente la conexión para probar el comportamiento de la aplicación con mala conexión a internet.
Conclusión
Felicitaciones, ahora tienes un conjunto completo de habilidades para analizar el tráfico de red de tu propia aplicación móvil. Has aprendido a elegir entre mitmproxy, Charles, Proxyman y Burp, levantar un proxy local, dirigir el tráfico del teléfono, emulador y simulador a través de él.
Has entendido cómo funciona un proxy MITM y por qué se necesita un certificado raíz de confianza, has dominado los detalles de los almacenes de certificados en Android 7 y versiones posteriores, y el paso obligatorio de confianza en iOS. Has comprendido cómo debilitar cuidadosamente y solo en la compilación de depuración el SSL pinning usando los medios estándar de la plataforma, sin tocar nunca la versión de producción.
Finalmente, sabes leer, filtrar, exportar, repetir y modificar solicitudes, así como usar proxies móviles para verificar el comportamiento regional de la aplicación dentro de la ley.
¿Qué hacer a continuación?
Refuerza la habilidad en un proyecto real: configura la captura de tráfico de tu aplicación y agrega al proceso de prueba escenarios típicos de modificación de respuestas. Poco a poco, explora los scripts de automatización y comparte las sesiones de tráfico con el equipo.
Hacia dónde seguir profundizando: adéntrate en el análisis de HTTP/2 y gRPC, aprende a escribir scripts para mitmproxy, domina la integración de la captura de tráfico en pruebas automatizadas. Y recuerda siempre la regla principal: trabaja solo con tu propia aplicación o con permiso explícito del propietario, cumpliendo la legislación y respetando la privacidad de los usuarios.