Захват веб-запросов и ответов - PullRequest
1 голос
/ 20 января 2020

Я создаю приложение, в котором пользователь может просматривать веб-страницы с помощью элемента webview.

<webview src='user-generated'></webview>

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

Я прочитал кое-что об использовании session для получения файлов cookie сеанса, и у меня было представлял себе другие вещи, такие как запросы и ответы, хотя, похоже, он не возвращает ничего полезного для этой цели. *?


Вот что я получил до сих пор, и, хотя он возвращает то, что кажется запросами или ответами, я еще не уверен, что это из веб-просмотра. Завтра мне придется присмотреться.

main

ipcMain.on('asynchronous-message', (event, arg) => {
  session.defaultSession.webRequest.onBeforeSendHeaders((details, callback) => {
    event.reply('asynchronous-reply', details)
    callback({ requestHeaders: details.requestHeaders })
  })
})

рендер

ipcRenderer.send('asynchronous-message', webview) // Should I be sending `webview` as the argument?
ipcRenderer.on('asynchronous-reply', (event, payload) => {
  console.log(paylod)
})

1 Ответ

0 голосов
/ 03 апреля 2020

Вы можете получить доступ к onBeforeSendHeaders в сеансе веб-просмотра. Самый простой способ получить сеанс - настроить раздел веб-просмотра.

<webview src='user-generated' partition='my-webview-partition'></webview>

main

var ses = session.fromPartition('my-webview-partition');
ses.webRequest.onBeforeRequestHeaders((details, callback) => {
  details.requestHeaders['User-Agent'] = 'MyAgent'
  callback({ requestHeaders: details.requestHeaders })
});
...