Volver al blog

Charles Proxy para depuración de aplicaciones móviles: guía completa para interceptar tráfico y analizar HTTP/HTTPS

Charles Proxy es una herramienta poderosa para interceptar y analizar el tráfico HTTP/HTTPS de aplicaciones móviles. Descubre cómo configurarlo para depuración, pruebas y trabajo con proxies.

📅5 de agosto de 2026
```html

Inicias la aplicación y se comporta de manera impredecible: los datos no se cargan, la publicidad no se muestra, la cuenta se bloquea sin razón aparente. Para entender qué está sucediendo "bajo el capó", necesitas ver las solicitudes HTTP reales entre la aplicación y el servidor. Para eso existe Charles Proxy, una herramienta que permite interceptar, analizar y modificar el tráfico de aplicaciones móviles en tiempo real.

En esta guía, abordaremos la configuración completa de Charles Proxy para iOS y Android, el trabajo con HTTPS, la modificación de respuestas del servidor y la integración con servidores proxy externos, todo esto sin teoría innecesaria, solo práctica.

Qué es Charles Proxy y para qué sirve

Charles Proxy es una aplicación de escritorio para Windows, macOS y Linux que funciona como un proxy HTTP/HTTPS entre tu dispositivo (smartphone, emulador) e Internet. Cuando diriges el tráfico a través de Charles, el programa registra todas las solicitudes y respuestas, permitiéndote ver cada byte de datos que la aplicación envía a los servidores.

En esencia, Charles hace lo mismo que DevTools en el navegador Chrome, solo que para aplicaciones móviles que no tienen un inspector incorporado. Esto es especialmente importante cuando necesitas entender:

  • Qué parámetros envía la aplicación al autorizar o registrar una cuenta
  • Qué encabezados (User-Agent, Device-ID, tokens) se envían al servidor
  • Cómo verifica Facebook, TikTok o Instagram el dispositivo al iniciar sesión
  • Por qué la aplicación devuelve un error bajo ciertas condiciones
  • Qué datos envía el marketplace al solicitar precios o un catálogo

Para los arbitrajistas, Charles Proxy es una herramienta de inteligencia: puedes ver literalmente qué datos de huella digital recopila Facebook Ads desde el dispositivo y entender por qué la cuenta se bloquea inmediatamente después de iniciar sesión. Los especialistas en SMM utilizan Charles para analizar la API de Instagram y TikTok, para entender los límites y patrones de solicitudes. Los desarrolladores y testers lo utilizan para simular respuestas del servidor y verificar el comportamiento de la aplicación en situaciones no estándar.

Características clave de Charles Proxy:

  • Interceptación de tráfico HTTP y HTTPS (incluyendo TLS 1.3)
  • Visualización del cuerpo de solicitudes y respuestas en un formato conveniente (JSON, XML, texto)
  • Modificación de respuestas del servidor (Rewrite, Map Local, Map Remote)
  • Puntos de interrupción (Breakpoints) para la edición manual de solicitudes
  • Reducción de la velocidad de conexión para simular Internet lento
  • Grabación y reproducción de sesiones
  • Soporte para proxies externos (HTTP, SOCKS5)

Instalación y configuración inicial de Charles Proxy

Charles Proxy se distribuye como una aplicación de pago con un período de prueba de 30 días. Puedes descargarlo desde el sitio web oficial charlesproxy.com. La versión para macOS, Windows y Linux es la misma en funcionalidad.

Paso 1. Instalación de la aplicación

Descarga el instalador para tu sistema operativo, ejecútalo y sigue el procedimiento estándar de instalación. Una vez que inicies Charles, comenzará a escuchar el puerto 8888 en tu computadora. Este es el puerto por defecto a través del cual los dispositivos dirigirán el tráfico.

Paso 2. Verificación de la dirección IP de la computadora

Para que el dispositivo móvil pueda conectarse a Charles, debe estar en la misma red Wi-Fi que la computadora. Averigua la dirección IP de tu computadora en la red local:

  • macOS: Preferencias del sistema → Red → selecciona Wi-Fi → Dirección IP
  • Windows: Símbolo del sistema → ipconfig → Dirección IPv4
  • En Charles: Ayuda → Dirección IP local

Recuerda esta dirección, ya que será necesaria al configurar el proxy en el smartphone. Normalmente es algo como 192.168.1.X.

Paso 3. Permitir conexiones desde dispositivos

Al conectar por primera vez el dispositivo móvil, Charles mostrará un cuadro de diálogo preguntando: "¿Permitir la conexión desde IP xxx.xxx.x.x?". Haz clic en Allow. Si la ventana no aparece, verifica que el firewall de Windows o macOS no esté bloqueando a Charles. En macOS, puede ser necesario permitir explícitamente las conexiones entrantes en Preferencias del sistema → Seguridad → Firewall.

Configuración de Charles Proxy para Android

La configuración en Android consta de dos partes: dirigir el tráfico a través de Charles e instalar el certificado para descifrar HTTPS. Sin el certificado, solo verás datos cifrados, un conjunto inútil de caracteres.

Configuración del proxy Wi-Fi en Android

  1. Abre Configuraciones → Wi-Fi
  2. Mantén presionada la red conectada → Modificar red
  3. Activa Opciones avanzadas
  4. En el campo Proxy, selecciona Manual
  5. Host del proxy: dirección IP de tu computadora (por ejemplo, 192.168.1.5)
  6. Puerto: 8888
  7. Guarda la configuración

Después de esto, todo el tráfico HTTP desde el dispositivo pasará a través de Charles. Las grabaciones de solicitudes comenzarán a aparecer en la pantalla de la aplicación.

Instalación del certificado Charles en Android

  1. En el dispositivo, abre el navegador y ve a chls.pro/ssl
  2. Se descargará el archivo de certificado .pem
  3. Abre Configuraciones → Seguridad → Instalar certificado
  4. Selecciona el archivo descargado e instálalo como Certificado CA
  5. Asigna cualquier nombre, por ejemplo "Charles SSL"

En Android 7 y versiones posteriores, las aplicaciones por defecto no confían en los certificados de usuario. Esto significa que las aplicaciones del sistema y la mayoría de las aplicaciones de terceros (Facebook, Instagram, TikTok) bloquearán la interceptación. Para trabajar con tales aplicaciones, se requerirá acceso root o el uso de un emulador de Android (por ejemplo, Genymotion o Android Studio Emulator) con la capacidad de instalar el certificado en el almacén del sistema.

⚠️ Importante para Android 7+

A partir de Android 7 (Nougat), las aplicaciones deben declarar explícitamente la confianza en los certificados de usuario en el archivo network_security_config.xml. La mayoría de las aplicaciones populares (Facebook Ads, Instagram) no lo hacen. Para su análisis, utiliza un emulador con root o una versión modificada de Android.

Configuración de Charles Proxy para iOS

En iOS, el procedimiento es un poco más simple: Apple proporciona un mecanismo estándar para instalar certificados a través de perfiles, y la mayoría de las aplicaciones respetan la configuración del proxy del sistema.

Configuración del proxy Wi-Fi en iPhone/iPad

  1. Abre Configuraciones → Wi-Fi
  2. Toca el ícono (i) junto a la red conectada
  3. Desplázate hacia abajo hasta la sección Proxy HTTP
  4. Selecciona Manual
  5. Servidor: dirección IP de la computadora con Charles
  6. Puerto: 8888
  7. Autenticación: desactivada (si no está configurada en Charles)

Instalación del certificado Charles en iOS

  1. En el iPhone, abre el navegador Safari y ve a chls.pro/ssl
  2. Safari te ofrecerá instalar un perfil de configuración: haz clic en Permitir
  3. Ve a Configuraciones → General → VPN y gestión de dispositivos
  4. Encuentra el perfil de Charles y haz clic en Instalar
  5. Ingresa el PIN del dispositivo si es necesario
  6. Ahora ve a Configuraciones → General → Acerca de este dispositivo → Confianza en certificados
  7. Activa el interruptor junto a Charles Proxy CA

Después de esto, Charles podrá descifrar el tráfico HTTPS de la mayoría de las aplicaciones de iOS. Las excepciones son las aplicaciones con Certificate Pinning (anclaje de certificado), como las aplicaciones bancarias y algunas versiones de Instagram. Para su análisis, se requerirá jailbreak y tweaks especiales como SSL Kill Switch.

Interceptar tráfico HTTPS: configuración de SSL Proxying

Incluso después de instalar el certificado, Charles por defecto no descifra el tráfico HTTPS; necesitas especificar explícitamente para qué dominios habilitar SSL Proxying. Esto se hace intencionadamente para no sobrecargar la interfaz con datos innecesarios.

Cómo habilitar SSL Proxying

  1. En el menú de Charles, selecciona Proxy → Configuración de SSL Proxying
  2. Marca la casilla Habilitar SSL Proxying
  3. Haz clic en Agregar en la sección Incluir
  4. En el campo Host, ingresa * (asterisco = todos los dominios)
  5. En el campo Puerto, ingresa 443
  6. Haz clic en OK y reinicia la interceptación

Ahora Charles descifrará el tráfico HTTPS para todos los dominios. Si te interesa un servicio específico, indica su dominio en lugar del asterisco. Por ejemplo, para analizar Instagram, ingresa *.instagram.com, para Facebook — *.facebook.com.

Qué se ve después de habilitar SSL Proxying

En el panel izquierdo de Charles, verás un árbol de dominios. Haz clic en cualquier solicitud; en la parte derecha se abrirá información detallada: URL, método (GET/POST), encabezados de la solicitud, cuerpo de la solicitud (si lo hay) y respuesta del servidor. Las pestañas Request y Response muestran los datos en crudo o en un formato conveniente (JSON, XML, HTML).

Los encabezados de la solicitud son especialmente valiosos; ahí se transmiten los tokens de autorización, identificadores de dispositivo, versión de la aplicación y otros datos que las plataformas utilizan para la verificación. Si ves parámetros sospechosos en las solicitudes a Facebook Ads o TikTok, ese es el primer paso para entender por qué la cuenta recibe un bloqueo.

Herramientas de análisis: Breakpoints, Rewrite y Map Local

Charles no solo es un visor de tráfico, sino también una poderosa herramienta para modificarlo. Tres herramientas clave que se utilizan con más frecuencia son:

Breakpoints — puntos de interrupción

Los Breakpoints permiten interceptar una solicitud o respuesta en el momento de su paso y editar manualmente los datos antes de que lleguen al destinatario. Esta es una herramienta poderosa para pruebas: puedes cambiar los parámetros de la solicitud, insertar otro token o modificar la respuesta del servidor.

Para establecer un Breakpoint: haz clic derecho en la solicitud en la lista → Breakpoint. Ahora, en la próxima llamada de la aplicación a esta URL, Charles detendrá la transmisión y abrirá una ventana de edición. Puedes cambiar cualquier parámetro y hacer clic en Execute para continuar.

Rewrite — modificación automática de datos

Rewrite funciona automáticamente: estableces una regla "si en la solicitud aparece X, reemplaza por Y", y Charles la aplica a todas las solicitudes relevantes sin tu intervención. Esto es conveniente para pruebas masivas: por ejemplo, reemplazar el valor de un encabezado específico en todas las solicitudes a un dominio particular.

Configuración: Tools → Rewrite → Agregar → asigna un nombre al conjunto de reglas → Agregar regla → especifica el tipo (Header, Body, URL, etc.), qué buscar y por qué reemplazar.

Map Local — reemplazo de respuesta por archivo local

Map Local permite reemplazar la respuesta del servidor con el contenido de un archivo local. Esto es indispensable para probar aplicaciones sin un backend real: creas un archivo JSON con los datos necesarios, y la aplicación recibe esos datos en lugar de la respuesta real de la API.

Configuración: Tools → Map Local → Agregar → especifica la URL para interceptar y la ruta al archivo local. Ahora, cada solicitud a esta URL devolverá el contenido de tu archivo. Esto permite probar casos límite: lista de productos vacía, error del servidor 500, formato de datos no estándar.

Herramienta Cuándo usar Dificultad
Breakpoints Edición manual única de solicitud/respuesta Baja
Rewrite Reemplazo automático según reglas Media
Map Local Reemplazo de respuesta de API por archivo local Baja
Map Remote Redirección de solicitud a otro servidor Media
Throttle Simulación de conexión lenta Baja

Cómo conectar un servidor proxy externo a través de Charles

Charles Proxy puede funcionar no solo como un interceptor local, sino también como un intermediario entre el dispositivo y un servidor proxy externo. Esto es especialmente útil cuando necesitas analizar el tráfico y dirigirlo a través de una dirección IP específica, por ejemplo, para verificar cómo se comporta la aplicación al conectarse desde otro país o a través de una IP móvil.

Este esquema se ve así: Smartphone → Charles Proxy (computadora) → Servidor proxy externo → Internet. Ves todo el tráfico en Charles, pero las solicitudes se envían a través de la IP deseada.

Configuración del proxy externo en Charles

  1. Abre Proxy → Configuración de Proxy Externo
  2. Marca la casilla Usar servidores proxy externos
  3. Para tráfico HTTP: activa Proxy Web (HTTP), ingresa el host y el puerto del proxy
  4. Para tráfico HTTPS: activa Proxy Web Seguro (HTTPS), ingresa los mismos datos
  5. Si el proxy requiere autenticación, ingresa el nombre de usuario y la contraseña
  6. Haz clic en OK

Charles admite proxies HTTP y SOCKS5. Para SOCKS5, utiliza la pestaña Proxy SOCKS en la misma configuración. Si trabajas con proxies residenciales con rotación de IP, cada nueva solicitud se enviará a través de una dirección diferente, lo que es conveniente para probar el comportamiento de las plataformas al cambiar de IP.

Excepciones para tráfico local

Si necesitas que parte del tráfico vaya directamente (sin proxy externo), agrega excepciones en el campo Omitir proxies externos para los siguientes hosts. Por ejemplo, las direcciones locales localhost y 127.0.0.1 generalmente deben ser excluidas para no romper los servicios locales.

Cuándo se necesita un proxy externo en Charles:

  • Pruebas de geolocalización de la aplicación (cómo se comporta desde EE. UU., Alemania, Brasil)
  • Verificación de la disponibilidad de contenido en diferentes regiones
  • Análisis de solicitudes al trabajar a través de proxies móviles — para entender cómo reacciona la plataforma a una IP móvil
  • Eludir bloqueos regionales durante las pruebas

Escenarios prácticos: arbitraje, SMM y pruebas de aplicaciones

Consideremos tareas específicas para las cuales se utiliza Charles Proxy en el trabajo real, sin teoría innecesaria.

Escenario 1. Arbitraje — análisis de huellas digitales de Facebook Ads

Una de las principales tareas de un arbitrajista es entender por qué Facebook bloquea cuentas inmediatamente después de iniciar sesión. Charles permite interceptar las primeras solicitudes de la aplicación Facebook durante la autorización y ver qué datos del dispositivo se envían a los servidores de Meta.

En las solicitudes a graph.facebook.com, verás parámetros como device_id, hardware_id, advertiser_id y otros identificadores. Esto ayudará a entender qué datos deben ser aislados en navegadores anti-detección como Dolphin Anty o AdsPower al trabajar con múltiples cuentas.

También es útil interceptar la respuesta del servidor al ser bloqueado; generalmente contiene un código de error y a veces la razón del bloqueo, que Facebook no muestra en la interfaz de la aplicación.

Escenario 2. SMM — estudio de la API de Instagram y TikTok

Los especialistas en SMM que gestionan de 10 a 50 cuentas de clientes a menudo se enfrentan a los límites de las plataformas: Instagram limita la cantidad de "me gusta", suscripciones y comentarios por hora. Charles permite medir con precisión estos límites al interceptar solicitudes mientras se trabaja manualmente con la cuenta.

Al interceptar solicitudes a i.instagram.com, verás la estructura de la API: endpoints, parámetros, tokens de autorización. Esto ayuda a configurar la automatización para que imite el comportamiento de un usuario real y no sea bloqueada. Funciona de manera similar con TikTok; el análisis de solicitudes a api16-normal-c-useast1a.tiktokv.com muestra qué parámetros verifica la plataforma.

Escenario 3. E-commerce — análisis de la API de marketplaces

Los vendedores en Wildberries, Ozon y Avito utilizan activamente el monitoreo de precios de competidores. Charles permite interceptar solicitudes de la aplicación móvil del marketplace y ver a través de qué endpoints se cargan los datos de precios y existencias. Esto ayuda a configurar un parser que imita el comportamiento de la aplicación móvil; tales solicitudes pasan mucho más fácilmente que las solicitudes de un parser de navegador.

Por ejemplo, en la aplicación Wildberries, puedes interceptar solicitudes a catalog.wb.ru y ver la estructura exacta de los parámetros de filtrado y paginación. Esto proporciona una plantilla lista para construir un parser que eludirá la protección de manera mucho más efectiva que los intentos de reproducir solicitudes de navegador. Para un parsing estable, se requerirán proxies de centros de datos con alta velocidad y estabilidad de conexión.

Escenario 4. QA — pruebas de aplicaciones móviles

Los testers utilizan Charles para verificar el comportamiento de la aplicación en situaciones no estándar. Con Map Local, puedes reemplazar la respuesta del servidor con un error 500 y comprobar cómo maneja la aplicación la falla del backend. Throttle permite simular una conexión lenta (3G, Edge) y verificar si la aplicación se congela durante una carga prolongada. Los breakpoints permiten cambiar manualmente los datos y verificar casos límite; por ejemplo, qué sucederá si el servidor devuelve un array vacío en lugar de una lista de productos.

Problemas comunes y sus soluciones

Al trabajar con Charles Proxy, los principiantes se enfrentan regularmente a los mismos problemas. Analicemos los más comunes.

Problema 1: Charles muestra "unknown" en lugar del contenido de solicitudes HTTPS

Causa: SSL Proxying no está habilitado o el certificado no está instalado en el dispositivo.
Solución: Verifica que en Proxy → Configuración de SSL Proxying esté habilitado SSL Proxying y que se haya agregado el host *:443. Asegúrate de que el certificado de Charles esté instalado en el dispositivo y que tenga plena confianza (en iOS, a través de la configuración de confianza de certificados).

Problema 2: El tráfico no se intercepta, la lista de solicitudes está vacía

Causa: El dispositivo no dirige el tráfico a través de Charles, o Charles no acepta conexiones.
Solución: Verifica que el dispositivo y la computadora estén en la misma red Wi-Fi. Asegúrate de que en la configuración del proxy en el dispositivo esté especificada la IP correcta de la computadora y el puerto 8888. Verifica que en Charles esté habilitada la interceptación: Proxy → Iniciar grabación (o el botón con el punto rojo en la barra de herramientas).

Problema 3: La aplicación no funciona con Charles habilitado

Causa: La aplicación utiliza Certificate Pinning — verifica no solo la cadena de confianza, sino también el certificado específico del servidor. El certificado de Charles no coincide con el esperado.
Solución para Android con root: Instala el módulo Magisk TrustUserCerts o utiliza Frida para eludir SSL Pinning. Para iOS con jailbreak — SSL Kill Switch 2. Sin root/jailbreak, eludir Certificate Pinning es extremadamente difícil.

Problema 4: Charles intercepta demasiado tráfico, la interfaz se ralentiza

Causa: Se está grabando todo el tráfico de todas las aplicaciones en el dispositivo, incluidas las funciones del sistema.
Solución: Utiliza filtrado. En el campo Filtro (en la parte inferior del panel izquierdo), ingresa el dominio del servicio de interés. O configura el Control de Acceso en Proxy → Configuración de Control de Acceso, para que Charles acepte conexiones solo de aplicaciones específicas a través de Proxy → Configuración de Grabación → Incluir/Excluir.

Problema 5: Internet no funciona después de cerrar Charles

Causa: En el dispositivo móvil quedaron configuraciones de proxy, pero Charles ya no está ejecutándose — el tráfico no tiene a dónde ir.
Solución: Siempre elimina las configuraciones de proxy en el dispositivo después de terminar de trabajar con Charles. Restablece el parámetro de proxy a "Ninguno" o "Desactivado" en la configuración de Wi-Fi.

Problema Solución rápida
HTTPS muestra "unknown" Habilitar SSL Proxying + instalar certificado
Lista de solicitudes vacía Verificar IP, puerto y que Charles esté en modo grabación
La aplicación no se abre Certificate Pinning — se necesita root/jailbreak
La interfaz se ralentiza Agregar filtro por dominio en el campo Filtro
No hay internet después de cerrar Eliminar configuraciones de proxy en el dispositivo

Conclusión

Charles Proxy es una de las herramientas más útiles para todos los que trabajan con aplicaciones móviles: ya sea un arbitrajista que quiere entender los mecanismos de verificación de Facebook Ads, un especialista en SMM que estudia la API de Instagram, o un desarrollador que prueba el comportamiento de su aplicación en condiciones no estándar. La instalación toma de 15 a 20 minutos, y las posibilidades que se abren después de la configuración son difíciles de sobreestimar.

Lo principal que debes recordar: Charles es una herramienta de análisis y depuración, no de anonimización. Para trabajar con múltiples cuentas, realizar pruebas desde diferentes geolocalizaciones o eludir restricciones de plataformas, se necesita un nivel de protección separado: servidores proxy con direcciones IP reales.

Si estás analizando el tráfico de aplicaciones móviles para arbitraje o trabajando con cuentas en redes sociales, te recomendamos combinar Charles con proxies residenciales — proporcionan IP reales de usuarios domésticos, lo que minimiza el riesgo de bloqueos durante las pruebas y el trabajo con cuentas. Para tareas donde la alta velocidad y estabilidad son importantes, como el scraping masivo de APIs de marketplaces, son adecuados los proxies de centros de datos con alta disponibilidad.

```