Как получить доступ к SDK.NetworkDispatcher в расширении Chrome
Я попытался получить доступ к Chrome SDK с помощью devtools, но он не был доступен в консоли по умолчанию. Итак, в текущей консоли я нажал Ctrl + Shift + J и открыл новый devtools, а затем там я мог использовать SDK.NetworkDispatcher в консоли.
Моя проблема в том, что я не смог создать код для devtools, используя это, потому что SDK недоступен в расширении chrome. Я попытался использовать фоновый скрипт, скрипт devtools, скрипт панели и ничего не работает.
Этот код ниже, что я использовал. Это работает как раз в инспекторе инспектора. Он в основном сохраняет каждый кадр веб-сокета в файле json. (если вы попробуете это, сначала убедитесь, что ваш chrome сохраняет файлы автоматически или запрашивает каталог, если он запрашивает каталог, пожалуйста, измените на автоматический, потому что он сохранит много файлов json)
В любом случае, если кто-то может создать расширение, выполняющее этот код, пожалуйста, дайте мне знать, как это сделать.
// https://bgrins.github.io/devtools-snippets/#console-save
(function(console){
console.save = function(data, filename){
if(!data) {
console.error('Console.save: No data')
return;
}
if(!filename) filename = 'console.json'
if(typeof data === "object"){
data = JSON.stringify(data, undefined, 4)
}
var blob = new Blob([data], {type: 'text/json'}),
e = document.createEvent('MouseEvents'),
a = document.createElement('a')
a.download = filename
a.href = window.URL.createObjectURL(blob)
a.dataset.downloadurl = ['text/json', a.download, a.href].join(':')
e.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null)
a.dispatchEvent(e)
}
})(console)
// Frame/Socket message counter + filename
var iter = 0;
// This replaces the browser's `webSocketFrameReceived` code with the original code
// and adds two lines, one to save the socket message and one to increment the counter.
SDK.NetworkDispatcher.prototype.webSocketFrameReceived = function (requestId, time, response) {
var networkRequest = this._inflightRequestsById[requestId];
if (!networkRequest) return;
console.save(JSON.parse(response.payloadData), iter + ".json")
iter++;
networkRequest.addFrame(response, time, false);
networkRequest.responseReceivedTime = time;
this._updateNetworkRequest(networkRequest);
}