Jump to content

سياسة:سياسة وكيل المستخدم لمؤسسة ويكيميديا

From Wikimedia Foundation Governance Wiki
This page is a translated version of the page Policy:Wikimedia Foundation User-Agent Policy and the translation is 100% complete.

اعتبارًا من 15 فبراير 2010، تتطلب مواقع ويكيميديا ​​إضافة ترويسة "HTTP وكيل المستخدم" لجميع الطلبات. كان هذا قرارًا تنفيذيًا اتخذه الفريق التقني، وتم الإعلان عنه ومناقشته في القائمة البريدية التقنية.[1][2] يكمن السبب في أن العملاء الذين لا يرسلون سلسلة الوكيل المستخدم هم في الغالب برامج نصية سيئة السلوك تُسبب ضغطًا كبيرًا على الخوادم دون أي فائدة للمشاريع. كما قد يتم حظر سلاسل الوكيل المستخدم التي تبدأ بقيم افتراضية غير وصفية، مثل python-requests/x، من مواقع ويكيميديا ​​(أو أجزاء من موقع ويب، مثل api.php).

قد تواجه الطلبات (مثل تلك الواردة من المتصفحات أو البرامج النصية) التي لا ترسل رأس وكيل المستخدم وصفي، رسالة خطأ كهذه:

يجب أن تستخدم البرامج النصية سلسلة معلوماتية لوكيل المستخدم تتضمن معلومات الاتصال، وإلا فقد يتم منعها دون سابق إنذار.

قد تواجه الطلبات الواردة من وكلاء مستخدمين غير مسموح بهم رسالة خطأ أقل فائدة مثل هذه:

تواجه خوادمنا حاليًا مشكلة فنية. يرجى المحاولة مرة أخرى بعد بضع دقائق.

من المرجح أن يؤثر هذا التغيير على البرامج النصية (البوتات) التي تصل إلى مواقع ويكيميديا ​​مثل ويكيبيديا تلقائيًا، عبر api.php أو غير ذلك، وبرامج سطر الأوامر.[3] إذا كنت تدير بوتًا، فيُرجى إرسال ترويسة الوكيل المستخدم تُعرّف البرنامج بطريقة لا تُسبب التباسًا مع برامج آلية أخرى، مع توفير وسيلة للتواصل معك، بصفتك المُشغّل، وفقًا لإرشادات استخدام واجهة برمجة التطبيقات (API). يجب أن تكون معلومات الاتصال عبارة عن عنوان بريد إلكتروني، أو موقع ويب، أو اسم مستخدم ويكي باستخدام التنسيق (<project>; User:<name>)، على سبيل المثال (wikipedia:de; User:DuesenBot). على سبيل المثال:

