Tools

جلب الويب

تُجري أداة web_fetch طلب HTTP GET عاديًا وتستخرج المحتوى القابل للقراءة (من HTML إلى markdown أو نص). وهي لا تنفّذ JavaScript.

للمواقع كثيفة الاعتماد على JS أو الصفحات المحمية بتسجيل الدخول، استخدم متصفح الويب بدلًا من ذلك.

البدء السريع

web_fetch مفعّلة افتراضيًا -- لا يلزم أي إعداد. يستطيع الوكيل استدعاءها فورًا:

javascript
await web_fetch({ url: "https://example.com/article" });

معاملات الأداة

urlstringrequired

عنوان URL المراد جلبه. 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 بوضع تجاوز البوتات.

  • Cache

    تُخزّن النتائج مؤقتًا لمدة 15 دقيقة (قابلة للإعداد) لتقليل عمليات الجلب المتكررة لنفس عنوان URL.

  • تحديثات التقدم

    تصدر web_fetch سطر تقدم عامًا فقط عندما يظل الجلب معلقًا بعد خمس ثوانٍ:

    text
    Fetching page content...

    تنتهي إصابات التخزين المؤقت السريعة واستجابات الشبكة السريعة قبل تشغيل المؤقت، لذلك لا تعرض سطر تقدم. إذا أُلغيت الاستدعاء، يُمسح المؤقت. عندما يكتمل الجلب في النهاية، يتلقى الوكيل نتيجة الأداة العادية؛ سطر التقدم هو حالة واجهة قناة فقط ولا يحتوي أبدًا على محتوى الصفحة المجلوب.

    الإعداد

    json5
    {  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        },      },    },  },}

    احتياطي Firecrawl

    إذا فشل استخراج Readability، يمكن لـ web_fetch الرجوع إلى Firecrawl لتجاوز البوتات وتحسين الاستخراج:

    json5
    {  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.

    سلوك وقت التشغيل الحالي:

    • يحدد tools.web.fetch.provider مزود احتياطي الجلب صراحةً.
    • إذا حُذف provider، يكتشف OpenClaw تلقائيًا أول مزود web-fetch جاهز من بيانات الاعتماد المعدّة. يمكن لاستدعاء web_fetch غير المعزول استخدام Plugins المثبتة التي تعلن contracts.webFetchProviders وتسجل مزودًا مطابقًا في وقت التشغيل. يوفر Plugin الرسمي لـ Firecrawl هذا الاحتياطي.
    • تسمح استدعاءات web_fetch المعزولة بالمزودين المضمّنين بالإضافة إلى المزودين المثبتين الذين جرى التحقق من مصدرهم الرسمي عبر npm أو ClawHub. حاليًا يسمح ذلك بـ Plugin الرسمي لـ Firecrawl؛ وتظل Plugins الجلب الخارجية التابعة لأطراف ثالثة مستبعدة.
    • إذا عُطّل Readability، تتجاوز web_fetch مباشرة إلى احتياطي المزود المحدد. إذا لم يتوفر أي مزود، تفشل بإغلاق آمن.

    وكيل env موثوق

    إذا كان نشرُك يتطلب أن تمر web_fetch عبر وكيل HTTP(S) صادر موثوق، فاضبط tools.web.fetch.useTrustedEnvProxy: true.

    في هذا الوضع، يظل OpenClaw يطبق فحوصات SSRF المستندة إلى اسم المضيف قبل إرسال الطلب، لكنه يترك للوكيل حل DNS بدلًا من تثبيت DNS المحلي. فعّل هذا فقط عندما يكون الوكيل خاضعًا لتحكم المشغّل ويفرض سياسة الخروج بعد حل DNS.

    الحدود والسلامة

    • يُقيّد maxChars إلى tools.web.fetch.maxCharsCap
    • يُحدّ جسم الاستجابة عند maxResponseBytes قبل التحليل؛ وتُقتطع الاستجابات كبيرة الحجم مع تحذير
    • تُحظر أسماء المضيفين الخاصة/الداخلية
    • tools.web.fetch.ssrfPolicy.allowRfc2544BenchmarkRange و tools.web.fetch.ssrfPolicy.allowIpv6UniqueLocalRange هما خيارا تفعيل ضيقان لمكدسات وكلاء fake-IP الموثوقة؛ اتركهما غير مضبوطين ما لم يكن وكيلك يملك تلك النطاقات الاصطناعية ويفرض سياسة الوجهة الخاصة به
    • تُفحص عمليات إعادة التوجيه وتُحد بواسطة maxRedirects
    • useTrustedEnvProxy خيار تفعيل صريح ويجب ألا يُفعّل إلا للوكلاء الخاضعين لتحكم المشغّل الذين ما زالوا يفرضون سياسة الخروج بعد حل DNS
    • web_fetch تعمل بأفضل جهد -- تحتاج بعض المواقع إلى متصفح الويب

    ملفات تعريف الأدوات

    إذا كنت تستخدم ملفات تعريف الأدوات أو قوائم السماح، فأضف web_fetch أو group:web:

    json5
    {  tools: {    allow: ["web_fetch"],    // or: allow: ["group:web"]  (includes web_fetch, web_search, and x_search)  },}

    ذات صلة

    • بحث الويب -- ابحث في الويب باستخدام مزودين متعددين
    • متصفح الويب -- أتمتة متصفح كاملة للمواقع كثيفة الاعتماد على JS
    • Firecrawl -- أدوات بحث وكشط Firecrawl
    Was this useful?
    On this page

    On this page