【问题标题】:Cancel Downloading in PuppeteerSharp在 PuppeteerSharp 中取消下载
【发布时间】:2021-03-29 18:53:48
【问题描述】:

我需要检查文件大小是否超过给定大小,取消下载。

这是我的LaunchOptions

var browser = await Puppeteer.LaunchAsync(new LaunchOptions
{
    Headless = true,
    ExecutablePath = ChromePath,
    IgnoreHTTPSErrors = true,
    Args = new[] { "--disable-extensions" }
});

在这里我做得更多:

await page.Client.SendAsync("Page.setDownloadBehavior", new
{
    behavior = "allow",
    downloadPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
});

await page.SetRequestInterceptionAsync(true);

page.Request += (s, er) =>
{
    if (er.Request.Headers.ContainsKey("Content-Length") && Convert.ToInt64(er.Request.Headers["Content-Length"]) > GIVENSIZE)
    {
        er.Request.AbortAsync();
        return;
    }
}

有两个问题,--disable-extensions 不起作用,会弹出 Internet 下载管理器下载文件,并且请求不包含 Content-Length 标头让我检查文件大小。

有什么想法吗?

【问题讨论】:

  • 也许您可以通过一些涉及 TCP 包的低级操作以某种方式获得校验和,然后同样找到大小。

标签: c# puppeteer puppeteer-sharp


【解决方案1】:

尝试将 URL/域添加到 Internet Download Manager's exception list。它将忽略下载请求。

【讨论】:

  • 互联网下载管理器只是一个例子,如果我禁用它,那么 chrome 本身就会下载文件。我需要通过检查文件大小来取消下载。
猜你喜欢
  • 2021-03-30
  • 2017-01-09
  • 2021-05-18
  • 2015-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-08
相关资源
最近更新 更多