Cómo monitorear las llamadas de red realizadas desde iOS Simulator

113

Estoy tratando de monitorear las llamadas desde una aplicación a mi servidor como lo hace Firebug. No pude encontrar una manera de ver eso en iOS Simulator o en xCode.

¿Hay alguna manera de hacerlo sin olfatear todo el tráfico? Si no, ¿qué herramienta sugeriría?

Mad Echet
fuente

Respuestas:

84

Personalmente, uso a Charles para ese tipo de cosas.
Cuando está habilitado, monitoreará cada solicitud de red, mostrando detalles de solicitud extendidos, incluido el soporte para SSL y varios formatos de solicitud / respuesta, como JSON, etc.

También puede configurarlo para rastrear solo solicitudes a servidores específicos, no todo el tráfico.

Es un software comercial, pero hay una versión de prueba, y en mi humilde opinión es definitivamente una gran herramienta.

Macmade
fuente
1
Realmente fácil de usar y configurar y hace exactamente lo que quería, ¡gracias!
Mad Echet
3
No funciona fácilmente cuando su servidor está protegido por TLS, que debería estarlo.
carbocation
Probé con Charles pero no pude controlar muy bien el tráfico saliente. Por ejemplo, no pude cambiar el formato de mi solicitud POST a JSON
Jesús Rodríguez
24

Un proxy de intermediario, como lo sugieren otras respuestas, es una buena solución si solo desea ver el tráfico HTTP / HTTPS. Burp Suite es bastante bueno. Sin embargo, puede ser complicado configurarlo. No estoy seguro de cómo convencerías al simulador de que hablara con él. Es posible que deba configurar el proxy en su Mac local para su instancia de un servidor proxy para que pueda interceptar, ya que el simulador hará uso del entorno de su Mac local.

La mejor solución para la detección de paquetes (aunque solo funciona para dispositivos iOS reales , no para el simulador) que he encontrado es usar rvictl. Esta publicación de blog tiene una buena reseña. Básicamente lo haces:

rvictl -s <iphone-uid-from-xcode-organizer>

Luego, huele la interfaz que crea con Wireshark (o su herramienta favorita), y cuando haya terminado, apague la interfaz con:

rvictl -x <iphone-uid-from-xcode-organizer>

Esto es bueno porque si desea rastrear paquetes del simulador, también tendrá que atravesar el tráfico hacia su Mac local, pero rvictlcrea una interfaz virtual que solo le muestra el tráfico del dispositivo iOS que ha conectado a su USB Puerto.

mpontillo
fuente
1
+1 para Burp Suite, y no hay problema para configurarlo: engadget.com/2011/02/21/… Tarda menos de 10 minutos
Vladimir
20

Una herramienta de proxy gratuita y de código abierto que se ejecuta fácilmente en una Mac es mitmproxy .

El sitio web incluye enlaces a un binario de Mac, así como el código fuente en Github.

Los documentos contienen una introducción muy útil para cargar un certificado en su dispositivo de prueba para ver el tráfico HTTPS.

No es tan GUI-tastic como Charles, pero hace todo lo que necesito y es gratis y mantenido. Cosas buenas y bastante sencillas si ya ha usado algunas herramientas de línea de comandos.

ACTUALIZACIÓN: Acabo de notar en el sitio web que mitmproxy está disponible como instalación casera. No podría ser más fácil.

giff
fuente
¿Has tenido suerte con mitm para el simulador de iOS? Lo tengo configurado, pero el tráfico de mi computadora fuera del simulador también se detecta, lo cual no es el mejor. Usarlo en un dispositivo real es asombroso. Lo he estado haciendo durante años.
atreat
mitmweb es la interfaz de usuario basada en web de mitmproxy que permite el examen interactivo y la modificación del tráfico HTTP. Al igual que mitmproxy, se diferencia de mitmdump en que todos los flujos se guardan en la memoria, lo que significa que está destinado a tomar y manipular muestras pequeñas mitmproxy.readthedocs.io/en/v2.0.2/mitmweb.html
Raunak
15

Recientemente encontré un repositorio de git que lo hace fácil.

Puedes probarlo.

Esta es la captura de pantalla de una aplicación: ingrese la descripción de la imagen aquí

Atentamente.

Andrés Paladines
fuente
Si bien Bagel es excelente y simple, recientemente noté que también muestra solicitudes almacenadas en caché. Entonces, si desea saber los bytes transferidos reales, por ejemplo, esto no es útil.
BlackWolf
10

Xcode proporciona registro de diagnóstico CFNetwork. Documento de Apple

Para habilitarlo, agregue CFNETWORK_DIAGNOSTICS=3en la sección Variable de entorno:

ingrese la descripción de la imagen aquí

