iOS 6 bietet integrierte Unterstützung für Remote-Debugging ( 1 Minute Screencast ). Es spielt sich gut mit dem neuen Safari Web Inspector, der eine 1-jährige Gabelung von WebKit Inspector zu sein scheint. Einige Funktionen wie die JS-Bearbeitung und die Überprüfung von WebSocket-Frames fehlen.
Der Webinspektor von Safari verwendet das WebKit-Remote-Debugging-Protokoll. Safari verwendet jedoch kein TCP / HTTP als Transportschicht und ist daher nicht mit Chrome kompatibel.
sagt Timothy Hatcher (auch bekannt als Xenon), Apple-Mitarbeiter
- Was verwendet Safari für die Transportschicht?
- Kann ich einen Proxy von dieser mysteriösen Transportschicht zu HTTP erstellen, damit er mit Chrome DevTools funktioniert?
Antworten:
Das iOS WebKit Debug Proxy- Projekt ermöglicht dies.
Installieren Sie zunächst mit Homebrew:
brew install ios-webkit-debug-proxy
Führen Sie den Simulator aus (falls der Simulator ausgeführt wird):
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
Führen Sie den Proxy aus:
Auf Fehler prüfen
Suchen Sie auf dem Gerät nach einer Fehlermeldung:
Dann überprüfen die Vorrichtung für eine prompte wie diese (IOS 7 Beispiel:)
Wählen Sie "Vertrauen" und versuchen Sie, den Proxy erneut auszuführen:
Öffnen Sie die Standard-Devtools
Dann öffnen
http://localhost:9221
Die DevTools sind standardmäßig eine ältere Version (ab Chrome 18, ca. März 2012).
Probieren Sie moderne Devtools
Aufgrund von Protokolländerungen funktionieren Teile des modernen DevTools-Frontends möglicherweise nicht vollständig. Sie können versuchen, indem Sie öffnen
chrome-devtools://devtools/bundled/inspector.html?ws=localhost:9222/devtools/page/2
Dabei sind die Werte
port
undpage
die Werte, von denen aus Sie sehenhttp://localhost:9221
. Auch dies kann in der Tat fehlerhaft sein.Weitere Dokumente finden Sie auf der Projektseite von ios-webkit-debug-proxy .
Update: Dies funktioniert auch mit iOS7 . Update : hinzugefügt frisch devtools Frontend Anweisungen über patrick .. Update : Veränderte devtools.html zu inspector.html für Chrome 45 , und der neue
ws
Hack über Scheintod.quelle
ws
Parameter zum Laufen gebracht. Sie können eine Webservice-URL erhalten, wenn Sie anrufenlocalhost:9222/json
und diese dann wie folgt anhängen:chrome-devtools://devtools/bundled/devtools.html?ws=localhost:9222/devtools/page/2
Laut https://github.com/andydavies/node-iosdriver ,
Ja, es wäre also möglich, einen Proxy zu schreiben.
Ich habe diesen Thread gefunden, indem ich mir angesehen habe, welche TCP-Verbindungen Safari während der Verbindung mit dem MobileSafari-Inspektor hergestellt hat. Dabei habe ich festgestellt, dass er mit einem Prozess namens verbunden ist,
webinspectord
und habe Folgendes gegoogelt:# 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
quelle