pppeteer stop redirectの正しい姿勢とnet:ERR_FAILE Dの解決


公式文書(pppeteer/app.md at master・GoogleChrome/pppeter・GitHub)でredirectを中断する標準的なやり方はこうです.
const puppeteer = require('puppeteer');

puppeteer.launch().then(async browser => {
  const page = await browser.newPage();
  await page.setRequestInterception(true);
  page.on('request', interceptedRequest => {
    if (interceptedRequest.url().endsWith('.png') || interceptedRequest.url().endsWith('.jpg'))
      interceptedRequest.abort();
    else
      interceptedRequest.continue();
  });
  await page.goto('https://example.com');
  await browser.close();
});
最初は大丈夫でしたが、たまにこんなことがあります.Error: net::ERR_FAILED at http://xxx.com/yyyGoogleは一巡して、関連のissueが少ないことを発見しました.Page.set Request Interception Redirection Issue·Issue_·GoogleChrome/pppeteer·GitHub
公式はすでにBugと定義していますが、関連の解決策もあります.umbreella Fix Request Interception・Issue葑3471・GoogleChrome/pppeter・GitHub
しかし、他の人が会った場合はaborn()の後では終わらない問題です.私は異常な問題を投げ出したので、自分で模索してみました.適当な方法をまとめました.
たとえば:
// request.abort();
request.respond({
  status: 404,
  contentType: 'text/plain',
  body: 'Not Found!',
});