是否可以使用Selenium和python捕获websocket流量?



我们在 Python 上使用 Selenium,作为自动化的一部分,我们需要捕获示例网站在网页完全加载后发送和接收的消息。

我在这里检查了一下,据说我们想做的事情可以使用BrowserMobProxy来实现,但是经过测试,websocket连接在网站上不起作用,证书错误也很麻烦。

在另一篇文章中,有人说,这可以使用ChromeloggingPrefs来完成,但似乎我们只获取网站加载时间的日志,而不是之后的数据。

是否可以仅使用硒捕获网络套接字流量?

事实证明,可以使用pyppeteer来完成;在下面的代码中,正在捕获示例网站的所有实时 websocket 流量:

import asyncio
from pyppeteer import launch
async def main():
browser = await launch(
headless=True,
args=['--no-sandbox'],
autoClose=False
)
page = await browser.newPage()
await page.goto('https://www.tradingview.com/symbols/BTCUSD/')
cdp = await page.target.createCDPSession()
await cdp.send('Network.enable')
await cdp.send('Page.enable')
def printResponse(response):
print(response)
cdp.on('Network.webSocketFrameReceived', printResponse)  # Calls printResponse when a websocket is received
cdp.on('Network.webSocketFrameSent', printResponse)  # Calls printResponse when a websocket is sent
await asyncio.sleep(100)

asyncio.get_event_loop().run_until_complete(main())

最新更新