أداة · متاح

مكتبة الزحف polite-fetch من Bayanat Labs

polite-fetch مكتبة بايثون تفرض سياسة الزاحف BayanatLabs-OpenData، الذي يجلب الملفات والصفحات لمجموعات البيانات المفتوحة والدراسات التي تنشرها Bayanat Labs. فقبل أن تطلب أي صفحة تقرأ ملف robots.txt كما يصفه المعيار RFC 9309، وتسجّل لكل عنوان URL الإشارات التي يقدّمها الموقع (منع زواحف ذكاء اصطناعي مسمّاة، وحجز الحقوق عبر TDMRep، وContent-Signal، وContent-Usage من IETF، وnoai في X-Robots-Tag أو وسم meta، وسطور الترخيص وفق RSL) مع قرار واحد: جلب، أو فهرسة فقط، أو تخطٍّ، أو توقف. والإشارة الأكثر تقييدًا هي التي تحسم القرار، وتُكتب القاعدة التي أفضت إليه في سجل الإشارات. ويرسل كل عامل طلبًا واحدًا على الأكثر كل 3 ثوانٍ إلى المضيف الواحد، ويحترم Retry-After، ويتوقف عند رفض الوصول أو صفحة تسجيل الدخول أو تحدٍّ لكشف الروبوتات أو صفحة CAPTCHA دون أن يحاول تجاوزها. وكل عبارة عن سلوك الزاحف في صفحة الزاحف مربوطة بالاختبارات التي تتحقق منها: 634 اختبار مطابقة ناجحة كلها، على خادم اختبار محلي فيه 80 سيناريو. والسياسة منشورة أيضًا في ملف crawler.json.

إعداد: Bayanat Labs· آخر تحديث · Apache-2.0· Read in English
الترخيصApache-2.0 للشيفرة، وCC BY 4.0 للتوثيق، وCC0 1.0 لسياسة الزاحف، وMIT لأسماء زواحف الذكاء الاصطناعي المرفقة من ai.robots.txt
الإصدارv0.1.0 · المكتبة v0.1.0 مع سياسة الزاحف 1.0.0، موسومة على GitHub، وغير موجودة على PyPI بعد.
تاريخ النشر
آخر تحديث
لمن هذا الإصدارالمهندسون الذين يبنون مجموعات بيانات من الويب ويريدون زاحفًا يتبع robots.txt وإشارات الانسحاب من استخدامات الذكاء الاصطناعي، ويسجّل كل قرار مع قاعدته، ويتوقف حين يرفض الموقع الوصول؛ وأصحاب المواقع الذين يريدون معرفة كيف يتعامل الزاحف BayanatLabs-OpenData مع إشاراتهم.
المستوىمتوسط

robots.txt AI crawler opt-out TDMRep Content-Signal polite crawler

أرقام رئيسية

634اختبار مطابقة، تعمل على خادم اختبار محلي ولا تعمل أبدًا على مواقع حقيقية
634منها ناجحة
80سيناريو على خادم الاختبار: صيغ مختلفة لملف robots.txt، وملفات TDMRep وترويساته، وسطور Content-Signal، وإجابات تقييد الطلبات، والتحديات، وصفحات CAPTCHA، وإعادات التوجيه إلى تسجيل الدخول، والمسارات العربية، واسم نطاق دولي
202اسمًا لزواحف الذكاء الاصطناعي في القائمة المثبّتة من مشروع ai.robots.txt، ومنع أي منها في robots.txt يجعل الصفحة فهرسة فقط
3ثوانٍ على الأقل بين طلبين من العامل نفسه إلى المضيف نفسه، عبر اتصال واحد
1ثانية على الأقل بين الطلبات إلى المضيفات التي تحددها عملية التشغيل مضيفاتِ تفريغ مجمّع أو واجهات برمجية
60ثانية مدة الانتظار بعد إجابة تقييد الطلبات أو الضغط دون Retry-After
300ثانية بعد إجابة ثانية متتالية من النوع نفسه
900ثانية بعد الثالثة، ويتوقف الزاحف عن المضيف إذا ظل يرفض أو طلب انتظارًا أطول

تُحسب آليًا من الملفات المنشورة. يُقرأ كل رقم من ملف docs/conformance/summary.json أو policy/crawler.json في المستودع عند الوسم v0.1.0، ويُربط ببصمة SHA-256 للملف. ويُقدَّم ملف crawler.json نفسه على العنوان bayanatlabs.com/open/crawler.json.

التنزيل والمعرّفات

ابدأ الاستخدام

ثبّت المكتبة من GitHub عند وسم الإصدار v0.1.0، فالحزمة غير موجودة على PyPI بعد. ويعطي الأمر check القرار لعنوان URL من robots.txt وtdmrep.json دون طلب الصفحة.

pip install "git+https://github.com/Bayanat-Labs/polite-fetch@v0.1.0"

polite-fetch check https://example.org/page --purpose training_release
polite-fetch fetch https://example.org/page --headers-only --ledger signals.jsonl

