debug chrome ios safari mobile-safari google-chrome-devtools web-inspector

ios - chrome - debug iphone safari on windows



Depure iOS 6+7 Mobile Safari utilizando las DevTools de Chrome (2)

iOS 6 viene con soporte integrado para la depuración remota ( screencast de 1 minuto ). Funciona bien con el nuevo Safari Web Inspector, que parece ser un tenedor de 1 año de WebKit Inspector. Se pierden algunas características tales como la edición JS y la inspección de marcos WebSocket.

El inspector web de Safari utiliza el protocolo de depuración remota WebKit. Sin embargo, Safari no usa TCP / HTTP como capa de transporte, por lo que es incompatible con Chrome.

dice Timothy Hatcher (también conocido como Xenon), empleado de Apple

  • ¿Qué usa Safari para la capa de transporte?
  • ¿Puedo hacer un proxy desde esta misteriosa capa de transporte a HTTP para que funcione con Chrome DevTools?

De acuerdo con https://github.com/andydavies/node-iosdriver ,

Safari utiliza los mismos comandos de depuración que Chrome, pero se envuelve como listas binarias sobre RPC en lugar de JSON sobre websockets.

Entonces, sí, sería posible escribir un proxy.

Encontré este hilo mirando las conexiones TCP que Safari estaba haciendo mientras estaba conectado al inspector MobileSafari, viendo que estaba conectado a un proceso llamado webinspectord y Google que:

# pgrep -lf /Applications/Safari.app 33170 /Applications/Safari.app/Contents/MacOS/Safari -psn_0_21144617 # lsof -p 33170 | grep TCP Safari 33170 ryan 16u IPv6 0x799d5f43b472a241 0t0 TCP localhost:54892->localhost:27753 (ESTABLISHED) # lsof -i :27753 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME launchd 371 ryan 42u IPv6 0x799d5f43b472aa01 0t0 TCP localhost:27753 (LISTEN) Safari 33170 ryan 16u IPv6 0x799d5f43b472a241 0t0 TCP localhost:54892->localhost:27753 (ESTABLISHED) webinspec 33182 ryan 6u IPv6 0x799d5f43b472aa01 0t0 TCP localhost:27753 (LISTEN) webinspec 33182 ryan 7u IPv6 0x799d5f43b181a621 0t0 TCP localhost:27753->localhost:54892 (ESTABLISHED) # ps p 33182 PID TT STAT TIME COMMAND 33182 ?? S 0:00.28 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6.1.sdk/usr/libexec/webinspectord


El proyecto iOS WebKit Debug Proxy lo habilita.

Para comenzar, instale con homebrew:

brew install ios-webkit-debug-proxy

Ejecute el simulador (si ejecuta el simulador):

SIM_DIR=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer "$SIM_DIR/Applications/iPhone Simulator.app/Contents/MacOS/iPhone Simulator" / -SimulateApplication / $SIM_DIR/SDKs/iPhoneSimulator6.1.sdk/Applications/MobileSafari.app/MobileSafari

Ejecute el proxy:

ios_webkit_debug_proxy

Verificar errores

Busque en el dispositivo un mensaje de error:

No se pudo conectar a lockdownd. Saliendo .: No hay tal archivo o directorio. No se ha podido adjuntar el inspector ios_webkit_debug_proxy

Luego, revise el dispositivo para ver un mensaje como este (ejemplo de iOS 7)

Confiar en la computadora actualmente conectada?

Elige "Confiar" e intenta volver a ejecutar el proxy:

ios_webkit_debug_proxy

Abra devtools por defecto

A continuación, abra http://localhost:9221

Las DevTools son, por defecto, una versión anterior (de Chrome 18 alrededor de marzo de 2012).

Pruebe los dispositivos modernos

Debido a cambios en el protocol , es posible que las partes de la interfaz moderna de DevTools no funcionen por completo. Puedes intentar abriendo

chrome-devtools://devtools/bundled/inspector.html?ws=localhost:9222/devtools/pag‌​e/2

donde los valores de port y page son los valores que está viendo desde http://localhost:9221 . De nuevo, esto puede ser un error.

Lea más documentos en la página del proyecto ios-webkit-debug-proxy .

Actualización: Esto también funciona con iOS7 . Actualización : se agregaron nuevas instrucciones fronto de devtools a través de patrick . Actualización : se cambió devtools.html a inspector.html para Chrome 45 , y el nuevo ws pirateó a través de Scheintod.