Debug iOS 6+7 Mobile Safari using the Chrome DevTools

IOS6内置了对远程调试的支持(1分钟视频)。它与新的 Safari 网络检查器相处得很好,它似乎是 WebKit 检查器的一个1年前的分支。它忽略了一些特性,比如 JS 编辑和 WebSocket 帧检查。

Safari 的 Web 检查器确实使用 WebKit 远程调试协议。然而,Safari 并不使用 TCP/HTTP 作为传输层,因此与 Chrome 不兼容。

蒂莫西•哈彻(Timothy Hatcher,又名 Xenon)说,他是苹果的雇员

  • What does Safari use for transport layer?
  • 我可以从这个神秘的传输层代理到 HTTP,使它与 Chrome DevTools 一起工作吗?
40850 次浏览

根据 https://github.com/andydavies/node-iosdriver,

Safari 和 Chrome 使用相同的调试命令,但是在 RPC 上使用二进制 plist 而不是在 websockets 上使用 JSON。

所以,是的,有可能写一个代理。

I found this thread by looking at what TCP connections Safari was making while connected to the MobileSafari inspector, seeing that it was connected to a process called webinspectord and Googling that:

# 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

The iOS WebKit Debug Proxy project enables this.

screenshot

首先,安装自制程序:

brew install ios-webkit-debug-proxy

运行模拟器(如果运行模拟器) :

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

运行代理:

ios_webkit_debug_proxy

检查错误

Look on the device for an error message:

无法连接到 lockdown. Exiting. : 没有这样的文件或目录。无法附加检查器 ios _ webkit _ debug _ xy

Then check the device for a prompt 像这样 (iOS 7 example: )

信任当前连接的计算机?

选择“信任”并尝试重新运行代理:

ios_webkit_debug_proxy

打开默认 devtools

然后打开 http://localhost:9221

The DevTools are, by default, an older version (from Chrome 18 circa March 2012).

试试现代的 Devtools

由于 规定的变化,部分现代 DevTools 前端可能无法完全工作

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

其中的 portpage值是您从 http://localhost:9221中看到的值。

Ios-webkit-debug-代理项目页面阅读更多的文档。


更新: 这与 还有 iOS7一起工作。更新: 通过 Patrick增加了新的 devtools 前端指令。.将 devtools.html 更改为 spector.html 铬45,以及通过 Scheintod 进行的新的 ws黑客攻击。