Tools
واکشی وب
ابزار web_fetch یک HTTP GET ساده انجام میدهد و محتوای خوانا را استخراج میکند
(HTML به markdown یا text). این ابزار JavaScript را اجرا نمیکند.
برای سایتهای متکی به JS یا صفحههای محافظتشده با ورود، بهجای آن از مرورگر وب استفاده کنید.
شروع سریع
web_fetch بهصورت پیشفرض فعال است -- به هیچ پیکربندیای نیاز نیست. agent میتواند
فوراً آن را فراخوانی کند:
await web_fetch({ url: "https://example.com/article" });پارامترهای ابزار
urlstringrequiredURL برای دریافت. فقط http(s).
extractMode'markdown' | 'text'default: markdownقالب خروجی پس از استخراج محتوای اصلی.
maxCharsnumberخروجی را به این تعداد نویسه کوتاه میکند.
نحوه کار
Fetch
یک HTTP GET با User-Agent شبیه Chrome و سربرگ Accept-Language
ارسال میکند. نامهای میزبان خصوصی/داخلی را مسدود میکند و تغییرمسیرها را دوباره بررسی میکند.
Extract
Readability (استخراج محتوای اصلی) را روی پاسخ HTML اجرا میکند.
Fallback (optional)
اگر Readability شکست بخورد و Firecrawl انتخاب شده باشد، از طریق Firecrawl API با حالت دور زدن bot دوباره تلاش میکند.
Cache
نتایج برای ۱۵ دقیقه (قابل پیکربندی) در cache نگه داشته میشوند تا دریافتهای تکراری از همان URL کاهش یابد.
بهروزرسانیهای پیشرفت
web_fetch فقط زمانی یک خط پیشرفت عمومی منتشر میکند که دریافت پس از پنج ثانیه
هنوز در انتظار باشد:
Fetching page content...برخوردهای سریع cache و پاسخهای سریع شبکه پیش از فعال شدن زمانسنج تمام میشوند، بنابراین خط پیشرفتی نشان نمیدهند. اگر فراخوانی لغو شود، زمانسنج پاک میشود. وقتی دریافت در نهایت کامل شود، agent نتیجه عادی ابزار را دریافت میکند؛ خط پیشرفت فقط وضعیت UI کانال است و هرگز محتوای دریافتشده صفحه را دربر نمیگیرد.
پیکربندی
{ tools: { web: { fetch: { enabled: true, // default: true provider: "firecrawl", // optional; omit for auto-detect maxChars: 50000, // max output chars maxCharsCap: 50000, // hard cap for maxChars param maxResponseBytes: 2000000, // max download size before truncation timeoutSeconds: 30, cacheTtlMinutes: 15, maxRedirects: 3, useTrustedEnvProxy: false, // let a trusted HTTP(S) env proxy resolve DNS readability: true, // use Readability extraction userAgent: "Mozilla/5.0 ...", // override User-Agent ssrfPolicy: { allowRfc2544BenchmarkRange: true, // opt-in for trusted fake-IP proxies using 198.18.0.0/15 allowIpv6UniqueLocalRange: true, // opt-in for trusted fake-IP proxies using fc00::/7 }, }, }, },}fallback برای Firecrawl
اگر استخراج Readability شکست بخورد، web_fetch میتواند برای دور زدن bot و استخراج بهتر به
Firecrawl fallback کند:
{ tools: { web: { fetch: { provider: "firecrawl", // optional; omit for auto-detect from available credentials }, }, }, plugins: { entries: { firecrawl: { enabled: true, config: { webFetch: { // apiKey: "fc-...", // optional; omit for keyless starter access baseUrl: "https://api.firecrawl.dev", onlyMainContent: true, maxAgeMs: 86400000, // cache duration (1 day) timeoutSeconds: 60, }, }, }, }, },}plugins.entries.firecrawl.config.webFetch.apiKey اختیاری است و از شیءهای SecretRef پشتیبانی میکند.
پیکربندی قدیمی tools.web.fetch.firecrawl.* بهصورت خودکار توسط openclaw doctor --fix مهاجرت داده میشود.
رفتار runtime فعلی:
tools.web.fetch.providerارائهدهنده fallback دریافت را بهصورت صریح انتخاب میکند.- اگر
providerحذف شود، OpenClaw نخستین ارائهدهنده web-fetch آماده را از credentialهای پیکربندیشده بهصورت خودکار تشخیص میدهد.web_fetchغیر sandbox شده میتواند از Pluginهای نصبشدهای استفاده کند کهcontracts.webFetchProvidersرا اعلام میکنند و یک ارائهدهنده مطابق را در runtime ثبت میکنند. Plugin رسمی Firecrawl این fallback را فراهم میکند. - فراخوانیهای sandbox شده
web_fetchارائهدهندگان bundled بههمراه ارائهدهندگان نصبشدهای را مجاز میکنند که منشأ رسمی npm یا ClawHub آنها تأیید شده باشد. امروز این کار Plugin رسمی Firecrawl را مجاز میکند؛ Pluginهای دریافت خارجی شخص ثالث همچنان مستثنا میمانند. - اگر Readability غیرفعال باشد،
web_fetchمستقیم به fallback ارائهدهنده انتخابشده میرود. اگر هیچ ارائهدهندهای در دسترس نباشد، بهصورت fail-closed شکست میخورد.
proxy قابلاعتماد env
اگر استقرار شما نیاز دارد web_fetch از طریق یک proxy خروجی قابلاعتماد
HTTP(S) عبور کند، tools.web.fetch.useTrustedEnvProxy: true را تنظیم کنید.
در این حالت، OpenClaw همچنان پیش از ارسال درخواست، بررسیهای SSRF مبتنی بر نام میزبان را اعمال میکند، اما اجازه میدهد proxy بهجای انجام DNS pinning محلی، DNS را resolve کند. این را فقط زمانی فعال کنید که proxy تحت کنترل operator باشد و پس از resolution DNS سیاست خروجی را enforce کند.
محدودیتها و ایمنی
maxCharsبهtools.web.fetch.maxCharsCapclamp میشود- بدنه پاسخ پیش از parsing در
maxResponseBytesمحدود میشود؛ پاسخهای بیشازحد بزرگ با یک هشدار کوتاه میشوند - نامهای میزبان خصوصی/داخلی مسدود میشوند
tools.web.fetch.ssrfPolicy.allowRfc2544BenchmarkRangeوtools.web.fetch.ssrfPolicy.allowIpv6UniqueLocalRangeopt-inهای محدودی برای stackهای proxy fake-IP قابلاعتماد هستند؛ آنها را تنظیمنشده بگذارید مگر اینکه proxy شما مالک آن بازههای synthetic باشد و سیاست مقصد خودش را enforce کند- تغییرمسیرها توسط
maxRedirectsبررسی و محدود میشوند useTrustedEnvProxyیک opt-in صریح است و فقط باید برای proxyهای تحت کنترل operator فعال شود که پس از resolution DNS همچنان سیاست خروجی را enforce میکنندweb_fetchبهصورت best-effort است -- بعضی سایتها به مرورگر وب نیاز دارند
پروفایلهای ابزار
اگر از پروفایلهای ابزار یا allowlistها استفاده میکنید، web_fetch یا group:web را اضافه کنید:
{ tools: { allow: ["web_fetch"], // or: allow: ["group:web"] (includes web_fetch, web_search, and x_search) },}مرتبط
- جستوجوی وب -- جستوجوی وب با چند ارائهدهنده
- مرورگر وب -- خودکارسازی کامل مرورگر برای سایتهای متکی به JS
- Firecrawl -- ابزارهای جستوجو و scrape در Firecrawl