打开硒中的chrome devtool检查器-检查器

时间:2018-12-07 18:16:04

标签: selenium google-chrome selenium-webdriver google-chrome-devtools

我希望从某些网页保存(安全)WebSocket流量。我尝试使用chrome-devtool保存HAR。但显然,it doesn't save the WebSocket traffic。但是,我发现this answer表示如果可以更改SDK并记录所有SDK.networkLog.requests(),则可以记录所有请求。尽管如此,要运行SDK代码,我仍然需要从Selenium中打开chrome inspector-inspector。我知道我可以使用this answer中的硒打开开发工具。关于如何打开inspector-inspector的任何建议?还是登录WebSocket的替代方法? 提前致谢!

2 个答案:

答案 0 :(得分:3)

您可以使用wshook来拦截和修改WebSocket请求和消息事件。使用executeScript()execute_script()将以下脚本注入页面。

(function() {
  window.sentMessage = [];
  window.receivedMessage = [];
  var s = document.createElement('script');
  s.src = 'https://cdn.jsdelivr.net/gh/skepticfx/wshook@0.1.1/wsHook.js';
  s.onload = function() {
    window.wsHook.before = function(data, url) {
      window.sentMessage.push(data);
      console.log("Sending message to " + url + " : " + data);
    }

    window.wsHook.after = function(messageEvent, url, wsObject) {
      window.receivedMessage.push(messageEvent.data);
      console.log("Received message from " + url + " : " + messageEvent.data);
      return messageEvent;
    }
  }
  document.body.appendChild(s)
})(); 

稍后执行上述代码后,您可以从变量window.sentMessagewindow.receivedMessage中获取数据数组

答案 1 :(得分:2)

因此,您可以使用Chrome远程调试协议作为解决方案。即使Selenium正在控制浏览器,也要启动Chrome 63,其他客户端也可以连接到chrome并对其进行调试。您可以使用--remote-debugging-port选项启动chrome。我还没有亲自记录网络套接字流量,但已经进行了一些chrome分析,这应该可以提供帮助。以下是一些资源供您查看: Chrome dev protocol viewer  检查此资源是否可以帮助chrome-remote-interface 还有这个Selenium + Chrome Dev-tools makes a Perfect Browser Automation Recipe