TL;DR
- Charles Proxy intercepta tráfico HTTP/HTTPS para inspección y modificación
- SSL Proxying requiere instalación de certificado en dispositivo (móvil/navegador)
- Breakpoints permiten modificar requests/responses en tiempo real
- Map Local/Remote redirige requests a archivos locales o servidores diferentes
- Throttling simula redes lentas para testing de rendimiento
Ideal para: Testers móviles, desarrolladores de API, debugging de issues en producción Omite si: Solo necesitas inspección simple de requests (DevTools del navegador es suficiente) Tiempo de lectura: 14 minutos
La app móvil crashea pero solo en redes lentas. La API retorna datos diferentes en producción que en staging. Necesitas testear manejo de errores pero no puedes hacer que el servidor retorne errores.
Charles Proxy se ubica entre tu app e internet. Ve todo, permite cambiar cualquier cosa. El debugging de red se vuelve posible en lugar de adivinar.
Este tutorial cubre Charles desde instalación hasta técnicas avanzadas.
¿Qué es Charles Proxy?
Charles Proxy es un HTTP proxy y monitor. Captura tráfico de red de cualquier aplicación configurada para usarlo, mostrando requests y responses para inspección.
Qué hace Charles:
- Intercepta tráfico — ve cada request que hace tu app
- Inspecciona SSL/TLS — desencripta HTTPS para debugging
- Modifica requests — cambia headers, body, URL antes de enviar
- Mockea responses — retorna datos falsos sin cambios en servidor
- Throttlea bandwidth — simula redes lentas/inestables
- Graba sesiones — guarda y reproduce tráfico
Instalación y Setup
Instalación
macOS:
brew install --cask charles
SSL Proxying
Por defecto, Charles no puede leer contenido HTTPS. Habilita SSL Proxying:
- Proxy → SSL Proxying Settings
- Marca Enable SSL Proxying
- Agrega hosts:
*para todos, o específicos comoapi.example.com - Instala Charles Root Certificate:
- macOS: Help → SSL Proxying → Install Charles Root Certificate
- Confía en Keychain Access (Always Trust)
Configuración de Dispositivos Móviles
iOS
- Conecta iPhone a la misma WiFi que la computadora
- Encuentra la IP de tu computadora: Help → Local IP Address
- En iPhone: Ajustes → WiFi → (i) junto a la red
- Configurar Proxy → Manual
- Servidor: IP de tu computadora
- Puerto: 8888
- Instala certificado SSL:
- Abre Safari, ve a
chls.pro/ssl - Descarga e instala perfil
- Ajustes → General → Info → Confianza de Certificados
- Abre Safari, ve a
Android
- Conecta a la misma WiFi
- Ajustes WiFi → Modificar Red → Avanzado
- Proxy: Manual
- Nombre de host: IP de computadora
- Puerto: 8888
- Instala certificado desde
chls.pro/ssl
Modificación de Requests
Breakpoints
Detén requests para modificación manual:
- Click derecho en request → Breakpoints
- Cuando el request llegue al breakpoint:
- Modifica URL, headers, body
- Click Execute para continuar
Rewrite Tool
Modificaciones automáticas:
- Tools → Rewrite
- Configura regla:
- Location:
api.example.com - Type: Modify Header / Body / URL
- Match y Replace valores
- Location:
Ejemplo — agregar auth header:
Type: Add Header
Where: Request
Header Name: Authorization
Header Value: Bearer test-token-123
Mockeo de Responses
Map Local
Retorna archivo local en lugar de respuesta del servidor:
- Click derecho en request → Map Local
- Selecciona archivo local (JSON, HTML)
- Todos los requests coincidentes retornan tu archivo
// mock-user.json
{
"id": 1,
"name": "Test User",
"role": "admin"
}
Map Remote
Redirige requests a servidor diferente:
- Tools → Map Remote
- Map from:
https://api.example.com/* - Map to:
https://staging.example.com/*
Throttling de Red
- Proxy → Throttle Settings
- Habilita Throttling
- Elige preset o personaliza:
| Preset | Bandwidth | Latency |
|---|---|---|
| 56k Modem | 48 kbps | 200ms |
| 3G | 780 kbps | 200ms |
| 4G | 8 Mbps | 50ms |
Escenarios Comunes de Testing
Testing de Manejo de Errores
// error-500.json
{
"error": "Internal Server Error",
"code": 500
}
Testing de Timeouts
- Habilita Throttling
- Configura latencia muy alta (30000ms)
- Observa el manejo de timeout
Testing de Estados Vacíos
// empty-list.json
{
"items": [],
"total": 0
}
Charles Proxy con Asistencia de IA
Lo que la IA hace bien:
- Explicar códigos de estado HTTP y headers
- Generar mock JSON responses
- Convertir cURL a snippets de código
- Analizar patrones de tráfico
Lo que necesita humanos:
- Identificar qué tráfico importa
- Entender contexto de negocio de datos
- Implicaciones de seguridad
- Decisiones de testing en dispositivos reales
FAQ
¿Qué es Charles Proxy?
Charles Proxy es una aplicación HTTP proxy y monitor. Se ubica entre tu aplicación e internet, capturando todo el tráfico HTTP y HTTPS para inspección y modificación. Los testers lo usan para depurar issues de API, mockear respuestas de servidor, simular condiciones de red y entender cómo las aplicaciones se comunican con backends.
¿Charles Proxy es gratis?
Charles Proxy ofrece un trial gratuito de 30 días con límites de sesión de 30 minutos. Después del trial, la licencia cuesta $50 por usuario (compra única). Alternativas gratuitas incluyen mitmproxy (línea de comandos, open source), Proxyman (macOS nativo), y DevTools del navegador para inspección básica.
¿Cómo uso Charles con apps móviles?
Configura los ajustes de proxy WiFi de tu dispositivo móvil para apuntar a la dirección IP de tu computadora y el puerto de Charles (8888). Ambos dispositivos deben estar en la misma red. Para tráfico HTTPS, instala el certificado SSL de Charles en tu dispositivo. Apps Android 7+ pueden necesitar configuración adicional para confiar en certificados de usuario.
¿Puede Charles modificar respuestas de API?
Sí. Charles ofrece varias opciones: Breakpoints para edición en tiempo real, Map Local para retornar archivos locales, Map Remote para redirigir a servidores diferentes, y reglas Rewrite para modificaciones automáticas de headers/body.
Recursos Oficiales
Ver También
- API Testing Tutorial - Fundamentos de testing de API
- Appium Tutorial - Automatización de testing móvil
- Postman Tutorial - Herramienta de testing de API
- API Security Testing - Fundamentos de testing de seguridad
