Налагоджуйте iOS 6 + 7 Mobile Safari за допомогою Chrome DevTools


78

iOS 6 має вбудовану підтримку віддаленої налагодження ( 1-хвилинний скринкаст ). Це чудово грає з новим веб-інспектором Safari, який, здається, є 1-річною вилкою WebKit Inspector. У ньому відсутні деякі функції, такі як редагування JS та перевірка фреймів WebSocket.

Веб-інспектор Safari використовує протокол віддаленої налагодження WebKit. Однак Safari не використовує TCP / HTTP як транспортний рівень, що робить його несумісним із Chrome.

говорить Тімоті Хетчер (він же Ксенон), службовець Apple

  • Що Safari використовує для транспортного рівня?
  • Чи можу я зробити проксі-сервер із цього таємничого транспортного рівня на HTTP, щоб він працював із Chrome DevTools?


1
посилання devforums.apple.com, розміщене вище, не працює.
Стів

Це працює, але вам потрібно увійти.
NVI

1
Це не спрацювало у мене, навіть після входу з моїм обліковим записом розробника. Я отримую сторінку "сталася помилка".
mbafford

4
Для тих, хто не має входу, відповідь говорить: "Веб-інспектор Safari використовує протокол віддаленої налагодження WebKit. Однак Safari не використовує TCP / HTTP як транспортний рівень, що робить його несумісним з Chrome."
Ерік Крістенсен

Відповіді:


93

Це дозволяє проект налагодження проксі-сервера iOS WebKit .

скріншот

Для початку встановіть за допомогою домашньої мови:

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 є старішою версією (з Chrome 18, близько березня 2012 р.).

Спробуйте сучасні розробники

Через зміни протоколу частини сучасного інтерфейсу 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 на inspector.html для Chrome 45 та новий wsзлом через Scheintod.


3
Будь ласка, дайте мені знати, чи існує для нього версія Windows. Так!
ed1nh0

5
Не вдалося підключитися до lockdownd. Вихід: немає такого файлу або каталогу Неможливо приєднати 66c5cb9cc4d362b2aecf208axxxxxxxxxxxxx інспектор
tmaximini

4
@ ed1nh0 щойно закінчив порт win32 github.com/artygus/ios-webkit-debug-proxy-win32
artygus

2
@pppeater так, найкраще працює з iOS6 .. у інструмента є деякі проблеми з iOS7, я пропоную використовувати найновіші програми-розробники (лише для iOS7), що постачаються в комплекті з Chrome - він вирішує деякі проблеми. але загалом "хакерські" правила порушують вкладку "Стилі"
artygus

2
Я змусив це працювати лише через wsпараметр. Ви можете отримати URL-адресу веб-служби, якщо зателефонуєте, localhost:9222/jsonа потім додасте ось так:chrome-devtools://devtools/bundled/devtools.html?ws=localhost:9222/devtools/page/2
Scheintod

3

Відповідно до https://github.com/andydavies/node-iosdriver ,

Safari використовує ті самі команди налагодження, що і Chrome, але обгорнуті як двійкові списки через RPC, а не JSON через веб-сокети.

Отже, так, можна було б написати проксі.

Я знайшов цей потік , подивившись, які 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

2
Зараз я використовую ios-webkit-debug-proxy і перестав працювати на node-iosdriver
Енді Девіс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.