如何防止Chrome无头加载图片

时间:2018-02-13 18:10:52

标签: google-chrome-devtools google-chrome-headless

我正在运行无头镀铬测试,其中一部分我想阻止浏览器加载页面上的图像,页面必须是数据网址而不是普通页面。
我正在使用无头镀铬和下一个启动命令:
 chrome --headless --remote-debugging-port=9222

我创建了下一个测试来演示我想要实现的目标。 但没有任何作用......

const CDP = require('chrome-remote-interface');
const fs = require('fs');

CDP(async(client) => {
  const {
    Page,
    Network
  } = client;
  try {
    await Page.enable();
    await Network.enable();
    await Network.emulateNetworkConditions({
      offline: true,
      latency: 0,
      downloadThroughput: 0,
      uploadThroughput: 0
    });
    await Page.navigate({
      url: "data:text/html,<h1>The next image should not be loaded</h1><img src='http://via.placeholder.com/350x150'>"
    });
    await Page.loadEventFired();
    const {
      data
    } = await Page.captureScreenshot();
    fs.writeFileSync((+new Date()) + '.png', Buffer.from(data, 'base64'));
  } catch (err) {
    console.error(err);
  } finally {
    await client.close();
  }
}).on('error', (err) => {
  console.error(err);
});

3 个答案:

答案 0 :(得分:6)

您可以使用此标记来阻止图像 它适用于金丝雀和稳定。

  

chrome --headless --remote-debugging-port = 9222   的 - 眨眼设置= imagesEnabled =假

答案 1 :(得分:3)

使用puppeteer,您可以使用args选项传递blink-settings参数

const browser = await puppeteer.launch({
    args: [
      '--blink-settings=imagesEnabled=false'
    ]
});

答案 2 :(得分:0)

如果您使用的是 Puppeteer,则可以使用以下代码:

await page.setRequestInterception(true);
page.on('request', (request) => {
    if (request.resourceType() === 'image') request.abort();
    else request.continue();
});

来自:https://github.com/puppeteer/puppeteer/blob/main/examples/block-images.js