← العودة إلى المدونة

الانتقال إلى User-Agent Client Hints: قياس الأجهزة دون سلسلة UA الكاملة

يعمل كروم على تقليص سلسلة User-Agent إلى قشرة مجمّدة. إليك كيف تقرأ التحليلات التي تضع الخصوصية أولًا إشارات الجهاز عبر Client Hints دون بصمة رقمية.

الموت البطيء لسلسلة User-Agent

على مدى عقود، كان ترويسة الطلب User-Agent حصان عمل التحليلات للإجابة عن أسئلة أساسية: أي متصفح؟ أي نظام تشغيل؟ جوّال أم حاسوب مكتبي؟ وكان في الوقت نفسه عبئًا على صعيد البصمة الرقمية. فسلسلة UA كاملة مثل Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/xxx.0.0.0 Safari/537.36 تسرّب أرقام إصدارات دقيقة وتفاصيل عن المنصّة، وهي تفاصيل تساعد — حين تُدمج مع إشارات أخرى — على تحديد زوّار بعينهم.

يقلّم مسعى غوغل لتقليص الـ User-Agent هذه السلسلة منذ سنوات. يرسل كروم اليوم سلسلة UA مقلّصة يُجمَّد فيها إصدار المنصّة وتُصفَّر مقاطع الإصدارات الثانوية. والغاية، وفق توثيق كروم، هي إزالة العشوائية المتاحة بشكل سلبي مع الإبقاء على بديل منظَّم يُطلب صراحةً: User-Agent Client Hints (UA-CH).

بالنسبة لمن يبني تحليلات في عام 2026، النتيجة العملية واضحة. تحليل سلسلة UA القديمة للحصول على أي شيء يتجاوز عائلة المتصفح التقريبية يزداد عدم موثوقية — ويزداد كونه المقاربة الخاطئة.

كيف تعمل Client Hints فعليًا

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

  • Sec-CH-UA — قائمة العلامة التجارية والإصدار المهم
  • Sec-CH-UA-Mobile — قيمة منطقية ?0 / ?1
  • Sec-CH-UA-Platform — مثل "macOS"

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

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

القراءة التي تضع الخصوصية أولًا لهذا التحوّل

يبقى Monoid عن قصد في الجانب منخفض العشوائية من هذا الحد. نحن لا نرسل Accept-CH أبدًا لسحب المعمارية أو الطراز أو إصدار المنصّة الكامل، ولا ندمج أبدًا التلميحات التي نراها في توقيع ثابت للجهاز. فذلك بصمة رقمية — أي إعادة بناء معرِّف انطلاقًا من خصائص الجهاز — وهو تحديدًا ما صُمّم تقليص الـ UA لمنعه، وما تعامله المادة 5(3) من توجيه ePrivacy وسياسات المتصفحات المناهضة للبصمة الرقمية على أنه نفاذ إلى معلومات المعدّات الطرفية.

التلميحات الافتراضية منخفضة العشوائية تكفي للأسئلة التي ينبغي للتحليلات أن تطرحها:

  • عائلة المتصفح وإصداره الرئيسي من Sec-CH-UA، لتخطيط التوافق والدعم.
  • جوّال مقابل غير جوّال من Sec-CH-UA-Mobile، لتقسيم التخطيط ومؤشرات Core Web Vitals.
  • المنصّة من Sec-CH-UA-Platform، للتفصيل على مستوى نظام التشغيل.

والأهم أن هذه أبعاد تجميعية لا مفاتيح خاصة بكل زائر. فقيمة منطقية واسم منصّة يتشاركها ملايين الزوّار لا تحملان بذاتهما أي قدرة تعريف ذات شأن.

قراءة التلميحات على الحافة

لأن Client Hints ترويسات طلب عادية، يستطيع عامل على الحافة قراءتها دون أي سكربت من جهة العميل. في Cloudflare، تصل التلميحات منخفضة العشوائية ضمن كائن Request الوارد:

export default {
  async fetch(request) {
    const brands = request.headers.get('Sec-CH-UA') || '';
    const isMobile = request.headers.get('Sec-CH-UA-Mobile') === '?1';
    const platform = request.headers.get('Sec-CH-UA-Platform') || '';
    // اشتقّ أبعادًا خشنة فقط؛ ولا تحفظ أبدًا مفتاحًا مركّبًا.
    return new Response('ok');
  }
};

لاحظ ما هو غائب: لا صدى لـ Accept-CH، ولا طلب لتلميحات عالية العشوائية، ولا تجزئة للقيم مجتمعةً. وقيمة Sec-CH-UA قائمة منظَّمة، فحلّلها بعناية — فهي تتضمّن مدخلات علامات "GREASE" مقصودة صُمّمت لإيقاف التحليل الهشّ القائم على المطابقة التامة، وهي تقنية تستعيرها المواصفة من TLS.

ما الذي ينبغي تغييره في خط المعالجة لديك

إن كانت تحليلاتك ما تزال تطابق سلسلة UA الكاملة بالتعابير النمطية، فثلاثة أشياء ستنكسر مع الوقت. أرقام الإصدارات ستنزلق إلى .0.0.0، وإصدارات المنصّات ستتجمّد، وكشف الأجهزة الجوّالة المعتمد على مطابقة السلاسل الجزئية سيفقد موثوقيته. ومسار الانتقال مباشر:

  1. فضّل التلميحات المنظَّمة منخفضة العشوائية على تحليل سلسلة UA.
  2. عامل سلسلة UA المقلّصة كخيار احتياطي للعملاء القدامى فقط.
  3. قاوم إغراء طلب التلميحات عالية العشوائية "تحسّبًا" — فكل تلميح إضافي يوسّع مساحة بصمتك الرقمية وانكشافك الامتثالي.

الدرس الأوسع منسجم مع كل ما نبنيه. فمطوّرو المتصفحات يزيلون بثبات العشوائية السلبية من منصّة الويب. والاستجابة الصحيحة ليست مطاردتها عبر واجهات برمجية جديدة، بل تصميم قياس لم يحتَجها يومًا.

Sources

Comments

Loading comments…