美文网首页coding
用electron得到请求页面时XHR的ResponseBody

用electron得到请求页面时XHR的ResponseBody

作者: 洵_BlackBYR | 来源:发表于2017-04-14 18:23 被阅读1366次

    利用electron访问一些页面时,想要获取到异步加载的内容。
    如果利用webContents监听事件did-get-response-details,只能得到以下信息:

    • event Event
    • status Boolean
    • newURL String
    • originalURL String
    • httpResponseCode Integer
    • requestMethod String
    • referrer String
    • headers Object
    • resourceType String

    并没有想要的response body。
    经过请教与搜索之后,利用Debugger结合Chrome Debugging Protocol的Network Domain可以拿到response body。

    Network domain allows tracking network activities of the page. It exposes information about http, file, data and other requests and responses, their headers, bodies, timing, etc.

    win.webContents.debugger.on('message', (event, method, params) => {
    
          if (method === 'Network.responseReceived') {
            if(params.response.url.indexOf('xxxxx') > 0) {
              console.log('Event: responseReceived ' + params.requestId + '-' + params.response.url)
              win.webContents.debugger.sendCommand('Network.getResponseBody', {"requestId": params.requestId}, (error, result) => {
                if(!error || JSON.stringify(error) == "{}") {
                  console.log(`getResponseBody result: ${JSON.stringify(result)}`)
                } else {
                  console.log(`getResponseBody error: ${JSON.stringify(error)}`)
                }
              })
            }
          }
    
          if(method === 'Network.webSocketFrameReceived'){
            console.log(params.response)
          }
      })
    

    Reference

    相关文章

      网友评论

        本文标题:用electron得到请求页面时XHR的ResponseBody

        本文链接:https://www.haomeiwen.com/subject/vrhgattx.html