我用一个 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.pngPDF 生成
curl -X POST http://localhost:8787/pdf \
-H "Content-Type: application/json" \
-d '{ "url": "https://example.com", "format": "A4" }' \
--output page.pdfHTML 渲染(示例负载)
{
"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 build 和 docker run 即可部署。
常见使用场景
- CI/CD 可视化回归测试
- 发票与报告 PDF 生成
- 社交媒体动态 OG 图像生成
- 仪表盘监控截图
- 文档截图自动化
成本对比(每月 10 000 张截图)
| Service | Approx. Cost |
|---|---|
| ScreenshotOne | ~ $100 USD/mo |
| Browserless | $200+ USD/mo |
| SnapForge (5 USD VPS) | $5 USD/mo |
代码仓库
- GitHub: 单文件,MIT 许可证。自行托管,免除后顾之忧。