Моя цель
… - иметь веб-расширение (пока что Firefox), которое перехватывает и изменяет XMLHttpRequest проблемы сайта максимально прозрачно. В лучшем случае это расширение не обнаруживается сайтом даже при явном поиске. Например, я хочу иметь возможность автоматически редактировать / заменять критически важные данные перед их отправкой или обеспечивать кэширование больших изображений, несмотря на то, что исходная страница явно отключает это.
Оригинальный подход
Использование фоновый скрипт и browser.webRequest
с blocking
для перехвата всех запросов.
browser.webRequest.onBeforeRequest.addListener(
modifySend,
{
urls: ["<all_urls>"],
},
["blocking", "requestBody"]
);
browser.webRequest.onResponseStarted.addListener(
modifyReceive,
{
urls: ["<all_urls>"],
},
["blocking", "responseHeaders"]
);
Это работает в некоторой степени. Хотя я могу просматривать все запросы, изменение содержимого отправлений (POST) невозможно, и (некоторые?) Измененные заголовки полученных игнорируются Firefox. Например, мне не удалось перезаписать cache-control
, исходное значение все еще действовало.
Сценарии содержимого
Поскольку меня интересуют только XMLHttpRequests, почему бы не изменить сценарий содержимого для этих как предложено в другом вопросе . К сожалению, скрипты контента изолированы от страницы, на которой они запускаются , и внедренные скрипты обнаружимы. Проблема изменения заголовков ответов также не решена.
Вопросы
Как правильно перехватить и изменить XMLHttpRequests? Возможно ли это даже в той степени, в которой я хочу? И как расширение: как предоставить большие двоичные объекты данных в качестве ответа, например, если я делаю свое собственное кэширование, когда я не могу убедить браузер игнорировать заголовки «без кэширования»?