如何在Puppeteer中禁用指定WebSocket连接?
问题:Puppeteer中阻止指定WebSocket连接以提升抓取速度
我正在使用Puppeteer抓取页面,页面存在多个WebSocket连接,其中一个视频流连接严重拖慢处理速度(我在Google Cloud Function中运行,速度至关重要),需要阻止该指定连接。
解决方案思路
- 阻止访问该URL
- 连接建立后中断它
已尝试的操作
- 阻止URL方案:使用
page.on('request', () => {})无法捕获WebSocket请求,运行以下代码仅能打印除WebSocket外的所有连接:
await page.setRequestInterception(true); page.on('request', async (request) => { console.log(request.url()); })
- 中断已建立连接方案:暂未找到可行方案,目前能通过以下代码捕获所有WebSocket连接的创建事件并打印URL,但不清楚如何断开这些连接:
const session = await page.target().createCDPSession(); const subscribe = async (session: CDPSession) => { session.on('sessionattached', (s) => { subscribe(s); }); session.send('Network.enable'); session.on('Network.webSocketCreated', (payload) => { console.log('webSocketCreated', payload.url) }) session.send('Runtime.runIfWaitingForDebugger'); } await session.send('Target.setAutoAttach', { autoAttach: true, flatten: true, waitForDebuggerOnStart: true, }); subscribe(session);
内容的提问来源于stack exchange,提问作者Aleksandr Rogonov
相关产品推荐
相关产品推荐

