الصق أي سلسلة User-Agent واقرأ منها المتصفح ومحرك العرض ونظام التشغيل وفئة الجهاز ومعمارية وحدة المعالجة المركزية، مع تفصيل JSON قابل للنسخ.
حوّل سلسلة User-Agent إلى شيء قابل للقراءة. يتم تحميل سلسلة User-Agent الخاصة بك افتراضيًا. الصق أي سلسلة أخرى لترى كيف تتفكك، وانسخ تفصيل JSON لتقرير خطأ أو حالة اختبار.
المتصفح
–
المحرك
–
نظام التشغيل
–
نوع الجهاز
–
معمارية وحدة المعالجة المركزية
–
لماذا تبدو سلاسل User-Agent هكذا
ثلاثة عقود من التظاهر بأن بعضنا هو البعض الآخر
سلسلة User-Agent الحديثة ليست وصفًا، بل سجل أحافير. لا يزال كل متصفح سطح مكتب يبدأ بـMozilla/5.0، وهي رمز لم يعد يعني شيئًا منذ أن خسر نتسكيب حرب المتصفحات. إنها باقية لأن الخوادم المبكرة كانت تفحص Mozilla قبل تقديم الإطارات، فأضاف كل منافس الرمز ليتجنب خفض خدمته. بمجرد أن يكذب متصفح ليحصل على النسخة الجيدة من الصفحة، يجب على البقية أن تكذب بالمثل وإلا خسرت المستخدمين.
أنتج اللولب نفسه بقية السلسلة. يرسل Chrome AppleWebKit/537.36 (KHTML, like Gecko) رغم أنه توقف عن استخدام WebKit في 2013 وأن KHTML ميت منذ زمن أطول بكثير. يضيف Edge Edg/ بدلاً من Edge/ تحديدًا لأن عددًا كبيرًا جدًا من المواقع كان يفحص بالبحث الجزئي عن الرمز القديم ويقدم بديلًا معطوبًا. النسخة الحقيقية من Safari مختبئة في رمز Version/ بينما Safari/537.36 الختامية مجمدة. لهذا يجب أن يكون التحليل مرتبًا من الأكثر تحديدًا إلى الأقل: كل فرع من فروع Chromium يدعي أيضًا أنه Chrome، وكل متصفح WebKit يدعي أيضًا أنه Safari، لذا يجب أن يفوز أول تطابق واثق.
ما يمكنك الوثوق به وما لا يمكنك
السلسلة هي ترويسة يقدمها العميل، ما يعني أنها تلميح وليست دليلًا أبدًا. يمكن لأي عميل HTTP أن يرسل أي شيء، ويقوم المستخدمون عادة بتزويرها عبر الإضافات أو أدوات المطورين. تعامل معها كلون تشخيصي في السجل، وليس كمدخل تفويض أو حد أمني.
حتى عندما لا يكذب أحد، تصبح القيم خشنّة أكثر فأكثر. يجمّد Chrome وEdge الآن مقاطع النسخة الثانوية إلى 0.0.0 ويبلغان عن سلسلة منصة مختزلة، لذا تغطي Windows NT 10.0 كلًا من Windows 10 وWindows 11، وظل macOS مثبتًا عند 10_15_7 لسنوات بغض النظر عن الإصدار الفعلي. يدور Firefox تفاصيل نظام التشغيل بالمثل. إذا بدا رقم إصدار دائريًا بشكل مريب، فغالبًا هو كذلك.
كشف الجهاز هو الجزء الأكثر اهتزازًا. لا يوجد حقل جهاز في السلسلة؛ يُستدل عليه من وجود أو غياب رموز مثل Mobile أو iPad أو Tablet. أجهزة أندرويد اللوحية هي الفخ الكلاسيكي، إذ يُعرَف كثير منها فقط بغياب رمز Mobile، ويمثل iPadOS نفسه عمدًا كجهاز Mac مكتبي في تكوينه الافتراضي.
استخدم كشف الميزات بدلاً من ذلك، غالبًا
لأي شيء يغير السلوك، اختبر الإمكانية بدلاً من الملصق. if ('share' in navigator) صحيح ودائم؛ if (isSafari) ينكسر في اللحظة التي يشحن فيها محرك آخر نفس الواجهة أو يشحن Safari إصلاحًا. للتخطيط، تصف استعلامات الوسائط CSS إطار العرض الفعلي وطريقة الإدخال أفضل بكثير من أي تخمين جهاز.
حيث ما تزال User-Agent تستحق مكانها هو التحليلات وفرز الأعطال وإعادة إنتاج الأخطاء. معرفة أن أثر المكدس يظهر فقط على Gecko، أو أن كسر التخطيط محصور في Samsung Internet، يحوّل تقريرًا غير قابل للإعادة إلى حالة اختبار محددة. البديل الحديث هو واجهة User-Agent Client Hints، التي تكشف نفس الحقائق كقيم مهيكلة وتتطلب طلبًا صريحًا للتفاصيل عالية الإنتروبيا مثل نسخة المنصة الكاملة.
الأسئلة الشائعة
لماذا يقول Chrome إنه Mozilla وSafari في نفس الوقت؟
توافق تاريخي. كانت الخوادم تفحص Mozilla قبل إرسال ترميز حديث، ثم لاحقًا تفحص Safari قبل إرسال CSS خاص بـ WebKit. أضاف كل متصفح تلك الرموز لتجنب خدمته بصفحة متدهورة، وإزالتها الآن سيكسر المواقع التي ما تزال تفحصها.
هل يمكنني الوثوق بـ User-Agent في قرارات الأمان؟
لا. إنها ترويسة طلب يتحكم فيها العميل بالكامل ويمكن ضبطها على أي قيمة. استخدمها للتشخيص والإحصائيات فقط. أي شيء يقيّد الوصول أو يفرض سياسة يجب أن يعتمد على المصادقة، لا على سلسلة أبلغت عن نفسها بنفسها.
لماذا تُبلَّغ نسخة macOS الخاصة بي كـ 10.15.7؟
يجمد Safari وChrome عمدًا نسخة macOS المبلّغة عند 10_15_7 لتقليل سطح البصمة الرقمية. يعرف المتصفح النسخة الحقيقية لكنه لن يضعها في الترويسة. يمكن لـ Client Hints كشفها، لكن فقط عندما تطلب الموقع ذلك صراحة.
كيف تفرق الأداة بين الجهاز اللوحي والهاتف؟
تبحث عن رمز iPad، أو سلسلة أندرويد بدون رمز Mobile، أو علامة Tablet صريحة. هذا يحاكي ما تفعله معظم المكتبات، لكنه بطبيعته تخميني. بعض أجهزة أندرويد اللوحية لا يمكن تمييزها عن الهواتف الكبيرة من السلسلة وحدها.
هل يرسل هذا سلسلة User-Agent الخاصة بي إلى أي مكان؟
لا. يعمل التحليل بالكامل في متصفحك باستخدام التعبيرات النمطية، ولا يتم رفع أي شيء. تُقرأ القيمة الافتراضية محليًا من navigator.userAgent ولا تغادر الصفحة أبدًا.
ماذا يجب أن أستخدم بدلاً من فحص User-Agent؟
كشف الميزات للقدرات، واستعلامات وسائط CSS للتخطيط، وواجهة User-Agent Client Hints عندما تحتاج فعلًا إلى حقائق المنصة. تقدم Client Hints قيمًا مهيكلة وتبقي التفاصيل عالية الإنتروبيا خلف اشتراك صريح.