1730853254
2024-11-05 23:18:00
Firecrawl Simple は、自己ホスティングと貢献の容易さのために最適化された Firecrawl の必要最小限の安定したバージョンです。課金ロジックと AI 機能は完全に削除されています。
playwright と置き換えられます puppeteer-cluster そして puppeteer-extraのステルスプラグインは、 fire-engine そして scrapingbee ガードされたページには必要ありません。さらに、 2キャプチャ 最大限のステルス性を実現するために、トークンとプロキシの資格情報を ENV として含めることができます。近い将来、目標は、 ヒーロー puppeteer-extra はメンテナンスされなくなったため
v1のみ /scrape、 /crawl/{id}、 そして /crawl ルートは firecrawl simple でサポートされています。を参照してください。 openapiの仕様はこちら。また、 creditsUsed の API レスポンスから削除されました /crawl/{id} ルート。
ポストホッグ、スーパーベース、ストライプ、ラングチェーン、ログスナッグ、セントリー、ブルボード、 package.json からの他のいくつかの dep が削除されます。
これは私たち自身で維持しなければならないことが多く、私たちは協力してくれる人を積極的に探しています。 有給のパートタイムのメンテナのポジションもあります。 現在、いくつかの問題に対して報奨金を用意していますが、長期的にアクティブなメンテナとして活動することに興味のある人を求めています。
の 上流の Firecrawl リポジトリ 次の宣伝文句が含まれています。
このリポジトリは開発中であり、カスタム モジュールをモノ リポジトリに統合しているところです。まだセルフホスト展開の準備が完全には整っていませんが、ローカルで実行できます。
Firecrawl の API サーフェスと一般的な機能は、当社にとって理想的でした。 Trieve サイトサーチ製品、しかし、Kubernetes 上でのコントリビュートとスケールが容易なセルフホスティングの準備ができているバージョンが必要でした。したがって、私たちはフォークして、必要なものを取り除いた安定したバージョンの保守を開始することにしました。
Firecrawl のアンチボット ページ ソリューションである Fire-engine は、クローズド ソースであることが、これを維持する必要がある最大の課題です。さらに、SaaS と AI の依存関係を必要としない私たちの目的は、私たちのユースケースを Firecrawl の現在の使命から大きく遠ざけているため、現時点ではアップストリームへのマージは実行可能ではないようです。
次のように、次のサービスを docker-compose に追加する必要があります。これらのサービスを実行するために Kubernetes またはその他のホスティング ソリューションを構成できると信じています。
name: firecrawl
services:
# Firecrawl services
playwright-service:
image: trieve/puppeteer-service-ts:v0.0.6
environment:
- PORT=3000
- PROXY_SERVER=${PROXY_SERVER}
- PROXY_USERNAME=${PROXY_USERNAME}
- PROXY_PASSWORD=${PROXY_PASSWORD}
- BLOCK_MEDIA=${BLOCK_MEDIA}
- MAX_CONCURRENCY=${MAX_CONCURRENCY}
- TWOCAPTCHA_TOKEN=${TWOCAPTCHA_TOKEN}
networks:
- backend
firecrawl-api:
image: trieve/firecrawl:v0.0.46
networks:
- backend
environment:
- REDIS_URL=${FIRECRAWL_REDIS_URL:-redis://redis:6379}
- REDIS_RATE_LIMIT_URL=${FIRECRAWL_REDIS_URL:-redis://redis:6379}
- PLAYWRIGHT_MICROSERVICE_URL=${PLAYWRIGHT_MICROSERVICE_URL:-http://playwright-service:3000}
- PORT=${PORT:-3002}
- NUM_WORKERS_PER_QUEUE=${NUM_WORKERS_PER_QUEUE}
- BULL_AUTH_KEY=${BULL_AUTH_KEY}
- TEST_API_KEY=${TEST_API_KEY}
- HOST=${HOST:-0.0.0.0}
- SELF_HOSTED_WEBHOOK_URL=${SELF_HOSTED_WEBHOOK_URL}
- LOGGING_LEVEL=${LOGGING_LEVEL}
extra_hosts:
- "host.docker.internal:host-gateway"
depends_on:
- playwright-service
ports:
- "3002:3002"
command: ["pnpm", "run", "start:production"]
firecrawl-worker:
image: trieve/firecrawl:v0.0.46
networks:
- backend
environment:
- REDIS_URL=${FIRECRAWL_REDIS_URL:-redis://redis:6379}
- REDIS_RATE_LIMIT_URL=${FIRECRAWL_REDIS_URL:-redis://redis:6379}
- PLAYWRIGHT_MICROSERVICE_URL=${PLAYWRIGHT_MICROSERVICE_URL:-http://playwright-service:3000}
- PORT=${PORT:-3002}
- NUM_WORKERS_PER_QUEUE=${NUM_WORKERS_PER_QUEUE}
- BULL_AUTH_KEY=${BULL_AUTH_KEY}
- TEST_API_KEY=${TEST_API_KEY}
- SCRAPING_BEE_API_KEY=${SCRAPING_BEE_API_KEY}
- HOST=${HOST:-0.0.0.0}
- SELF_HOSTED_WEBHOOK_URL=${SELF_HOSTED_WEBHOOK_URL}
- LOGGING_LEVEL=${LOGGING_LEVEL}
extra_hosts:
- "host.docker.internal:host-gateway"
depends_on:
- playwright-service
- firecrawl-api
command: ["pnpm", "run", "workers"]
redis:
image: redis:alpine
networks:
- backend
command: redis-server --bind 0.0.0.0
networks:
backend:
driver: bridge
プロキシには Oxylabs の環境値が推奨されており、必要に応じて 2captcha の設定も検討してください。
Firecrawl の単純な動作は次のとおりです。
crawlエンドポイントは URL で開始され、リクエストに応じてページのサイトマップまたは HTML を取得します。- サイトマップまたは HTML からの URL に一致するもの
includeそしてexclude条件が Redis キューに追加されます - ワーカーはそれらの URL を選択し、
/scrape上のエンドポイントplaywright-service。 - まだスクレイピングされておらず、一致する URL
includeそしてexcludeスクレイピングから受け取った HTML の条件が各ワーカーからキューに追加されます - 新しいリンクが見つからなくなるか、リンクが見つからなくなるまで、手順 2 ~ 4 を続けます。
limitクロールで指定された値に達しました
スケーリングのボトルネックは次の順序で発生します。
MAX_CONCURRENCYそれぞれの (ヘッドレス人形遣いブラウザの数)playwright-service- 実際の数
playwright-serviceロードバランサの背後にあるのは - の数
firecrawl-workerを持っています (これがボトルネックである場合は非常にまれです)
URL およびアクセス可能なすべてのサブページをクロールするために使用されます。これにより、クロール ジョブが送信され、クロールのステータスを確認するためのジョブ ID が返されます。
クロールのステータスを確認するためのクロール ジョブ ID と URL を返します。
{
"success": true,
"id": "123-456-789",
"url": "https:///v1/crawl/123-456-789"
}
クロール ジョブのステータスを確認し、その結果を取得するために使用されます。
{
"status": "completed",
"total": 36,
"expiresAt": "2024-00-00T00:00:00.000Z",
"data": [
{
"markdown": "[Firecrawl Docs home page!...",
"html": ""en" class="js-focus-visible lg:[--scroll-mt:9.5rem]" data-js-focus-visible="">...",
"metadata": {
"title": "Build a 'Chat with website' using Groq Llama 3 | Firecrawl",
"language": "en",
"sourceURL": "https://docs.firecrawl.dev/learn/rag-llama3",
"description": "Learn how to use Firecrawl, Groq Llama 3, and Langchain to build a 'Chat with your website' bot.",
"ogLocaleAlternate": [],
"statusCode": 200
}
}
]
}
URL をスクレイピングし、そのコンテンツを指定された形式で取得するために使用されます。
応答:
{
"success": true,
"data": {
"markdown": "Launch Week I is here! [See our Day 2 Release 🚀](https://www.firecrawl.dev/blog/launch-week-i-day-2-doubled-rate-limits)[💥 Get 2 months free...",
"html": ""en" class="light" style="color-scheme: light;">"__variable_36bd41 __variable_d7dc5d font-inter ...",
"metadata": {
"title": "Home - Firecrawl",
"description": "Firecrawl crawls and converts any website into clean markdown.",
"language": "en",
"keywords": "Firecrawl,Markdown,Data,Mendable,Langchain",
"robots": "follow, index",
"ogTitle": "Firecrawl",
"ogDescription": "Turn any website into LLM-ready data.",
"ogUrl": "https://www.firecrawl.dev/",
"ogImage": "https://www.firecrawl.dev/og.png?123",
"ogLocaleAlternate": [],
"ogSiteName": "Firecrawl",
"sourceURL": "https://firecrawl.dev",
"statusCode": 200
}
}
}
#devflowincfirecrawlsimple #自己ホスティングとコントリビューションの容易さのために最適化された #Firecrawl #の必要最低限の安定したバージョン課金ロジックと #機能は完全に削除されています