Отладка 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/page/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