User-Agent: CoolBot/0.0 (https://example.org/coolbot/; coolbot@example.org) generic-library/0.0

الصيغة العامة هي 1 دولار. يمكن حذف الأجزاء غير القابلة للتطبيق.

إذا كنت تستخدم وكيلًا آليًا، فيُرجى مراعاة اتباع العرف السائد على الإنترنت والمتمثل في تضمين كلمة "bot" في سلسلة الوكيل المستخدم، بأي تركيبة من الأحرف الصغيرة أو الكبيرة. تتعرف أنظمة ويكيميديا ​​على هذه الكلمة، وتستخدمها لتصنيف حركة المرور وتوفير إحصائيات أكثر دقة.

لا تقم بنسخ وكيل مستخدم المتصفح لبوت الخاص بك، حيث سيتم اعتبار السلوك الشبيه بالبوت مع وكيل مستخدم المتصفح سلوكًا ضارًا.[4] تجنّب استخدام أسماء عامة مثل "curl" و"lwp" و"Python-urllib" وما إلى ذلك. ففي الأطر الكبيرة مثل "pywikibot"، يوجد عدد كبير من المستخدمين، لذا فإن استخدام "pywikibot" فقط قد يكون غامضًا بعض الشيء. من الأفضل تضمين تفاصيل حول المهمة/البرنامج النصي/إلخ، حتى لو كانت هذه التفاصيل غير واضحة لأي شخص آخر غير المستخدم.[5]

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

تُجبر التطبيقات المستندة إلى المتصفح والمكتوبة بلغة جافا سكريبت عادةً على إرسال نفس ترويسة الوكيل المستخدم التي يرسلها المتصفح الذي يستضيفها. لا يُعدّ هذا انتهاكًا للسياسة، ومع ذلك، يُنصح هذه التطبيقات بتضمين ترويسة Api-User-Agent لتوفير وكيل مناسب.

اعتبارًا من عام 2015، لا ترفض مواقع ويكيميديا ​​جميع عمليات عرض الصفحات وطلبات واجهة برمجة التطبيقات من العملاء الذين لا يُدخلون رأس الوكيل المستخدم. وبالتالي، لا يُفرض هذا الشرط تلقائيًا، بل قد يُفرض في حالات محددة حسب الحاجة.[6]

أمثلة برمجية

في مواقع ويكيميديا، إذا لم تُضِف رأسية User-Agent، أو إذا ضَفْتَ رأسية فارغة أو عامة، فسيفشل طلبك مع ظهور خطأ HTTP 403. وقد يكون لدى مواقع ميدياويكي الأخرى سياسات مماثلة.

جافاسكريبت

إذا كنت تستخدم واجهة برمجة التطبيقات من خلال جافاسكريبت في المتصفح، فلن تتمكن من تعديل رأس الطلب User-Agent، حيث سيستخدم المتصفح رأسه الخاص. ولتجاوز هذه المشكلة، استخدم رأس الطلب Api-User-Agent وحدد الميزة أو البرنامج النصي أو إضافية التي تُجري الاستدعاء، مع تضمين رابط إلى شفرة المصدر إن أمكن.

// Using XMLHttpRequest
xhr.setRequestHeader( 'Api-User-Agent', 'Example/1.0' );
// Using jQuery
$.ajax( {
    url: 'https://example/...',
    data: ...,
    dataType: 'json',
    type: 'GET',
    headers: { 'Api-User-Agent': 'Example/1.0' },
} ).then( function ( data )  {
    // ..
} );
// Using mw.Api
var api = new mw.Api( {
    userAgent: 'Example/1.0'
} );
api.get( ... ).then( function ( data ) {
    // ...
});
// Using Fetch
fetch( 'https://example/...', {
    method: 'GET',
    headers: new Headers( {
        'Api-User-Agent': 'Example/1.0'
    } )
} ).then( function ( response ) {
    return response.json();
} ).then( function ( data ) {
    // ...
});

PHP

في لغة PHP، يمكنك تحديد وكيل المستخدم الخاص بك باستخدام كود مثل هذا:

ini_set( 'user_agent', 'CoolBot/0.0 (https://example.org/coolbot/; coolbot@example.org)' );

cURL

أو إذا كنت تستخدم cURL:

curl_setopt( $curl, CURLOPT_USERAGENT, 'CoolBot/0.0 (https://example.org/coolbot/; coolbot@example.org)' );

بايثون

في لغة بايثون، يمكنك استخدام مكتبة Requests لتعيين رأس الطلب:

import requests

url = 'https://example/...'
headers = {'User-Agent': 'CoolBot/0.0 (https://example.org/coolbot/; coolbot@example.org)'}

response = requests.get(url, headers=headers)

أو، إذا كنت تريد استخدام SPARQLWrapper مثل في https://people.wikimedia.org/~bearloga/notes/wdqs-python.html:

from SPARQLWrapper import SPARQLWrapper, JSON

url = 'https://example/...'
user_agent = 'CoolBot/0.0 (https://example.org/coolbot/; coolbot@example.org)'

sparql = SPARQLWrapper(url, agent = user_agent )
results = sparql.query()

ملاحظات

  1. أرشيف Wikitech-l فبراير/شباط 2010 حسب الموضوع
  2. وكيل المستخدم: - Wikitech-l - lists.wikimedia.org
  3. API:FAQ - ميدياويكي
  4. [Wikitech-l] وكيل المستخدم:
  5. توضيح ما هو المطلوب "لتحديد هوية البوت" في وكيل مستخدم البوت؟
  6. gmane.science.linguistics.wikipedia.technical/83870 (الرابط النهائي)

انظر أيضا