资讯专栏INFORMATION COLUMN

puppeteer stop redirect 的正确姿势及 net::ERR_FAILED 的解决

sewerganger / 3158人阅读

摘要:在官方文档中,中断的标准做法是这样的这样一开始也是没有什么问题,但是偶尔会遇到这样情况了一轮,发现相关的很少,只找到了这么一个官方已经把它定义为一个了,也有一些相关的解决方案不过其他人遇到的情况是之后无法结束的问题,而我是抛出异常的问题,所

在官方文档(puppeteer/api.md at master · GoogleChrome/puppeteer · 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/yyy

Google 了一轮,发现相关的 issue 很少,只找到了这么一个:
Page.setRequestInterception Redirection Issue · Issue #3421 · GoogleChrome/puppeteer · GitHub

官方已经把它定义为一个 Bug 了,也有一些相关的解决方案:umbrella Fix Request Interception · Issue #3471 · GoogleChrome/puppeteer · GitHub

不过其他人遇到的情况是 abort() 之后无法结束的问题,而我是抛出异常的问题,所以我自己摸索了一下,总结出一个比较合适的办法:
就是用 respond 代替 abort。

比如:

// request.abort();
request.respond({
  status: 404,
  contentType: "text/plain",
  body: "Not Found!",
});

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/102156.html

相关文章

  • 企业级落地容器与DevOps,选用K8S都有哪些“姿势

    摘要:由于,容器任务被简化,包括部署操作水平自动伸缩滚动更新金丝雀部署和管理监视资源应用健康检查调试应用等。支持和培训当企业准备应用容器化战略时,管理平台提供商是否向企业保证的支持以及培训在所有可用的选择中,只有少数的一些公司,如支持了这些选项。 作为时下最火热的热点词汇:Kubernetes,其拥有成熟的社区,大公司的背景等等获得了大部分人的认可,很多公司都在准备启用Kubernetes,...

    susheng 评论0 收藏0
  • NAO机器人学习小计

    摘要:性能和约束只在机器人端可用。机器人的中心在脚上,并且机器人的躯干是笔直向上的的。相对速度,范围从一个布尔值,表明目标姿势是否正确达到。在操控机器人时,使用这个方法以达到显示出动作的效果。机器人可能需要使用者的帮助以达到这个姿势。 NAO APIs nao的接口全部以AL开头,全部继承自ALModule,它被包含在中。下面是ALModule的主要methods。 ALModule API...

    zzzmh 评论0 收藏0
  • Java日志正确使用姿势

    摘要:但是往往越简单的东西越容易让我们忽视,从而导致一些不该有的发生,作为一名严谨的程序员,怎么能让这种事情发生呢所以下面我们就来了解一下关于日志的那些正确使用姿势。级别表示出现了严重错误,程序将会中断执行。 前言 关于日志,在大家的印象中都是比较简单的,只须引入了相关依赖包,剩下的事情就是在项目中尽情的打印我们需要的信息了。但是往往越简单的东西越容易让我们忽视,从而导致一些不该有的bug发...

    UCloud 评论0 收藏0
  • 【修炼内功】[Java8] 使用Optional正确姿势序列化问题

    摘要:本文已收录修炼内功跃迁之路的为解决空的问题带来了很多新思路,查看源码,实现非常简单,逻辑也并不复杂。 本文已收录【修炼内功】跃迁之路 showImg(https://segmentfault.com/img/bVbrCvp?w=852&h=480); Java8的Optional为解决空的问题带来了很多新思路,查看Optional源码,实现非常简单,逻辑也并不复杂。Stuart Ma...

    Ajian 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<