البرنامج · الزاحف

زاحف BayanatLabs-OpenData

كيف يعرّف زاحف Bayanat Labs نفسه، وبأي سرعة يجلب الصفحات، وما الإشارات التي يتبعها، وكيف تنسحب أو تطلب الحذف.

إعداد: Bayanat Labs· آخر تحديث · Read in English

إصدار السياسة 1.0.0، آخر تحديث . السياسة بصيغة يقرؤها الحاسوب (crawler.json) · الشيفرة واختبارات المطابقة (polite-fetch) · سجل إصدار polite-fetch

تصف هذه الصفحة فقط السلوك الذي تفرضه مكتبة polite-fetch وتتحقق منه اختبارات المطابقة الخاصة بها؛ ويربط جدول التتبّع في المكتبة كل عبارة باختباراتها. هذه الصفحة توثيق، وليست استشارة قانونية.

من يشغّل هذا الزاحف

BayanatLabs-OpenData هو زاحف Bayanat Labs، وهي شركة بيانات عربية للذكاء الاصطناعي مقرها الرياض في المملكة العربية السعودية.

لا صلة لـ Bayanat Labs بموقع bayanat.ae ولا بأي جهة أخرى تحمل اسم Bayanat.

وكيل المستخدم ورمز robots.txt

وكيل المستخدمBayanatLabs-OpenData/1.0 (+https://bayanatlabs.com/open; hello@bayanatlabs.com)
رمز robots.txtBayanatLabs-OpenData
التواصلhello@bayanatlabs.com

يحمل كل طلب يرسله الزاحف وكيل المستخدم هذا، بما في ذلك طلبات ملفي robots.txt وtdmrep.json. يقرأ الزاحف ملف robots.txt كما يصفه المعيار RFC 9309. ويتبع المجموعة التي تذكر BayanatLabs-OpenData دون تمييز بين الأحرف الكبيرة والصغيرة؛ فإن لم تذكره أي مجموعة اتبع مجموعة *. وداخل المجموعة تُطبَّق أطول قاعدة Allow أو Disallow مطابقة، وتُرجَّح Allow عند التساوي، ويعمل * و$ محرفين بديلين. وتتطابق المسارات العربية وغيرها من المسارات غير اللاتينية سواء كُتبت القاعدة بترميز UTF-8 أو بالترميز المئوي، وتُعالَج أسماء النطاقات الدولية بصيغتها اللاتينية (punycode).

يجلب الزاحف ملف robots.txt مرة واحدة على الأكثر لكل مضيف كل 24 ساعة، فيسري أي تغيير تجريه من فحصه التالي، خلال 24 ساعة. ويقرأ أول 500 كيلوبايت (KiB) من ملف robots.txt ويتجاهل ما بعدها. إذا أجاب ملف robots.txt بالحالة 404 أو بحالة أخرى من فئة 4xx عدّ الزاحف الموقع بلا قيود في robots.txt؛ أما الإجابة 401 أو 403 فتوقف الزاحف عن المضيف (انظر قواعد التوقف أدناه). وإذا أجاب ملف robots.txt بالحالة 429 أو بحالة من فئة 5xx، أو تعذّر الوصول إليه، أو أُعيد توجيهه أكثر من خمس مرات، عدّ الزاحف المضيف كله ممنوعًا وأعاد الفحص بعد 24 ساعة.

لإبعاد الزاحف عن موقعك كله، أضف هذه المجموعة إلى ملف robots.txt:

User-agent: BayanatLabs-OpenData
    Disallow: /

ولإبعاده عن مجلد واحد فقط:

User-agent: BayanatLabs-OpenData
    Disallow: /drafts/

التنزيلات المجمّعة الموثّقة

ثمة استثناء واحد يخص الملفات التي تعرضها صفحة التنزيل لدى الناشر نفسه أو وثائقه للتنزيل المجمّع: يجوز للزاحف تنزيل تلك الملفات واحدًا تلو الآخر حتى إن منع ملف robots.txt في خادم التنزيل الزحف كله في مجموعة *. ومثال ذلك ناشر بيانات يضم ملف robots.txt في خادم التنزيل لديه User-agent: * وDisallow: / بينما تسرد وثائقه ملفات التفريغ. وعلى مثل هذا الخادم لا يطلب الزاحف إلا الملفات المحددة له، واحدًا تلو الآخر؛ فلا يبحث فيه عن صفحات أخرى ولا يتتبع الروابط. ويتطلب كل تنزيل من هذا النوع عنوان صفحة الناشر التي تعرض الملف، ويُسجَّل ذلك العنوان مع التنزيل. ولا ينطبق الاستثناء أبدًا إذا منعت مجموعةٌ خاصة بـBayanatLabs-OpenData ذلك الملف.

ما الذي يجلبه ولماذا

يجلب الزاحف الملفات والصفحات اللازمة لمجموعات البيانات المفتوحة والدراسات التي تنشرها Bayanat Labs.

  • لا يسجّل الدخول ولا يستخدم حسابات مدفوعة أو شخصية: فهو لا يرسل أي بيانات اعتماد، وتوقفه صفحة تسجيل الدخول أو الإجابة 401.
  • لا يخزّن ملفات تعريف الارتباط (cookies) ولا يعيد إرسالها أبدًا.
  • لا يحلّ تحديات كشف الروبوتات ولا اختبارات CAPTCHA؛ بل يتوقف.
  • لا يستخدم خوادم وكيلة (proxies).
  • تصدر طلبات العامل الواحد عن اتصال شبكي واحد؛ ولا تُبدَّل عناوين IP.

حدود الطلبات وقواعد التوقف

  • يرسل كل عامل من عمّال الزاحف طلبًا واحدًا على الأكثر كل 3 ثوانٍ إلى المضيف الواحد، عبر اتصال واحد في كل مرة.
  • أما المضيفات التي تحددها عملية التشغيل بوصفها مضيفات تفريغ بيانات مجمّعة أو واجهات برمجية فتتلقى طلبًا واحدًا في الثانية على الأكثر.
  • وإذا حدد ملف robots.txt للزاحف مهلة Crawl-delay أطول، طُبّقت المهلة الأطول.
  • بعد الإجابة 429 أو 503 ينتظر الزاحف المدة المحددة في Retry-After، بالثواني أو بتاريخ HTTP.
  • وإن لم يوجد Retry-After انتظر 60 ثانية، ثم 300 ثانية، ثم 900 ثانية عند تتابع الإجابات 429 أو 503.
  • وإذا ظل المضيف يجيب بالحالة 429 أو 503 بعد الانتظار الثالث، أو طلب انتظارًا أطول من 900 ثانية، توقف الزاحف عن طلب ذلك المضيف.
  • وتوقف الزاحف عن المضيف أيضًا الإجابة 403 أو الإجابة 401 أو إعادة التوجيه إلى صفحة تسجيل دخول أو تحدٍّ لحماية الموقع من الروبوتات (مثل استجابة تحمل cf-mitigated: challenge) أو صفحة CAPTCHA.
  • ولا يتلقى المضيف المتوقَّف عنه أي طلبات أخرى حتى نهاية عملية التشغيل، ويُسجَّل التوقف في سجل الإشارات.
  • لا يحاول الزاحف أبدًا تجاوز تحدٍّ أو اختبار CAPTCHA ولا يعيد المحاولة.

الإشارات التي نحترمها

يفحص الزاحف لكل عنوان URL الإشارات أدناه ويسجلها في سجل الإشارات، مع القرار والقاعدة التي أفضت إليه. والقرار واحد من: جلب (fetch، ويجوز نشر المحتوى وفق ترخيصه)، أو فهرسة فقط (index only، ولا يضم الإصدار سوى عنوان URL والعنوان وبصمة SHA-256 وتعليقات Bayanat Labs، دون نص الصفحة أو وسائطها)، أو تخطٍّ (skip، فلا يُجلب)، أو توقف (stopped، أي توقف الزاحف عن المضيف). وإذا انطبقت عدة إشارات فإن الإشارة الأكثر تقييدًا هي التي تحسم القرار، بحسب ترتيب الجدول.

الترتيبالإشارةالأثرمثال تطبيقي
1قاعدة توقف (403 أو 401 أو إعادة توجيه إلى تسجيل الدخول أو تحدٍّ أو CAPTCHA أو تكرار 429 أو 503)توقفتجيب الصفحة الرئيسية بالحالة 403: يتوقف الزاحف عن المضيف ولا يطلب أي صفحة أخرى منه.
2تعذّر الوصول إلى robots.txt (429 أو 5xx أو لا إجابة أو أكثر من خمس إعادات توجيه)تخطٍّيجيب ملف robots.txt بالحالة 503: لا تُجلب أي صفحة من المضيف.
3قاعدة Disallow في مجموعة BayanatLabs-OpenData في robots.txtتخطٍّUser-agent: BayanatLabs-OpenData مع Disallow: /archive/: لا تُجلب /archive/2024 حتى إن سمحت مجموعة * بكل شيء.
4قاعدة Disallow في مجموعة * إذا لم تذكر أي مجموعة BayanatLabs-OpenDataتخطٍّ (عدا التنزيلات المجمّعة الموثّقة)User-agent: * مع Disallow: /private/: لا تُجلب /private/a، وتُجلب /public/a.
5مجموعة في robots.txt تذكر زاحفًا من قائمة زواحف الذكاء الاصطناعي المثبّتة من مشروع ai.robots.txt (202 اسمًا، مثل GPTBot وCCBot وGoogle-Extended) وتمنع المسار، ولا توجد مجموعة BayanatLabs-OpenData تسمح بهفهرسة فقطUser-agent: GPTBot مع Disallow: /، ومجموعة * تسمح بكل شيء: تصبح الصفحة فهرسة فقط. وإذا أضفت مجموعة User-agent: BayanatLabs-OpenData مع Allow: / جُلبت الصفحة.
6tdm-reservation: 1 وفق TDMRep في /.well-known/tdmrep.json (أول موقع مطابق) أو في ترويسة HTTP أو في وسم meta في HTMLفهرسة فقط، ما لم تمنح سياسة tdm-policy حق التنقيب في النصوص والبيانات (tdm:mine) دون واجب أو قيدملف tdmrep.json يحتوي [{"location": "/", "tdm-reservation": 1}]: تصبح كل صفحة فهرسة فقط.
7إشارات المحتوى Content-Signal في robots.txtai-train=no: فهرسة فقط في كل إصدار؛ ai-input=no: فهرسة فقط في إصدارات الاسترجاع ومقاييس التقييمContent-Signal: search=yes, ai-train=no في مجموعة *: فهرسة فقط.
8Content-Usage (مسودة تفضيلات الذكاء الاصطناعي في IETF) في robots.txt أو في ترويسة HTTP، بأي قيمة nفهرسة فقطContent-Usage: train-ai=n: فهرسة فقط.
9ترويسة X-Robots-Tag أو وسم meta robots يحمل noai أو noimageaiفهرسة فقطX-Robots-Tag: noai: فهرسة فقط.
10سطر License: وفق RSL في robots.txtفهرسة فقط (يُعامَل بوصفه حجزًا للحقوق)License: https://example.com/license.xml: فهرسة فقط.
11لا شيء مما سبقجلبيسمح ملف robots.txt بكل شيء ولا توجد إشارة أخرى: تُجلب الصفحة.
  • لا تُحتسب سطور Content-Signal وContent-Usage إلا في مجموعة robots.txt التي تنطبق على الزاحف (مجموعة BayanatLabs-OpenData، وإلا فمجموعة *)؛ ولا يُطبَّق سطر وارد في مجموعة زاحف آخر؛ أما السطر الوارد قبل أول سطر User-agent فينطبق على جميع الزواحف.
  • قد يبدأ سطر Content-Signal بمسار؛ فيحدد أطول سطر مطابق قيمة كل مفتاح، والقيمة الفارغة أو غير المعروفة تعني عدم وجود تفضيل.
  • يمكن استخدام إصدارات Bayanat Labs المفتوحة في تدريب النماذج، ولذلك يجعل ai-train=no السجل فهرسة فقط في كل إصدار، لا في إصدارات التدريب وحدها.
  • إذا قال أي من مصادر TDMRep الثلاثة 1 صار السجل فهرسة فقط، حتى لو قال مصدر آخر 0.
  • لا يقرأ الزاحف وثيقة tdm-policy إلا إذا سمح بها ملف robots.txt، ولا يرفع الحجز إلا إذا منحت تلك الوثيقة tdm:mine دون واجب أو قيد.
  • لا يطلب الزاحف الملف /.well-known/tdmrep.json إلا إذا سمح ملف robots.txt بذلك المسار.
  • ما زالت مفردات تفضيلات الذكاء الاصطناعي في IETF مسودة قد تتغير؛ ويسجل الزاحف قيمة Content-Usage كما وجدها.
  • لا تُطبَّق توجيهات X-Robots-Tag الموجّهة إلى زاحف آخر؛ وتُطبَّق التوجيهات الموجّهة إلى جميع الزواحف أو إلى BayanatLabs-OpenData.
  • يُفحص كل هدف لإعادة التوجيه وفق ملف robots.txt الخاص بمضيفه قبل طلبه، ولا تُجلب صفحة أُعيد توجيهها أكثر من خمس مرات.

كيف تنسحب

تريد أنافعل ما يلي
تُبعد الزاحف عن موقعك كلهفي robots.txt: User-agent: BayanatLabs-OpenData وDisallow: /
تُبعده عن جزء من الموقعDisallow: /folder/ في المجموعة نفسها
تسمح له بقراءة الصفحات مع إبقاء نصوصها ووسائطها خارج الإصداراتأي واحد مما يلي: حجز حقوق التنقيب في النصوص والبيانات عبر TDMRep؛ Content-Signal: ai-train=no؛ X-Robots-Tag: noai أو وسم meta robots يحمل noai؛ Content-Usage: train-ai=n
أي أمر آخرراسلنا على hello@bayanatlabs.com

يسري أي تغيير في robots.txt عند الفحص التالي للملف من الزاحف، خلال 24 ساعة.

الحذف من مجموعة بيانات منشورة

لحذف سجل من مجموعة بيانات نشرتها Bayanat Labs بالفعل، راسلنا على hello@bayanatlabs.com مع عنوان URL الخاص به أو معرّف السجل. يُحذف السجل في الإصدار التالي من مجموعة البيانات تلك.

التحقق من طلب

تصدر الطلبات من الأجهزة التي تشغّل خطوط معالجة Bayanat Labs. لا تنشر Bayanat Labs قائمة بعناوين IP. للتحقق من طلب، قارن وكيل المستخدم فيه بالوكيل المذكور أعلاه، وراسلنا على hello@bayanatlabs.com مع الوقت والمضيف والمسار إن أردت أن نؤكده. يُسجَّل كل قرار في سجل الإشارات مع الوقت والمضيف وعنوان URL ووكيل المستخدم والعامل الذي اتخذه.

سجل التغييرات

  • 1.0.0 (31 أكتوبر 2026): السياسة كما تفرضها مكتبة polite-fetch؛ وهي تحل محل صفحة 15 أكتوبر 2026. أما الطلبات التي سبقتها، ومنها طلبات إحصاء حقوق الويب العربي في 30 و31 أكتوبر 2026، فقد اتبعت المنهج المنشور مع ذلك الإحصاء.

التواصل

للأسئلة وطلبات الانسحاب والحذف: hello@bayanatlabs.com. نص الصفحة: CC BY 4.0. ملف crawler.json: CC0.

لم يراجع النصَّ العربي بعدُ كاتبٌ لغته الأم العربية، والنص الإنجليزي هو المعتمد. (The Arabic text has not yet been reviewed by a native Arabic writer; the English governs.)