Esto mostrará las solicitudes de la aplicación con sus encabezados y cuerpo. Tenga en cuenta que OS_ACTIVITY_MODEdebe configurarse enablecomo se muestra. De lo contrario, no se mostrará ningún resultado en la consola.

Evan
fuente
4

Wireshark es

Seleccione su interfaz

ingrese la descripción de la imagen aquí

Agregar filteriniciar elcapture

ingrese la descripción de la imagen aquí


Pruebas

Haga clic en cualquier acción o botón que active una solicitud GET / POST / PUT / DELETE

Lo verá en la lista de Wireshark

ingrese la descripción de la imagen aquí

Si desea conocer más detalles sobre un paquete específico, simplemente selecciónelo y siga> HTTP Stream .

ingrese la descripción de la imagen aquí

espero que esto ayude a otros !!

cyber8200
fuente
3

Si tiene conexión por cable y Mac, existe un método simple y poderoso:

  1. instale Wireshark gratis, asegúrese de que pueda capturar dispositivos con (¡y debe hacer esto después de cada reinicio de la computadora !):

    sudo chmod 644 / dev / bpf *

  2. Ahora comparte tu red con wifi. Preferencias del sistema> Compartir> Compartir Internet. Comprueba que tienes "Compartir tus conexiones desde: Ethernet" y que estás usando: Wi-Fi. Es posible que también desee configurar algo de seguridad wifi, ya que no interfiere con el monitoreo de sus datos.

  3. Conecte su teléfono a su red recién creada. A menudo necesito varios intentos aquí. Si el teléfono no quiere conectarse, apague el wifi de Mac, luego repita el paso 2 anterior y sea paciente.

  4. Inicie Wireshark y capture su interfaz inalámbrica con Wireshark, probablemente sea "en1". Filtre sus direcciones IP y / o puertos necesarios. Cuando encuentre un paquete que sea interesante, selecciónelo, haga clic con el botón derecho (menú contextual)> Seguir TCP Stream y verá una bonita representación de texto de las solicitudes y respuestas.

Y lo que es mejor: ¡exactamente el mismo truco funciona también para Android!

JaakL
fuente
¿Puedes usar esto con tu simulador? Todavía no tengo la aplicación en mi teléfono.
Joshua Dance
@Joshua Dance puedes usarlo con un emulador, si hace una solicitud de red externa. Las conexiones a localhost no se pueden rastrear con wirehark, ya que no pasan el "cable" (tarjeta de red)
JaakL
1

Telerik Fiddler es una buena opción

http://www.telerik.com/blogs/using-fiddler-with-apple-ios-devices

Konstantin Salavatov
fuente
¿Cómo funcionará eso en una máquina OSX? Teniendo en cuenta que dos de las etiquetas son xcode e ios-simulator.
Kevin R
@KevinR, 1. Telerik tiene una versión beta de Fiddler para OS X 2. En ninguna parte de la pregunta se dice que la elección está limitada a OS X telerik.com/blogs/using-fiddler-with-apple-ios-devices
Konstantin Salavatov
2
@KonstantinSalavatov, El tema de la publicación original es "Cómo monitorear las llamadas de red realizadas desde iOS Simulator". El simulador de iOS solo se ejecuta en OS X, así que sí, la elección está limitada a OS X.
ChillyPenguin
1
+1 Creo que deberías votar esto ahora, ¡porque ahora hay soporte para Mac OS X! : D telerik.com/fiddler#SupportedTechnologies y aquí telerik.com/download/fiddler/fiddler-osx-beta
David Noreña
1
  1. Instalar WireShark
  2. obtener la dirección IP del monitor de red xcode
  3. escuchar la interfaz wifi
  4. establecer filtro ip.addr == 192.168.1.122 en WireShark
August Lin
fuente
0

Una buena solución si está acostumbrado a las herramientas del inspector de Chrome es el depurador Pony: https://github.com/square/PonyDebugger

Es un poco complicado de configurar, pero una vez que lo haces, funciona bien. Sin embargo, asegúrese de usar Safari en lugar de Chrome para usarlo.

Simon Epskamp
fuente
0

Yo uso netfox. Es muy fácil de usar e integrar. Puede usarlo en simulador y dispositivo. Muestra todas las solicitudes y respuestas. Es compatible con JSON, XML, HTML, imágenes y otros tipos de respuestas. Puede compartir solicitudes, respuestas y el registro completo mediante los formatos de uso compartido predeterminados de IOS (Gmail, WhatsApp, correo electrónico, slack, sms, etc.)

Puede consultar en GitHub: https://github.com/kasketis/netfox

Netfox proporciona un vistazo rápido a todas las solicitudes de red ejecutadas realizadas por su aplicación iOS u OSX. Agarra todas las solicitudes, por supuesto las suyas, solicitudes de bibliotecas de terceros (como AFNetworking, Alamofire u otras), UIWebViews y más.

Burcu Kutluay
fuente