Вы можете использовать API chrome.devtools.network
для получения HAR, а затем вы можете определить, является ли запрос XHR или нет, фильтруя выход.
Я не совсем уверен, как DevTools определяет это, но заголовок X-Requested-With
(обычно) отправляется при выполнении запросов AJAX. Это нестандартное, но широко используется. Вы можете проверить значение XMLHttpRequest
в HAR.
Возможно, это не улавливает все запросы, и могут быть некоторые другие данные, которые использует DevTools, но вот небольшой фрагмент, который я создал, который будет фильтровать HAR на основе этого заголовка.
chrome.devtools.network.getHAR(function(result) {
var entries = result.entries;
var xhrEntries = entries.filter(function(entry) {
var headers = entry.request.headers;
var xhrHeader = headers.filter(function(header) {
return header.name.toLowerCase() === 'x-requested-with'
&& header.value === 'XMLHttpRequest';
});
return xhrHeader.length > 0;
});
console.log(xhrEntries);
});
Примечание. Вы можете получить доступ к данным HAR так же, как и каждый запрос, по завершении, используя событие chrome.devtools.network.onRequestFinished
.
Спасибо за быстрый ответ! К сожалению, проблема в том, что мы тестировали множество сайтов, и большинство из них не использует заголовок X-Requested-With. Тем не менее, имея в виду эту проблему, ваше решение работает отлично, и если нет другого пути, мы, вероятно, поедем с ним. –
@BrunoSantos Я спросил группу о том, как DevTools выполняет этот фильтр, поэтому я посмотрю, вернется ли кто-нибудь с полезным. Я думаю, что, возможно, они могут сделать некоторые инструменты для объекта XHR, чтобы флаг типа запроса, а не связанный с ним сервер. Это один из способов, которым они могли бы это достичь, но увидят. –
Большое спасибо! Держите меня в курсе, и если я найду что-то полезное, я поделюсь им здесь. –