Charles Proxy es un servidor proxy multiplataforma para depurar tráfico HTTP/HTTPS, utilizado por desarrolladores para interceptar, ver y modificar solicitudes de red. Según Karl von Randow, creador de la herramienta (2025), Charles se utiliza en más de 50 000 empresas en todo el mundo desde 2004. El proxy admite la intercepción de tráfico desde dispositivos móviles a través de WiFi, proxy HTTPS con instalación de certificado raíz y un amplio conjunto de herramientas para análisis de API.
Puntos clave
Charles Proxy es un proxy HTTP y monitor HTTP que actúa como intermediario entre el cliente y el servidor. Todas las solicitudes y respuestas pasan a través de Charles, lo que permite ver su contenido, analizar su estructura, modificar datos en tiempo real y simular diversas condiciones de red. Está disponible para Windows, macOS y Linux.
Charles Proxy fue creado en 2004 por Karl von Randow y sigue siendo una de las herramientas más populares para depurar tráfico de red. A diferencia de las alternativas gratuitas, Charles ofrece una licencia de pago con un período de prueba de 30 días. La herramienta se posiciona como una solución profesional para desarrolladores de aplicaciones móviles, desarrolladores web e ingenieros de QA que necesitan control total sobre las comunicaciones HTTP.
Charles funciona como un proxy de sistema en el ordenador y puede interceptar tráfico de cualquier dispositivo en la misma red: Android, iOS, simuladores, emuladores, navegadores web y dispositivos IoT. Para interceptar HTTPS, es necesario instalar el certificado raíz de Charles en cada dispositivo. El tráfico se admite en HTTP/1.1 y HTTP/2 (parcialmente). HTTP/3 (QUIC) no se admite a nivel de intercepción.
Charles funciona según el principio de un proxy MITM (Man-in-the-Middle): cuando un cliente envía una solicitud a través de Charles, la herramienta intercepta la solicitud, la reenvía al servidor de destino, recibe la respuesta y la devuelve al cliente. Todo el tráfico pasa a través de Charles, lo que permite analizarlo y modificarlo.
Al iniciarse, Charles crea un proxy HTTP local en el puerto 8888 (por defecto). El sistema operativo o la aplicación se configuran para usar este proxy. Todas las solicitudes HTTP se envían primero a Charles, que luego actúa como un cliente completo hacia el servidor de destino. Para HTTPS, Charles utiliza su propia técnica de proxy SSL: genera un certificado sobre la marcha para cada dominio, firmado por el certificado raíz de Charles. Si el certificado raíz está instalado en el dispositivo como de confianza, Charles puede descifrar y ver el tráfico HTTPS.
Charles admite dos modos: Proxy (servidor proxy clásico) y SOCKS Proxy (para tráfico UDP y TCP). Para el desarrollo web se utiliza el proxy HTTP estándar. Para dispositivos móviles — configurar WiFi Proxy en el dispositivo indicando la dirección IP del ordenador donde se ejecuta Charles. macOS admite la configuración automática del proxy para el simulador de iOS.
<!-- Configuración de network_security_config.xml para Android con soporte de Charles -->
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<debug-overrides>
<trust-anchors>
<!-- Confiar en el certificado de Charles en compilación Debug -->
<certificates src="user" />
</trust-anchors>
</debug-overrides>
</network-security-config>
Charles Proxy proporciona un conjunto de herramientas profesionales para analizar y modificar tráfico que van mucho más allá de la simple intercepción de solicitudes.
La herramienta Rewrite permite cambiar automáticamente ciertas partes de las solicitudes o respuestas: encabezados, parámetros de URL, cuerpo de la respuesta. Por ejemplo, se puede reemplazar el encabezado User-Agent por un valor de otro dispositivo o eliminar ciertas cookies. Breakpoints funcionan como un depurador: la solicitud se detiene en una etapa seleccionada (antes de enviar o antes de recibir), y el desarrollador puede cambiar manualmente su contenido antes de que continúe. Esto es útil para probar el manejo de respuestas de error o estados no estándar.
Map Local permite reemplazar un recurso de red (CSS, JS, JSON) con un archivo local del disco. Esto es indispensable en el desarrollo frontend: se pueden modificar CSS/JS y ver el resultado inmediatamente sin implementar en un servidor. Map Remote redirige solicitudes de una URL a otra — por ejemplo, del servidor de producción a staging para pruebas. Ambas herramientas funcionan con patrones de URL que admiten comodines.
La herramienta Throttle permite simular varios tipos de conexiones de red usando perfiles predefinidos: 3G, EDGE, GPRS, DSL, WiFi. Se puede configurar el límite de velocidad (descarga/subida), latencia, pérdida de paquetes y estabilidad. Esto es fundamental para probar el comportamiento de la aplicación en conexiones lentas o inestables — manejo adecuado de tiempos de espera, reintentos, modo offline.
| Perfil | Descarga | Subida | Latencia | Escenario típico |
|---|---|---|---|---|
| 3G | 780 kbps | 330 kbps | 200 ms | Pruebas con señal móvil débil |
| EDGE | 130 kbps | 50 kbps | 400 ms | Conexión extremadamente lenta |
| GPRS | 50 kbps | 20 kbps | 500 ms | Conexión mínima posible |
| DSL | 2 Mbps | 256 kbps | 50 ms | Conexión por cable doméstica |
| WiFi | 10 Mbps | 10 Mbps | 10 ms | Conexión WiFi buena |
Charles puede guardar automáticamente sesiones de tráfico en archivos .chls, lo que permite analizarlas más tarde o compartirlas con colegas. Recording Control permite configurar de forma flexible qué tráfico guardar: por dominio, tipo de contenido o código de estado. Esto es conveniente para la monitorización a largo plazo de API.
Para depurar el tráfico de aplicaciones móviles, Charles se configura como un WiFi Proxy: todos los dispositivos en la misma red que el ordenador pueden enrutar el tráfico a través de Charles. La configuración correcta de HTTPS requiere instalar el certificado de Charles en el dispositivo móvil.
Para Android: abrir Settings → WiFi → Advanced → Proxy, seleccionar Manual e introducir la dirección IP del ordenador con el puerto 8888. Luego abrir un navegador en el dispositivo e ir a http://chls.pro/ssl para descargar el certificado de Charles. En Android 7+ (API 24+), se requiere network_security_config.xml para confiar en certificados de usuario en compilaciones Debug — de lo contrario, la aplicación podría no enrutar el tráfico a través de Charles.
Para iOS: Settings → WiFi → configurar proxy con IP y puerto 8888. Luego Safari → http://chls.pro/ssl → instalar el perfil de certificado. En iOS 10.3+, es necesario habilitar adicionalmente la confianza del certificado: Settings → General → About → Certificate Trust Settings → activar Charles Proxy. iOS es más estricto con los certificados: algunas aplicaciones pueden usar SSL Pinning, bloqueando el tráfico a través de Charles incluso con un certificado de confianza.
Si la aplicación usa SSL Pinning(fijación de certificado del servidor), el proxy estándar a través de Charles no funcionará — la aplicación rechazará el certificado de Charles. Soluciones: deshabilitar SSL Pinning en compilaciones Debug mediante configuración de OkHttp o URLSession, usar Frida para evitar el pinning en tiempo de ejecución, o usar Android Emulator con acceso root.
Charles Proxy resuelve tareas específicas de desarrollo y pruebas. Veamos los escenarios más comunes donde la herramienta es indispensable.
El escenario más común — verificar la corrección de las solicitudes API. Charles muestra la URL exacta de la solicitud, encabezados, cuerpo y parámetros. Si el servidor devuelve una respuesta inesperada, se ve inmediatamente: estructura JSON, código de error, encabezados de respuesta. Esto permite distinguir errores del cliente de errores del servidor sin registros de ambos lados.
Usando los perfiles de Throttle, se puede probar cómo se comporta la aplicación con velocidad de conexión baja: si se muestra un indicador de carga, si los tiempos de espera se manejan correctamente, si la UI se congela al perder la conexión. Es especialmente importante probar el almacenamiento en caché — si los datos ya se han cargado, la aplicación debe mostrarlos desde la caché en lugar de entrar en un estado de carga infinita.
Usando Breakpoints, se puede modificar la respuesta del servidor antes de que se envíe a la aplicación. Por ejemplo, devolver un array vacío en lugar de datos, cambiar el código de estado a 500, añadir un nuevo campo al JSON. Esto permite probar el manejo de casos límite sin modificar el código del servidor — uno de los usos más potentes de Charles en el desarrollo móvil.
Preguntas frecuentes
Charles Proxy es un producto comercial con un período de prueba de 30 días. Después de que finalice el período de prueba, el programa continúa funcionando pero se pausa durante 30 minutos en cada inicio. El costo de la licencia es de $50 por copia. Existen alternativas gratuitas como Proxyman (macOS) y mitmproxy (multiplataforma).
Sí, el simulador de iOS utiliza automáticamente el proxy del sistema de macOS. Basta con iniciar Charles y activar el proxy SSL — todo el tráfico del simulador será interceptado. La configuración del certificado para el simulador se realiza automáticamente; solo es necesario confiar en el certificado de Charles en el llavero de macOS.
Principales diferencias: Charles es multiplataforma (Windows, macOS, Linux), Proxyman solo es para macOS y iOS. Charles tiene un conjunto más amplio de herramientas (Rewrite, Map Local, Repeat, Auto Save) pero es de pago. Proxyman es gratuito para funciones básicas, con interfaz moderna e integración nativa con el simulador de iOS.
Charles añade latencia cuando el tráfico pasa a través del proxy, especialmente con proxy SSL activo (descifrado/cifrado). En ordenadores modernos, el retardo es de 5 a 15 milisegundos por solicitud. Para pruebas de rendimiento, se recomienda deshabilitar el proxy SSL para contenido estático (CSS, JS, imágenes) mediante Recording Control.
Charles admite exportación a formatos: .chls(nativo, para reabrir en Charles), HAR(HTTP Archive, se abre en navegadores y otras herramientas), CSV(para procesar en Excel u hojas de cálculo), Trace(para exportar una solicitud específica en formato compatible con curl). Exportación a través del menú File → Export Session.
Resumen
Desarrollaremos una aplicación móvil llave en mano
IT Sectr crea aplicaciones para iOS y Android para startups y empresas desde 2017. Le asesoraremos y le propondremos la mejor solución.
Lea también