发布于 

已完结的Puppeteer学习经验与踩坑

关于这个西瓜皮

其实不难猜,和爬虫挂钩的那无非就是无头浏览器。

Puppeteer已经是蛮成熟的一个无头了,几乎能满足开发的所有需求,而且该项目由Google团队开源长久维护,有着丰富的社区。(简而言之,你踩到的坑,别人都踩到过,如果!!哪一天你踩到了一个没有人踩到过得坑,那么务必来找我,哈哈哈哈哈)

玩这个东西也挺久的了,在一些开源项目里有做过很多贡献,其中不乏有借了Puppeteer的光啊。

踩坑笔记

这里主要记录了,日常开发以及团队项目开发期间遇到的一些问题,所以这篇文章将处于长期更新维护的状态。
如有问题,欢迎底下评论区进行提问,博主24H在线,不出意外的话5分钟内会有回复的。

CentOS 的一些特殊配置

报错:

1
/../node_modules/puppeteer/.local-chromium/linux-515411/chrome-linux/chrome: error while loading shared libraries: libatk-bridge-2.0.so.0: cannot open shared object file: No such file or directory

按照他的意思是没有找到相关依赖库,这玩意简单了。

CentOS解决方法:

请求时出现 net::ERR_TUNNEL_CONNECTION_FAILED

复现:

  • 可用代理(测试完整)
  • 完整请求头

测试上百次依旧报错 net::ERR_TUNNEL_CONNECTION_FAILED

已查阅:
Windows10错误:https://answers.microsoft.com/en-us/windows/forum/all/getting-error-errtunnelconnectionfailed-while/f8d8b61f-a875-4d57-8a4f-3427a0e783c6
Chrome错误:https://www.techbout.com/err-tunnel-connection-failed-error-in-chrome-39692/
Puppeteer错误:https://vi.sandiegocsta.org/488310-puppeteer-chromium-proxy-err-tunnel-PDNJOM
Puppeteer错误:https://www.xknote.com/ask/60ef8c45582ca.html

最后。

Puppeteer的issues中找到相关记录,维护团队回复:Hey @Yom92 That error is coming straight from Chromium. There is not much we can do on our side.
具体参见:https://github.com/hardkoded/puppeteer-sharp/issues/1202#issuecomment-509187809

要而论之。

在需要代理的无头请求时,应当注意Chromium的特性,那么就没有其他的替代方案了。
对!我还没想到,如果你有,麻烦大佬下方评论区畅所欲言。

实现

无头的作用想必大家都有所了解了,那么他能用来做些什么呢?
博主在这里尝试了几个简单的请求,不同于axios的是,Puppeteer可以等待Dom和页面加载。

博主常用该类来进行SEO词尾优化,提高命中率。

原神官网抓取和操作

暂无更方便的获取cookie的办法,所以只能要求用户自己获取米游社的cookie,在请求的时候puppeteer携带cookie就能完成,角色查询,签到等任务。

相关项目:

剖析一下机器人即可,很巧妙的利用了无头进行图片渲染👍

无头渲染图片

作为Canvas的替代方法,顺便一提,应该没有人喜欢用Canvas去渲染图片吧?那叫一个折磨啊,H5不比画板香吗?