使用 Chrome Devtools 协议 (CDP) 可以使 Chrome “导航”到 URL。这样做会产生一个 GET。
有没有办法用 POST “导航”并提供身体?NavigateCommand 似乎只定义了 Url、CommandName、FrameId、Referer 和 TransitionType。
我正在使用 CDP 的 BaristaLabs 实现的变体。执行 GET 的代码如下所示:
public async Task<byte[]> PdfFromUrl(
string url = "about:", bool landscape = false,
bool displayHeaderFooter = true,
bool printBackground = false,
byte[] postBody= null)
{
var newSessionInfo = await CreateNewSession();
try
{
using (var session = new ChromeSession(newSessionInfo.WebSocketDebuggerUrl))
{
using (var navigatorWatcher = new NavigatorWatcher(session))
{
await navigatorWatcher.Start();
var navCmd = new NavigateCommand { Url = url };
var navigateResult = await session.Page.Navigate(navCmd, millisecondsTimeout: 120 * 1000);
await navigatorWatcher.WaitForNetworkIdle();
}
参数是我的postBody
,它还没有做任何事情。
显然,帖子通常来自远程客户端。但我看不出它无法模拟的任何内在原因,除了没有命令来模拟它。
我怀疑这个问题实际上是关于 CDP 以及我可能需要添加到 Barista Labs CDP 实施中的内容。