from bayanatlabs_polite_fetch import Fetcher

with Fetcher(worker_id="worker-1", ledger="signals.jsonl") as f:
    r = f.fetch("https://example.org/page", purpose="training_release")
    print(r.decision, r.decision_reason)

ما الذي يتضمنه الإصدار

الجزءالترخيصضمن الإصدار
مكتبة بايثون وأداة سطر الأوامر (bayanatlabs_polite_fetch) لـ Python 3.10 أو أحدث، مع اعتمادية تشغيل واحدة (httpx)Apache-2.0نعم
خادم الاختبار المحلي واختبارات المطابقةApache-2.0نعم
سياسة الزاحف 1.0.0 (policy/crawler-policy.yaml وملف crawler.json المولَّد منه)CC0 1.0نعم
التوثيق: ملف README بالإنجليزية والعربية، ونص صفحة الزاحف، وتقرير المطابقة، وجدول التتبّع، ومخطط سجل الإشاراتCC BY 4.0نعم
أسماء زواحف الذكاء الاصطناعي من ملف robots.json في مشروع ai.robots.txt، مثبّتة على إيداع واحدMITنعم

صيغة النسبة: polite-fetch by Bayanat Labs. https://github.com/Bayanat-Labs/polite-fetch

الاستخدامات المقصودة

  • جلب الصفحات والملفات لمجموعة بيانات وفق سياسة زحف ثابتة ومنشورة، مع تسجيل القرار وقاعدته لكل عنوان URL.
  • معرفة القرار الذي سيتخذه الزاحف لعنوان URL (مجموعة robots.txt، ومنع زواحف الذكاء الاصطناعي، وTDMRep، وContent-Signal، وContent-Usage) قبل طلب الصفحة.
  • إعادة استخدام خادم الاختبار واختبارات المطابقة للتحقق من طريقة تعامل زاحف آخر مع robots.txt وإشارات الانسحاب.

خارج النطاق

  • الحكم على جواز إعادة استخدام المحتوى قانونًا: تقرأ المكتبة الإشارات التي تقرؤها الآلات، لا شروط الاستخدام ولا التراخيص.
  • تجاوز ضوابط الوصول: تتوقف المكتبة عند تسجيل الدخول وتحديات كشف الروبوتات وصفحات CAPTCHA، ولا خيار فيها لتجاوزها.

الحقوق باختصار

التدريب والعرض وإعادة التوزيع وإنشاء الأصوات الاصطناعية أذونات منفصلة.

الاستخدامالحالةملاحظة
التدريبلا ينطبقمكتبة وملف سياسة، وليست بيانات تدريب.
العرضمسموحالتوثيق ونص الصفحة بترخيص CC BY 4.0 مع النسبة إلى المصدر، وملف crawler.json بترخيص CC0 1.0.
إعادة التوزيعمسموحالشيفرة بترخيص Apache-2.0، والتوثيق بترخيص CC BY 4.0، وسياسة الزاحف بترخيص CC0 1.0، وأسماء زواحف الذكاء الاصطناعي المرفقة بترخيص MIT الخاص بمشروع ai.robots.txt.
الصوت الاصطناعيلا ينطبقلا يتضمن ملفات صوتية.

القيود

  • تسري حدود الطلبات وقواعد التوقف على كل عامل وحده، ولا تنسّق المكتبة بين عدة عمّال على المضيف نفسه، فشغّل عاملًا واحدًا لكل مضيف.
  • ما زالت مفردات تفضيلات الذكاء الاصطناعي في IETF (Content-Usage) مسودة؛ وتُسجَّل القيم كما وُجدت، وأي قيمة n تجعل السجل فهرسة فقط.
  • يعتمد كشف التحديات وصفحات CAPTCHA على ترويسات الاستجابة وعلامات في الصفحة؛ وحين لا تُقرأ إلا الترويسات لا تُفحص وسوم meta ولا متن الصفحة.
  • يعتمد استثناء التنزيلات الموثّقة على عنوان الوثائق الذي يقدّمه المستدعي؛ وتسجّله المكتبة لكنها لا تقرأ تلك الصفحة.
  • تعمل اختبارات المطابقة على خادم اختبار محلي ولا تعمل أبدًا على مواقع حقيقية، وقد تجيب الخوادم الحقيقية بطرق لا تغطيها حالات الاختبار.
  • ثبّت المكتبة من GitHub حاليًا، فالحزمة غير موجودة على PyPI بعد.

المصادر والتراخيص

المصدرالترخيصيُعاد توزيعه هنا
RFC 9309: Robots Exclusion Protocolمطبَّق في المكتبة، ولا يُضمَّن نصهلا
ai.robots.txt project, robots.json at commit d8e8b77MIT، وأسماء الزواحف مرفقة مع إشعار الترخيصنعم
TDMRep, W3C Community Group final reportمطبَّق في المكتبة، ولا يُضمَّن نصهلا
Content Signals Policy (Content-Signal in robots.txt)مطبَّق في المكتبة، ولا يُضمَّن نصهلا
IETF AI Preferences working group drafts (Content-Usage)مطبَّق وفق المسودات، ولا يُضمَّن نصهالا

