基于axum和chromiumoxide实现headless browser服务

💡 原文中文,约4400字,阅读约需11分钟。
📝

内容提要

这篇文章介绍了作者使用Rust实现了一个类似于Golang的功能,并提供了代码链接。主要功能是提供headless chrome的API服务,支持puppeteer连接远程的headless chrome实例。还介绍了一些遇到的问题和心得,以及与Gin框架的比较。文章还介绍了如何实现PDF和Screenshot以及puppeteer连接浏览器实例的功能。最后总结了使用Rust开发后台服务的优点和不足。

🎯

关键要点

  • 作者使用Rust实现了类似于Golang的功能,提供headless chrome的API服务。
  • 支持puppeteer连接远程的headless chrome实例,内置生成pdf和截图的功能。
  • 在开发过程中遇到问题,选择了tokio作为异步运行时。
  • Rust的Drop功能类似于C++的析构功能,log功能强大,但vscode对tokio的支持不够友好。
  • Axum框架与Gin框架比较,Axum的extract功能方便,但错误处理不如Gin友好。
  • 实现PDF和Screenshot功能需要创建browser和page实例,并通过tokio::select实现超时等待。
  • browserlify允许puppeteer连接headless chrome实例,实现browser as a service的功能。
  • 通过Dockerfile.cn实现多阶段构建,默认镜像选择Debian:bookworm。
  • Rust的异常处理和异步适合后台服务开发,但库的成熟度和编译速度相对较慢。
🏷️

标签

➡️

继续阅读