You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何正确拦截Playwright中Firefox浏览器的图片请求

Playwright图片请求拦截失效解决方案

核心失效原因

你提供的代码本身逻辑没有问题,失效基本都是使用顺序或覆盖范围问题导致,按以下优先级调整即可:

  • 路由注册时机错误:page.route() / context.route() 必须放在 page.goto() 执行之前,若先跳转页面再注册拦截规则,页面请求已经发起,自然不会触发拦截逻辑
  • 规则冗余冲突:后缀匹配规则会漏掉webp、svg、gif、无后缀图片、动态返回的图片资源,同时注册两条规则可能因为路由匹配优先级导致逻辑异常,保留按资源类型判断的规则即可
  • Service Worker缓存干扰:如果目标站点启用了Service Worker缓存图片,部分请求不会走到Playwright路由层,需要额外禁用

可用实现代码

全局上下文拦截(推荐,覆盖所有页面更稳定)

const { chromium } = require('playwright');

(async () => {
  const browser = await chromium.launch({ headless: false });
  // 可选:禁用Service Worker避免缓存拦截失效
  const context = await browser.newContext({
    serviceWorkers: 'block'
  });

  // 先注册拦截规则,再创建页面、跳转
  await context.route('**/*', route => {
    return route.request().resourceType() === 'image' ? 
      route.abort() : route.continue();
  });

  const page = await context.newPage();
  // 注册完规则再执行跳转
  await page.goto('https://你的目标站点地址');

  // 后续其他逻辑
  await page.waitForTimeout(3000);
  await browser.close();
})();

单页面拦截

如果只需要拦截单个页面的图片,把context.route替换为page.route即可,同样要放在page.goto()之前执行。

内容的提问来源于stack exchange,提问作者Soldeplata Saketos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 03:09:03