Отладка iOS 6 + 7 Mobile Safari с помощью Chrome DevTools

iOS 6 поставляется со встроенной поддержкой удаленной отладки (1 минута screencast). Он отлично справляется с новым Safari Web Inspector, который, кажется, является 1-летней версией WebKit Inspector. Он пропускает некоторые функции, такие как JS-редактирование и проверка кадров WebSocket.

Инспектор Safari Web использует протокол удаленной отладки WebKit. Однако Safari не использует TCP/HTTP в качестве транспортного уровня, что делает его несовместимым с Chrome.

говорит Тимоти Хэтчер (он же Ксенон), Apple использует

  • Что использует Safari для транспортного уровня?
  • Могу ли я сделать прокси от этого таинственного транспортного уровня до HTTP, чтобы он работал с Chrome DevTools?

Ответ 1

Проект проект IOS WebKit Debug Proxy позволяет это.

screenshot

Чтобы начать, установите с помощью homebrew:

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

Проверить наличие ошибок

Посмотрите на устройство сообщение об ошибке:

Не удалось подключиться к lockdownd. Выход: нет такого файла или каталога. Не удалось подключить инспектор ios_webkit_debug_proxy

Затем проверьте устройство на приглашение как это (пример iOS 7:)

Доверять текущему подключенному компьютеру?

Выберите "Доверие" и попробуйте перезапустить прокси:

ios_webkit_debug_proxy

Открыть devtools по умолчанию

Затем откройте http://localhost:9221

DevTools, по умолчанию, более старая версия (от 18 до 18 марта 2012 года).

Попробуйте современные devtools

Из-за protocol изменения, части, которые современный интерфейс DevTools может работать не полностью. Вы можете попробовать, открыв

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

где значения port и page - это значения, которые вы видите из http://localhost:9221. Опять же, это действительно может быть ошибкой.

Подробнее читайте на странице странице проекта ios-webkit-debug-proxy.


Обновление: Это работает с iOS7. Обновление. Добавлены новые интерфейсные инструкции devtools через patrick. Обновление: изменен devtools.html для инспектора. html для Chrome 45 и новый ws взломать через Scheintod.

Ответ 2

Согласно https://github.com/andydavies/node-iosdriver,

Safari использует те же команды отладки, что и Chrome, но завернуты как бинарные plists поверх RPC, а не JSON через websockets.

Итак, да, можно было бы написать прокси.

Я нашел этот поток, посмотрев, какие TCP-соединения, используемые Safari при подключении к инспектору MobileSafari, видя, что он подключен к процессу с именем webinspectord и Googling, что:

# 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