我用一个 Python 文件取代了每月 $200 的 Screenshot API

发布: (2026年3月14日 GMT+8 16:11)
3 分钟阅读
原文: Dev.to

Source: Dev.to

为什么我自己构建截图 API

我已经厌倦了每月为 Browserless 支付 $200 只为截取截图。现有服务要么按截图计费,要么月费高得离谱:

  • Browserless: $200–$2000/月
  • ScreenshotOne: 每张截图 $0.01
  • Puppeteer 自托管: 内存泄漏、Docker 头疼、扩展困难

我只需要一个简单的 URL → PNG 转换。

介绍 SnapForge

SnapForge 是一个自托管的截图和 PDF API,全部代码仅在一个 Python 文件中。无需云服务、无需订阅。

  • MIT 许可证,单文件实现
  • 支持截图、PDF、HTML 渲染、设备仿真、元素捕获、暗色模式等功能
  • 可选 API‑key 认证
  • 通过并发工作池实现可扩展性
  • Docker‑ready,一行部署

安装

pip install playwright aiohttp
playwright install chromium

运行 API

python snapforge.py

服务将在 8787 端口 启动。

API 使用

截图

curl -X POST http://localhost:8787/screenshot \
  -H "Content-Type: application/json" \
  -d '{ "url": "https://github.com", "full_page": true }' \
  --output github.png

PDF 生成

curl -X POST http://localhost:8787/pdf \
  -H "Content-Type: application/json" \
  -d '{ "url": "https://example.com", "format": "A4" }' \
  --output page.pdf

HTML 渲染(示例负载)

{
  "html": "\n## Invoice #1234\n\nTotal: 99 USD\n",
  "width": 600
}

功能特性

  • 设备仿真: iPhone 14、iPad、Pixel 7、Desktop 4K
  • 元素截图: 捕获特定 CSS 选择器对应的区域
  • 暗色模式: 测试暗色配色方案的渲染效果
  • 并发池: 多浏览器工作者并行处理请求
  • API‑key 认证: 使用 Bearer token 保护实例

Docker 部署

FROM python:3.11-slim

RUN pip install playwright aiohttp && \
    playwright install chromium --with-deps

COPY snapforge.py /app/
WORKDIR /app
EXPOSE 8787

CMD ["python", "snapforge.py", "--workers", "4"]

使用一次 docker builddocker run 即可部署。

常见使用场景

  • CI/CD 可视化回归测试
  • 发票与报告 PDF 生成
  • 社交媒体动态 OG 图像生成
  • 仪表盘监控截图
  • 文档截图自动化

成本对比(每月 10 000 张截图)

ServiceApprox. Cost
ScreenshotOne~ $100 USD/mo
Browserless$200+ USD/mo
SnapForge (5 USD VPS)$5 USD/mo

代码仓库

  • GitHub: 单文件,MIT 许可证。自行托管,免除后顾之忧。
0 浏览
Back to Blog

相关文章

阅读更多 »