تطبّق polite-fetch مواصفات منشورة ولا تعيد نشر نصوصها. وتأتي أسماء زواحف الذكاء الاصطناعي من ملف robots.json في مشروع ai.robots.txt، مثبّتة على إيداع واحد، ومرفقة بترخيص MIT مع إشعاره. ولا تصف صفحة الزاحف على bayanatlabs.com من سلوك الزاحف إلا ما تفرضه المكتبة، ويربط جدول التتبّع في المستودع كل عبارة عن سلوك الزاحف بالاختبارات التي تتحقق منها، ويفشل البناء إذا بقيت عبارة منها دون اختبار. تفاصيل المصادر (بالإنجليزية)

طريقة الاستشهاد

صيغة الاستشهاد:

Bayanat Labs (2026). polite-fetch: the library behind the BayanatLabs-OpenData crawler, version 0.1.0, crawler policy 1.0.0. Bayanat Labs. https://github.com/Bayanat-Labs/polite-fetch

لا يوجد معرّف DOI. استشهد بالرابط الوارد في صيغة الاستشهاد أعلاه وبتاريخ اطلاعك عليه.

@misc{bayanatlabs2026politefetch,
  author       = {{Bayanat Labs}},
  title        = {polite-fetch: the library behind the BayanatLabs-OpenData crawler, version 0.1.0, crawler policy 1.0.0},
  year         = {2026},
  month        = oct,
  howpublished = {\url{https://github.com/Bayanat-Labs/polite-fetch}}
}

كيف نتعامل مع الاستشهاد (بالإنجليزية)

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

التاريخالإصدارالتغيير
v0.1.0مكتبة بايثون وأداة سطر الأوامر وسياسة الزاحف واختبارات المطابقة على GitHub، وصفحة الزاحف وملف crawler.json على bayanatlabs.com.

التصحيح وطلبات الإزالة

إذا وجدت في هذا الإصدار ما لا ينبغي وجوده أو ما يحتاج إلى تصحيح، فراسلنا على hello@bayanatlabs.com. نعالج طلبات الإزالة خلال 30 يومًا، وطلبات المنصات خلال 24 ساعة. كيف تعمل طلبات الإزالة

المنتج المرتبط: Bayanat Knowledge

هل تحتاج إلى بيانات جاهزة للإنتاج وواضحة الحقوق؟

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

Bayanat Knowledge: رخّص كتبًا، ونصوصًا بالفصحى مصنفة حسب الموضوع، وبيانات أسئلة وأجوبة مهيكلة. لكل مجموعة مهمة تدريب واضحة، ولها أعدادها وتفاصيل ترخيصها الخاصة.

إصدارات مفتوحة أخرى
LabelBench من Bayanat Labs ← مختبر موثوقية الوكلاء بالعربية من Bayanat Labs ← مجموعة بدء تقييم الاسترجاع العربي من Bayanat Labs ← قالب إرشادات توسيم البيانات العربية من Bayanat Labs ← سياسة البرنامج المفتوح ودليل التشغيل من Bayanat Labs ← قالب مجموعات البيانات وحزمة أدوات الإصدار من Bayanat Labs ← أداة توحيد النص العربي من Bayanat Labs (arabic-normalize) ← قوالب موافقة المساهمين من Bayanat Labs ← ArabicWER من Bayanat Labs: حساب معدل خطأ الكلمات والحروف للعربية ← حزمة اختبار مطابقة يونيكود للنص العربي من Bayanat Labs ← مراجع الصيغ الخليجية واختبارات التحويل بين المنطوق والمكتوب من Bayanat Labs ← أطلس الوثائق العربية من Bayanat Labs ← حزمة البيانات الشخصية العربية لـ Presidio من Bayanat Labs ← مؤشر ضريبة الترميز العربية من Bayanat Labs ← أزواج القنوات للتعرّف على الكلام العربي من Bayanat Labs ← مدقّق توافق تراخيص البيانات من Bayanat Labs ← متتبّع نماذج الذكاء الاصطناعي العربية من Bayanat Labs ← استخراج حقول النماذج العربية من Bayanat Labs ← الاستدلال على البيانات العامة بالعربية من Bayanat Labs ← أطلس أماكن العالم العربي من Bayanat Labs ← فهرس حقوق مجموعات البيانات العربية من Bayanat Labs ← ويكيبيديا العربية الشهرية من Bayanat Labs ← حاسبة ضريبة التوكنات العربية من Bayanat Labs ← شريحة ويكي بيانات للعالم العربي من Bayanat Labs ← مدقّق مواضع الكيانات المسمّاة العربية من Bayanat Labs ← عدّاد ساعات الكلام العربي المفتوح من Bayanat Labs ← المعجم الجغرافي العربي من Bayanat Labs ← إحصاء حقوق الويب العربي من Bayanat Labs ← أعمال ويكي مصدر العربية في الملك العام من Bayanat Labs ←

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