我使用puppeteer-sharp通过websockets转储页面接收和发送的数据。
async Task Dump()
{
var client = await _browser.Page.Target.CreateCDPSessionAsync();
await client.SendAsync("Network.enable");
client.MessageReceived += OnChromeDevProtocolMessage;
}
void OnChromeDevProtocolMessage(object sender, MessageEventArgs eventArgs)
{
if (eventArgs.MessageID == "Network.webSocketCreated")
{
Logger.Trace($"Network.webSocketCreated: {eventArgs.MessageData}");
}
else if (eventArgs.MessageID == "Network.webSocketFrameSent")
{
Logger.Trace($"Network.webSocketFrameSent: {eventArgs.MessageData}");
}
else if (eventArgs.MessageID == "Network.webSocketFrameReceived")
{
var cdpMessage = JsonConvert.DeserializeObject<CdpMessage>(eventArgs.MessageData.ToString());
ProcessMessage(cdpMessage);
}
}
有没有办法使用puppeteer或直接使用Chrome开发协议消息将数据发送到websockets?
**EDIT:**或者,是否可以通过某种方式获得WebSocket示例(或句柄),以便在JavaScript代码中使用它来使用EvaluateFunctionAsync发送数据?
2条答案
按热度按时间dwbf0jvd1#
QueryObjects可以在命令行API中使用,也可以在Puppeteer中使用,以便查找示例。之后,您只需使用EvaluateFunction,对对象执行send方法。在PuppeteerSharp中,它看起来如下所示:
有关详细信息,请参阅文档。
5tmbdcev2#
如果有人在JavaScript中找到这个问题的答案:
评论中的ViniCoder,Python中的pyppeteer: