Files
compose-anything/src/firecrawl/README.zh.md

6.0 KiB
Raw Blame History

Firecrawl

English | 中文

此服务用于部署 Firecrawl一个由 Playwright 和无头浏览器驱动的网页抓取和爬取 API。

服务

  • api: Firecrawl API 主服务器,集成了工作进程
  • redis: 用于作业队列和缓存的 Redis
  • playwright-service: 用于浏览器自动化的 Playwright 服务
  • nuq-postgres: 用于队列管理和数据存储的 PostgreSQL 数据库

环境变量

变量名 说明 默认值
FIRECRAWL_VERSION Firecrawl 镜像版本 latest
REDIS_VERSION Redis 镜像版本 alpine
PLAYWRIGHT_VERSION Playwright 服务版本 latest
NUQ_POSTGRES_VERSION NUQ PostgreSQL 镜像版本 latest
POSTGRES_USER PostgreSQL 用户名 postgres
POSTGRES_PASSWORD PostgreSQL 密码 postgres
POSTGRES_DB PostgreSQL 数据库名称 postgres
POSTGRES_PORT_OVERRIDE PostgreSQL 端口映射 5432
INTERNAL_PORT 内部 API 端口 3002
FIRECRAWL_PORT_OVERRIDE 外部 API 端口映射 3002
EXTRACT_WORKER_PORT 提取工作进程端口 3004
WORKER_PORT 工作进程端口 3005
USE_DB_AUTHENTICATION 启用数据库身份验证 false
OPENAI_API_KEY OpenAI API 密钥(可选) ""
OPENAI_BASE_URL OpenAI API 基础 URL可选 ""
MODEL_NAME AI 模型名称(可选) ""
MODEL_EMBEDDING_NAME 嵌入模型名称(可选) ""
OLLAMA_BASE_URL Ollama 基础 URL可选 ""
BULL_AUTH_KEY Bull 队列管理面板身份验证密钥 @
TEST_API_KEY 测试 API 密钥(可选) ""
SLACK_WEBHOOK_URL Slack Webhook 通知(可选) ""
POSTHOG_API_KEY PostHog API 密钥(可选) ""
POSTHOG_HOST PostHog 主机(可选) ""
SUPABASE_ANON_TOKEN Supabase 匿名令牌(可选) ""
SUPABASE_URL Supabase URL可选 ""
SUPABASE_SERVICE_TOKEN Supabase 服务令牌(可选) ""
SELF_HOSTED_WEBHOOK_URL 自托管 Webhook URL可选 ""
SERPER_API_KEY Serper 搜索 API 密钥(可选) ""
SEARCHAPI_API_KEY SearchAPI 密钥(可选) ""
LOGGING_LEVEL 日志级别 info
PROXY_SERVER 代理服务器 URL可选 ""
PROXY_USERNAME 代理用户名(可选) ""
PROXY_PASSWORD 代理密码(可选) ""
BLOCK_MEDIA 阻止媒体内容 true
SEARXNG_ENDPOINT SearXNG 端点(可选) ""
SEARXNG_ENGINES SearXNG 引擎(可选) ""
SEARXNG_CATEGORIES SearXNG 分类(可选) ""

请根据实际需求修改 .env 文件。

  • redis_data: 用于作业队列和缓存的 Redis 数据存储
  • postgres_data: 用于队列管理和元数据的 PostgreSQL 数据存储

使用方法

启动服务

docker compose up -d

访问 API

Firecrawl API 可在以下地址访问:

http://localhost:3002

管理面板

访问 Bull 队列管理面板:

http://localhost:3002/admin/@/queues

如果修改了 BULL_AUTH_KEY,请将 @ 替换为您的值。

API 调用示例

抓取单个页面:

curl -X POST http://localhost:3002/v1/scrape \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com"
  }'

爬取网站:

curl -X POST http://localhost:3002/v1/crawl \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com",
    "limit": 100
  }'

提取结构化数据:

curl -X POST http://localhost:3002/v1/extract \
  -H "Content-Type: application/json" \
  -d '{
    "urls": ["https://example.com"],
    "schema": {
      "type": "object",
      "properties": {
        "title": {"type": "string"},
        "description": {"type": "string"}
      }
    }
  }'

功能

  • 网页抓取: 从任何网页提取干净的内容
  • 网站爬取: 递归爬取整个网站
  • JavaScript 渲染: 完全支持动态 JavaScript 渲染的页面
  • Markdown 输出: 将网页内容清晰地转换为 markdown
  • 结构化数据提取: 使用 JSON Schema 提取数据
  • 队列管理: 内置 Bull 作业队列
  • 速率限制: 可配置的速率限制
  • 代理支持: 所有请求的可选代理配置
  • AI 驱动功能: 可选的 OpenAI 集成以进行高级提取

架构

此部署使用官方 Firecrawl 架构:

  • API 服务器: 处理 HTTP 请求并管理作业队列
  • 工作进程: 内置于主容器中,处理抓取作业
  • PostgreSQL: 存储队列元数据和作业信息
  • Redis: 处理作业队列和缓存
  • Playwright 服务: 提供浏览器自动化功能

注意事项

  • 该服务使用官方的 ghcr.io/firecrawl/firecrawl 镜像
  • PostgreSQL 使用官方的 ghcr.io/firecrawl/nuq-postgres 镜像进行队列管理NUQ - Not Quite Bull
  • Redis 默认不使用密码(运行在私有网络上)
  • 对于生产环境,启用 USE_DB_AUTHENTICATION 并配置 Supabase
  • 在生产部署中应更改 BULL_AUTH_KEY
  • AI 功能需要 OPENAI_API_KEYOLLAMA_BASE_URL
  • 所有工作进程都在单个 API 容器中使用 harness 模式运行

许可证

Firecrawl 使用 AGPL-3.0 许可证授权。