Primeros pasos con ApiCatcher
ApiCatcher captura, muestra y analiza el tráfico HTTP/HTTPS y WebSocket de una app en local.
Esta guía cubre el día a día: certificados, filtros, historial, exportación y documentación de API. Reescritura, scripts, reproducción combinada y el resto están en los documentos de abajo.
Más documentación:
- Reescritura y scripts
- Guía de scripts
- CA personalizada
- Decodificación Protobuf
- Reproducción combinada
- Tareas programadas
- Sincronización en tiempo real
- Sincronización en la nube
Índice
- Certificados
- Filtros de tráfico
- Sesiones de captura y búsqueda
- Buscar Cookie
- Exportar HAR, archivos y una petición
- Documentación de API generada
- API Scan
1. Certificados
1.1 Instalar y confiar en el certificado CA (imprescindible para HTTPS)
Casi todo el tráfico de las apps va por HTTPS. Por defecto ApiCatcher no captura HTTPS: sin un CA de confianza no hay descifrado, así que no hay nada útil que mirar. Instala el CA y dale confianza completa antes de capturar HTTPS.
Dos formas de configurar el certificado:
- Usar el CA que genera ApiCatcher (lo habitual). Sigue los pasos de abajo.
- Importar el tuyo (certificado de empresa). Salta a 1.2.
CA por defecto:
- Toca Instalar certificado en la app. iOS abre Safari y descarga un perfil de configuración.
- Entra en Ajustes → General → VPN y gestión de dispositivos e instala el perfil de ApiCatcher.
- Luego Ajustes → General → Información → Ajustes de confianza de certificados, busca el certificado que empieza por
ApiCatcher CAy activa la confianza completa.
Si algo falla
- Timeouts o códigos de estado raros: casi siempre falta el paso 3.
- Si borras y reinstalar la app, el perfil viejo ya no vale. Quítalo en Ajustes y vuelve a empezar.
1.2 Certificados de empresa
Algunas apps internas solo confían en la CA de la compañía.
- Para qué: importar un
.pemo.p12de la organización y ligarlo a hosts internos (p. ej.*.corp.internal) para que el handshake TLS local cierre. - Ojo: importa o edita con la captura parada. Luego vuelve a arrancarla.
1.3 Certificado autofirmado
Sin CA de empresa y sin ganas de usar el de ApiCatcher, importa el tuyo por el mismo flujo de certificado de empresa. Ver CA personalizada.
2. Filtros de tráfico
El sistema y las apps en segundo plano meten mucho ruido. Los filtros deciden qué se guarda.
- Lista de bloqueo: esos hosts no se registran. Lista de permiso vacía = se registra todo lo demás.
- Lista de permiso: en cuanto hay una regla, solo se registran las peticiones que coinciden.
- Comodín:
*vale.*.example-api.comcubre los subdominios de prueba de ese host.
Si algo falla
- No ves el tráfico: el host está en la lista de bloqueo, o la de permiso está activa y falta ese host.
- Usa un asterisco simple (
*.api.com). Aquí no hay expresiones regulares.
3. Sesiones de captura y búsqueda
Las listas deciden qué se almacena. Después, en Historial, Session y la búsqueda recortan lo ya capturado.
3.1 Sesión de captura
Una sesión es una pasada de captura VPN. La interfaz la etiqueta con la hora de inicio (yyyy-MM-dd HH:mm:ss). No se puede renombrar.
Arrancar la captura VPN crea una sesión. Al parar se escribe la hora de fin y el recuento. Cero peticiones = se borra la sesión. Mientras captura, el fin muestra Capturing....
El filtro Session del historial fija una pasada o muestra Todas. El selector también enseña el rango, la duración, el recuento y hasta cinco hosts vistos. Borrar una sesión elimina sus registros.
3.2 Filtros
La barra de filtros del historial se configura. Configurar filtros elige qué chips se ven; Restablecer filtros los limpia.
| Filtro | Coincide |
|---|---|
| Session | Una pasada, o todas |
| Host | Host exacto |
| App (UA) | Nombre de app sacado del User-Agent, exacto |
| Método | GET / POST / PUT / DELETE / PATCH / OPTIONS / HEAD |
| Esquema | HTTP / HTTPS / WS / WSS |
| Tipo | Todos, HTML, JSON, XML, imagen, vídeo, audio, Protobuf (Content-Type) |
| Estado | 1xx–5xx, más Sin respuesta |
| Tiempo | Últimos 15 minutos, última hora, hoy, últimos 7 días, últimos 30 días, rango propio |
3.3 Búsqueda por palabra
El campo busca en URL por defecto (placeholder: Search url...). Subcadena sin distinguir mayúsculas. Ni regex ni AND / OR.
Cambia el destino desde Historial … → Cambiar destino de búsqueda:
| Destino | Dónde mira |
|---|---|
| URL | URL de la petición |
| Cabeceras de petición | Nombres o valores |
| Cabeceras de respuesta | Nombres o valores |
| Body de petición | Texto del cuerpo |
| Body de respuesta | Texto del cuerpo |
La búsqueda en el body solo lee Content-Type de texto (HTML / XML / JSON / texto plano / form-urlencoded / form-data). Imagen, vídeo y demás binarios se saltan.
4. Buscar Cookie
Buscar Cookie saca el header Cookie de la última petición a un host. No mira Set-Cookie ni junta cookies de varias peticiones.
- Abre Historial.
- Arriba a la derecha … → Buscar Cookie.
- Escribe un Host (obligatorio; de la lista ya capturada o a mano).
- Session es opcional. Vacío = todas las sesiones.
- Toca Buscar Cookie.
Si hay: Cookie reciente y los pares. Si no: No hay petición con Cookie.
5. Exportar HAR, archivos y una petición
5.1 Exportar como HAR
HAR 1.2 JSON, se abre en Charles, Fiddler, Burp, etc. El nombre parece apicatcher-export-yyyyMMddHHmmss.har.
| Entrada | Qué sale | Sigue los filtros actuales |
|---|---|---|
| Historial Exportar como HAR | Todas las peticiones del resultado filtrado (no solo la página visible) | Sí (Session, Host, tiempo, método, tipo, estado, palabra de búsqueda — igual que la lista) |
| Multiselección y luego compartir / exportar | Solo las marcadas | No |
| Carpeta de favoritos → HAR | Peticiones de esa carpeta | No |
La UI dice: Total requests to export: N. You can modify filters to change the requests to export. No cierres la página mientras exporta.
5.2 Imagen / vídeo / audio
Entrada: gestión de archivos en Historial (icono de carpeta).
- Tres grupos: Imagen, Vídeo, Audio.
- Recorta por Session y Host.
- Los trozos
Range/Content-Rangese unen antes de exportar. - Un archivo suelto, o un ZIP agrupado por host.
En el detalle de la petición también puedes Exportar archivo sobre el body de petición o respuesta; el tipo sigue el Content-Type.
5.3 Una sola petición
En el detalle, Exportar petición:
- Raw: HTTP original petición + respuesta (
.txt) - cURL: comando para repetir en terminal (
.sh) - Markdown: vista previa Markdown (
.md)
6. Documentación de API generada
Cuando entra una petición HTTP/HTTPS que cumple las reglas, la app crea o actualiza la doc en local, agrupada por Host. Si el mismo endpoint vuelve, solo se añaden campos que aún no estaban; los nombres ya guardados no se pisan.
6.1 Qué se documenta
Solo HTTP/HTTPS con respuesta y estado fuera de 301–308. Content-Type de petición JSON / XML / multipart/form-data / x-www-form-urlencoded, o respuesta JSON / XML. Imagen, vídeo, HTML y texto plano se saltan.
Las peticiones tocadas por una regla de reescritura o un script no entran. La clave es método + host + path (p. ej. GET + api.example.com + /v1/user).
Fusión:
- Query, Header, Body: solo añadir nombres que falten.
- Ejemplo de body: se actualiza solo si esta respuesta es 200.
- Cabeceras estándar habituales (Cookie, User-Agent) no van a parámetros. Authorization, Content-Type y las custom sí.
6.2 Exportar a Postman / Apifox / Bruno
Dónde empezar:
- Exportar desde la lista de API de un Host (todos los endpoints de ese host).
- Exportar desde el detalle de una API (solo ese endpoint).
- Ajustes → API favoritas → Exportar solo para favoritos.
| Destino | Cómo |
|---|---|
| Exportar a Postman | API Key de Postman → cargar un Workspace → crear una Collection o elegir una |
| Exportar a Apifox | API Key de Apifox e ID de proyecto; ID de carpeta opcional (vacío = raíz) |
| Exportar a Bruno | ZIP con bruno.json y .bru; Open Collection en Bruno |
Capturas paso a paso:
- Cómo exportar solicitudes HTTPS capturadas a Postman
- Cómo exportar solicitudes HTTPS capturadas a Apifox
7. API Scan
API Scan revisa el tráfico ya capturado: calidad, fugas evidentes, latencia. El análisis se queda en el dispositivo.
7.1 Motores incluidos
- Datos sensibles: teléfono, documento de identidad, correo y credenciales cloud (clave AWS, clave OpenAI) en claro.
- Stacks: trazas Java, Python o SQL que se colaron en un body de respuesta.
- Llamadas demasiado frecuentes: intervalo medio por debajo del umbral que pongas — suele ser un bucle o un retry mal puesto.
- Latencia: p95 / p99 por endpoint.
7.2 Custom Scan
Un script JS para tus reglas.
nullsi la petición está bien. Si no, una nota corta (≤200 caracteres): body enorme, falta un header de seguridad, … Esa nota entra en el informe.
Si algo falla
- Sin resultados: ¿el alcance (Host / Session) tiene JSON/API de verdad, o solo estáticos? Cada pasada tiene un tope de registros.