задний план
Инструментарий разработчика Chrome в целом всем знаком, открыть консоль для локальной отладки можно правым кликом по инспектору или cmd+opt+j. Другой способ — отлаживать другой браузер через один браузер или отлаживать мобильный webView через USB-соединение с мобильным телефоном. Оба эти метода относятся к целевой странице удаленной отладки в новом окне. Это вновь открытое окно открывает html-страницу (inspector.html), которая выглядит как встроенные инструменты разработки. Отладка целевой страницы в spector.html аналогична отладке во встроенных инструментах разработки.
О соглашении
Официальное объяснение — это протокол, который позволяет инструментам отлаживать и проверять Chrome, Chromium и другие браузеры на базе Blink. Он разделяет несколько различных функциональных модулей (доменов), таких как DOM, Debugger, Network, Timeline и т. д. Каждый модуль определяет некоторые команды и события в виде структурированного JSON.
Принцип удаленной отладки
Страница удаленного отладчика (inspector.html) может делать то же самое, что и инструменты разработки, встроенные в целевую страницу.
запустить экземпляр хрома
Функция удаленной отладки Chrome по умолчанию отключена, и к ней можно получить доступ через--remote-debugging-port
Командная строка создает экземпляр хрома для отладки.
Такие как:
sudo /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9527
Запустите Chrome здесь, Chrome разместит веб-приложение в качестве сервера, и к этому веб-приложению можно будет получить доступ через http://localhost:9527.
Управление вкладками Chrome
Получить информацию обо всех открытых тегах, вернуть массив json,type
дляpage
является открытой страницей. тип может иметь другие типы.
http://localhost:9527/json
вернусь:
[ {
"description": "",
"devtoolsFrontendUrl": "/devtools/inspector.html?ws=localhost:9527/devtools/page/7FBA9CF445D4BF16990FEF94A6F32F76",
"id": "7FBA9CF445D4BF16990FEF94A6F32F76",
"title": "tigertrade-web",
"type": "page",
"url": "http://172.25.7.141:4000/client/quoteMain.html#symbol=GCmain&market=FUT&secType=FUT",
"webSocketDebuggerUrl": "ws://localhost:9527/devtools/page/7FBA9CF445D4BF16990FEF94A6F32F76"
}, {
"description": "",
"devtoolsFrontendUrl": "/devtools/inspector.html?ws=localhost:9527/devtools/page/61EDD947CB27F854C65B34005EFC2A85",
"id": "61EDD947CB27F854C65B34005EFC2A85",
"title": "tigertrade-web",
"type": "page",
"url": "http://172.25.7.141:4000/client/quoteInfoSide.html#symbol=GCmain&market=FUT&secType=FUT",
"webSocketDebuggerUrl": "ws://localhost:9527/devtools/page/61EDD947CB27F854C65B34005EFC2A85"
} ]
Соединение между spector.html и хостом Chrome устанавливается через веб-сокет. Адрес веб-сокета — это значение параметра ws в URL-адресе.
вpage/
с последующимpage id
, каждая страница имеет уникальный идентификатор страницы, и Chrome использует этот идентификатор, чтобы определить, какая страница является целевой. Через это соединение происходит обмен данными между страницей и ядром Chrome.
Между экземпляром отладчика Chrome и экземпляром целевой страницы существует связь процесса, поэтому инспекция.html может загружать исходный файл целевой страницы через экземпляр отладчика Chrome, а также может управлять целевой страницей, например добавлять точки останова, обновлять, записывать Сетевая информация и т.д.
- Закрыть вкладку, передать id страницы
http://localhost:9527/json/close/7FBA9CF445D4BF16990FEF94A6F32F76
- Активировать вкладку
http://localhost:9527/json/activate/7FBA9CF445D4BF16990FEF94A6F32F76
- Просмотр информации о версии Chrome и протокола
http://localhost:9527/json/version
Как работают инструменты разработки
Что происходит внутри devtools, когда мы выполняем различные операции с spector.html?
Во-первых, на панели «Сеть» инструментов разработчика проверьте вкладку WS, обновите страницу и найдите подключение через веб-сокет. Это ws-соединение, установленное между spector.html и хостом Chrome для обмена данными.
расширять
резюме
Многие инструменты используют протокол отладки Chrome, в том числе phantomJS и ChromeDriver Selenium, которые по сути являются одной и той же реализацией, эквивалентной API, предоставляемому ядром Chrome для вызова приложений. На официальном сайте перечислено множество интересных инструментов:Связь, Из-за богатого API существует так много плагинов для Chrome.
Библиотека для узла, реализующего протокол удаленной отладки:
- chrome-debug-protocolИспользуются ES6 и TypeScript
- chrome-remote-interfaceРекомендовано официальным сайтом
- chrome-har-capturerПередайте URL-адрес и получите файл формата har напрямую