我希望从某些网页保存(安全)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
的替代方法?
提前致谢!
答案 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.sentMessage
和window.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