禁止 Playwright (Dotnet) 加载资源文件

有时(因为网络抽风,或者 IP 黑了)一些外部 CSS、字体加载得很慢,导致程序超时,不如直接在浏览器客户端屏蔽掉

可以通过 Playwright 的 Route 类实现,.NET 的调用方式与 python、JS SDK 大同小异,可以作用于任何通过 Page.RouteAsync(url, handler, options)BrowserContext.RouteAsync(url, handler, options) 建立的路由

PageBrowserContext 都可以用

环境

  • .NET 6
  • Playwright 1.18.0

参考

代码

//...
var playwright = await Playwright.CreateAsync();
await using var browser = await playwright.Webkit.LaunchAsync(new() { Headless = config.EnableHeadless });
var page = await browser.NewPageAsync();

await page.RouteAsync("**/*", async route => {
        var blockList = new List<string> { "stylesheet", "image", "font" }; // 禁止加载的资源类型
    if (blockList.Contains(route.Request.ResourceType)) await route.AbortAsync();
    else await route.ContinueAsync(); // 其他资源继续加载
});

await page.GotoAsync(url);
//...

支持的资源类型

- stylesheet 
- image 
- media 
- font 
- script 
- texttrack 
- xhr 
- fetch 
- eventsource 
- websocket 
- manifest 
- other

Route 类有 Route.AbortAsync(errorCode)Route.ContinueAsync(options)Route.FulfillAsync(options) 三个方法,见文档

效果

发表评论

您的电子邮箱地址不会被公开。

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据