محلِّل User-Agent
تطويريحلِّل سلسلة User-Agent إلى متصفح ومحرك ونظام تشغيل ونوع جهاز. استدلالي، بالكامل في العميل.
- المتصفح
- المحرك
- نظام التشغيل
- نوع الجهاز
- روبوت / زاحف
في هذه الصفحة
ما هو مُحلِّل User-Agent؟#
سلسلة User-Agent (UA) هي سطر النصّ الذي يُلحقه كلّ متصفّح وعميل HTTP بطلباته ليصف نفسه. وهي أيضًا فوضى عديمة البنية شهيرة: تُكدّس البائعون رموز توافق تاريخية فوق بعضها، فتحوي سلسلة Chrome حديثة واحدة كلماتِ Mozilla وAppleWebKit وKHTML وGecko وSafari — لا واحدة منها تعني أنّ المتصفّح فعلًا أيٌّ من تلك الأشياء. قراءة UA خامّ بالعين بطيئة وعرضة للخطأ، ولهذا تُمرِّرها كلّ لوحة تحليلات وأداة سجلّ وصول وكشف بوت عبر مُحلِّل أولًا.
تأخذ هذه الصفحة أيّ سلسلة UA وتُقسّمها إلى الوقائع الخمسة التي تريدها فعلًا: المتصفّح (الاسم والإصدار)، والمحرّك (النواة العارضة)، ونظام التشغيل (النظام وإصداره)، ونوع الجهاز (مكتبي أومحمول أولوحيّ)، وisBot (هل تبدو السلسلة زاحفًا). تعمل بالكامل في متصفّحك — الصق سلسلةً من سطر سجلّ واقرأ التفصيل، بلا رحلة ذهاب وإياب للخادم.
سبب صعوبة كشف المتصفّح فوق ما يبدو هو الترتيب. يجب فحص المتصفّحات المتخصّصة قبل Chrome، لأنّ سلاسلها كلّها تحوي الرمز الحرفيّ Chrome للتوافق. فـ Microsoft Edge وOpera وSamsung Internet وVivaldi وCocCoc كلّها تُبلَّغ خطأً كـ Chrome بفحص if (ua.includes("chrome")) ساذج. والأمر نفسه يصحّ للمحرّكات: تظهر AppleWebKit في متصفّحات Blink (Chrome وEdge وOpera) وفي متصفّحات WebKit الصافية (Safari) على حدّ سواء، فيُستنتَج المحرّك من عائلة المتصفّح لا من مطابقة مباشرة.
كيفية الاستخدام#
- اضغط استخدام الحالي في الأعلى لتحميل
navigator.userAgentالخاصّ بهذا المتصفّح في مربّع الإدخال — أسرع طريقة لرؤية شكل حركة زيارتك. - أوالصق أيّ سلسلة UA في لوحة الإدخال — من سجلّ وصول nginx، أو
req.headers["user-agent"]في خادمك الخلفيّ، أومن طلب curl، أيًّا كان. - اقرأ الصفوف الخمسة في لوحة الإخراج:
- المتصفّح — اسم العائلة والإصدار الرئيسي (مثل
Chrome 120). - المحرّك — محرّك العرض (Blink وWebKit وGecko وTrident).
- نظام التشغيل — النظام والإصدار حيث يمكن استرجاعه (مثل
Windows 10/11وiOS 17وAndroid 14). - الجهاز —
desktopأوmobileأوtablet، يُستنتَج من رموز مثلiPadوAndroidبلاMobileوiPhone. - Bot —
yes/no، يُعلَم بمطابقة معرّفات الزواحف (botوcrawlوspiderوslurpوpingdomوheadlessوphantomjsوcurlوwgetوpython-requestsوaxios…).
- المتصفّح — اسم العائلة والإصدار الرئيسي (مثل
- اضغط مسح لإفراغ اللوحتَين.
- يُلخّص سطر الحالة النتيجة أويُبلّغ أنّ الإدخال كان فارغًا.
الميزات الرئيسية#
- كشف المتصفّح بالأخصّية أولًا. تُطابَق Edge وOpera وSamsung Internet وVivaldi وCocCoc وFirefox كلّها قبل Chrome وSafari، فلا تُبتلَع بصمت برمز توافق
Chrome. - استنتاج المحرّك من العائلة. يُقرَّر Blink مقابل WebKit بالمتصفّح المكتشف، لا بمطابقة هشّة مباشرة على
AppleWebKit— ولهذا لا تُبلَّغ سلسلة Safari كـ Chrome. - تصنيف نوع الجهاز. يُميَّز اللوحيات عن الهواتف برمز
iPadوتمييزAndroid ... Mobile، والاستدلالات ذاتها التي تعتمد عليها أدوات التحليلات. - راية الزواحف. يُعلِم صف
Botالسلاسل التي تريد استبعادها عادةً من مقاييس المستخدمين — زواحف البحث ومراقبو وقت التشغيل والمتصفّحات بلا رأس ومكتبات HTTP. - 100% من جهة العميل. لا تُرسَل سلسلة UA إلى أيّ مكان. ويعني ذلك أيضًا أنّك تستطيع لصق رموز من سجلّات الإنتاج دون تسرّبها إلى واجهة برمجة تطبيقات تحليل خارجية.
مثال عملي#
الصق سلسلة Chrome على Windows النموذجية هذه من سجلّ وصول:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36
فتمتلئ الصفوف الخمسة:
Browser Chrome 120
Engine Blink
OS Windows 10/11
Device desktop
Bot no
قارنها الآن بسلسلة Edge — لاحظ اللاحقة Edg/120:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0
مُحلِّلٌ ساذج يفحص Chrome أولًا يُبلّغ Chrome 120 هنا — خطأ. تفحص هذه الصفحة Edg/ قبل Chrome/، فتُنتج السلسلة نفسها بشكل صحيح Browser: Microsoft Edge 120، مع بقاء المحرّك Blink (Edge مبنيّ على Chromium).
حالة ثالثة تُظهر مسار البوت. سكربت فحص سلامة يُرسل curl/7.81.0 يُعلَم Bot: yes رغم أنّه لا يحوي غلاف Mozilla، لأنّ curl أحد رموز المكتبات التي يفحصها مطابِق البوت. وهو الصفّ الذي يتيح فصل حركة المستخدمين الحقيقيّين عن الضجيج الآلي حين تتأمّل سجلًّا.
الأسئلة الشائعة#
لماذا يُبلِّغ متصفّحي Edge عن «Microsoft Edge» لا «Chrome»، رغم أنّ الـ UA تحوي كلمة Chrome؟#
لأنّ UA الخاصّ بـ Edge يُضمِّن عمدًّا Chrome/120.0.0.0 حتى تخدم المواقع المبنية لخدمة Chrome حافَّةً Edge أيضًا. يفحص هذا المُحلِّل رمز Edg/ أولًا ثمّ Chrome/، فتفوز العائلة المتخصّصة. أيّ مُحلِّل لا يرتّب فحوصه هكذا سيُبلِّغ كلّ مشتقٍّ من Chromium خطأً كـ Chrome.
هل أثق بإصدار نظام التشغيل من سلسلة UA؟#
إلى حدٍّ. يدمج Windows بين 10 و11 في Windows NT 10.0، فيُبلَّغان هنا 10/11. أمّا إصدارات iOS وmacOS فتُسترجَع من رمز OS X_x_x لكنّها تُجمَّد تاريخيًّا وقت الإصدار. عامل الإصدار كإشارة قويّة لا ضمان، ولا تُعلِّق عليه قرارات أمنية.
هل راية Bot موثوقة بما يكفي لحجب الحركة؟#
لا — كشف البوت المبنيّ على UA وسيلةُ تسهيلٍ لتحليل السجلّات وفلترة لوحات البيانات، لا حدًّا أمنيًّا. يُزوّر العملاء الخبيثون أيّ UA يشاؤون، بما في ذلك سلاسل تبدو بشرية تمامًا. استخدم هذا الصف لإمساك الزواحف والمكتبات الواضحة؛ واستخدم تحديد المعدّل والمصادقة والفحوص السلوكية لما يجب أن يكون موثوقًا فعلًا.
يُظهر المُحلِّل «Unknown» لكلّ شيء. ما الذي ألصقته؟#
إمّا سلسلة فارغة/فراغات، أوا UA من عميلٍ لا يتعرّف عليه هذا المُحلِّل (بعض تطبيقات المكتب وSDKs تُرسل معرّفات خاصة). سيقول سطر الحالة إنّ الإدخال كان فارغًا في الحالة الأولى؛ أمّا في الثانية فيسقط المتصفّح ونظام التشغيل إلى Unknown بينما يفترض نوع الجهاز desktop. وتُحفَظ السلسلة خامّ في لوحة الإدخال لتفتيشها.