Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Как в хроме используя JS взять содержимое вкладки Response? (https://javascript.ru/forum/events/84945-kak-v-khrome-ispolzuya-js-vzyat-soderzhimoe-vkladki-response.html)

mik888em 12.02.2023 13:09

Как в хроме используя JS взять содержимое вкладки Response?
 
Вложений: 1
Я пытался перевести текст в аудио на сайте https://cloud.google.com/text-to-speech.
Открыв в моём софте браузер на основе Chromium (если быть точным тот же хром версии 110.0.5481.77 )

На сайте https://cloud.google.com/text-to-speech я нажал на кнопку "SPEAK IT".

И в моих инструментах разработчика chrome я вижу на вкладке "Response" это содержание:
{
  "audioContent": "UklGRv7JEgBXQVZFZm10IBAAAAABAAEAwF0AAIC7AAACABAAZGF0YdrJEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA    вырезано здесь, потому что очень длинный текст AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
  "timepoints": [],
  "audioConfig": {
    "audioEncoding": "LINEAR16",
    "speakingRate": 1,
    "pitch": 0,
    "volumeGainDb": 0,
    "sampleRateHertz": 0,
    "effectsProfileId": []
  }
}



Как я могу взять это содержимое вкладки Response?
Вложение 4893

Я кстати моим софтом могу использовать JS в браузере.

Не хочу использовать пост запрос потому что не получилось это сделать сколько я не пытался.

Nexus 12.02.2023 21:14

Я бы на вашем месте смотрел в сторону Service Workers, headless browsers like a Puppeteer или попытался сэмулировать запрос от приложения.

Aetae 12.02.2023 22:20

Если руками запрос почему-то отправить не получается(хотя по-хорошему надо разбиваться именно с этим), то можно перед отправкой подменить xmlhttp\fetch и получить ответ таким образом, условно:
function callback(response) {
  console.log('response', response);
}

window.XMLHttpRequest.prototype.open = ((open) => function(method, url, async){
  if (typeof url === 'string' && url.includes('site.ru/endpoint')) {
    this.addEventListener('load', () => callback(JSON.parse(this.responseText)), {once: true});
  }
  
  return open.apply(this, arguments);
})(window.XMLHttpRequest.prototype.open);

window.fetch = ((fetch) => function(url, options){
  const req = fetch.apply(this, arguments);
  
  if (typeof url === 'string' && url.includes('site.ru/endpoint')) {
    req.then(res => res.json()).then(callback);
  }
  
  return req;
})(window.fetch);


Часовой пояс GMT +3, время: 23:03.