捕获Webview请求和响应

时间:2020-01-20 03:42:15

标签: javascript node.js webview electron httpresponse

我正在创建一个应用程序,用户可以在其中通过webview元素浏览网页。

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

我希望能够捕获过程中生成的所有请求和响应。在过去的两个小时中,我一直在寻找解决方法,但是没有发现任何与远程相关的东西。

我读过一些有关使用session来检索会话cookie的知识,并且我曾想过诸如请求和响应之类的其他内容,尽管它似乎没有返回任何有用的信息。

webview.addEventListener('dom-ready', function(){
  console.log(remote.getCurrentWindow().webContents.session)
})

有什么方法可以捕获所有请求和响应,最好是使用webview


这是我到目前为止所得到的,尽管它返回的似乎是请求或响应,但我不确定是否来自Webview。明天我必须仔细看一下。

主要

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 :(得分:0)

您可以在webview会话上访问onBeforeSendHeaders。获取会话的最简单方法是设置webview分区。

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

主要

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