0

Мне нужно записать информацию, указанную на вкладке сети, в файл. Я могу сделать это, предварительно активировав вкладку в сети, а затем экспортирую ее в файл. Но возможно ли запустить вкладку сети и автоматически экспортировать ее в файл в фоновом режиме при каждом открытии Chrome?Автоматическая регистрация вкладки сети без ее открытия в Google Chrome

Это можно сделать?

+0

См. API-интерфейс chrome.debugger. Ваше расширение может подключаться к вкладке, а затем использовать команды протокола [Сеть] (https://chromedevtools.github.io/debugger-protocol-viewer/tot/Network/). Я не читал всю документацию протокола, поэтому я не вижу способа сохранить HAR, и, возможно, вам придется делать это вручную. – wOxxOm

+0

См. Также [сценарии удаленной отладки узла.js] (https://developer.chrome.com/devtools/docs/debugging-clients#nodejs). – wOxxOm

ответ

3

Это зависит от ваших требований. Если ваше расширение включает DevTools, и поэтому оно открыто, вы можете использовать метод chrome.devtools.network.getHAR() для получения сетевого трафика. Вам не нужно переходить на вкладку «Сеть».

Однако, если вы хотите получить доступ к сетевым данным без открытия DevTools, этот API не будет работать, поскольку он доступен только для экземпляра DevTools. Есть несколько возможных вариантов.

Вариант 1

Вы можете использовать chrome.webRequest API для перехвата каждый запрос/ответ и добавить любые данные, которые вы хотите/можете к объекту. Затем вы можете использовать API chrome.downloads для загрузки данных. В вашем случае вы можете использовать URI данных.

var url = 'data:application/json;base64,' + btoa(data); 
chrome.downloads.download({url: url, filename: 'notQuiteAHAR'json'}); 

Я не проверял это на практике, и я не слишком уверен, что если вы можете определить, когда все запросы выполняются перед вызовом загрузки.

Вариант 2

Используйте более низкий уровень chrome.debugger API, как на замечание @wOxxOm. Протокол отладки позволяет только один экземпляр отладчика одновременно, так что это будет работать только тогда, когда у вас нет DevTools. API предоставляет намного больше, чем API chrome.webRequest, но требует немного работы для получения всех необходимых данных.

Существует репозиторий под названием chrome-har-capturer, в котором используется протокол отладки. Особый интерес представляет har.js, который использует события, найденные в API отладчика, для ручной сборки HAR. Цель библиотеки - удаленная отладка, но я считаю, что вы можете использовать API-интерфейс отладчика в расширении, и поэтому вы, вероятно, можете использовать аспекты этого репозитория.