لا توجد API واحدة اسمها «بصمة المتصفح». ما يسمى fingerprint هو نتيجة جمع عشرات الإشارات: User-Agent و Client Hints، الشاشة، اللغة والمنطقة الزمنية، Canvas، WebGL، AudioContext، Fonts، hardware concurrency، touch support، وغيرها. بعض الإشارات شائعة جدًا منفردة، لكن تركيبتها تمنح سياقًا أكبر. لذلك التعامل مع Canvas وحدها أو WebGL وحدها يترك معظم الصورة دون مراجعة.
قسم الإشارات إلى عائلات
من المفيد تقسيمها إلى هوية البرنامج مثل UA، قدرات الجهاز مثل screen و hardwareConcurrency، الرسوميات مثل Canvas/WebGL/WebGPU، البيئة المحلية مثل timezone/locale/fonts، والتفاعل أو permissions. هذا التقسيم يساعدك على اكتشاف التناقض داخل العائلة وبين العائلات.
ابحث عن العلاقات المنطقية
Screen و DPR يجب أن ينسجما، WebGL ينبغي أن يكون منطقيًا مع النظام والبيئة الرسومية، timezone/locale يجب ألا تتغير عشوائيًا، و touch support ينبغي أن يتوافق مع نوع الجهاز المعلن. لا تحتاج تطابقًا مثاليًا مع قالب، لكن التناقضات الواضحة تستحق الاختبار.
خطوات عملية
- اجمع baseline من عدة عائلات.
- حدد القيم المرتبطة ببعضها.
- أعد القياس بعد Restart.
- غيّر عاملًا واحدًا فقط.
- راقب side effects على بقية العائلات.
الثبات عبر الزمن جزء من البصمة
Profile تعرض قيمًا مختلفة جذريًا في كل تشغيل قد تبدو أقل طبيعية من Profile ثابتة. لذلك سجل النتائج على أيام مختلفة وبعد تحديث المتصفح. افصل التغير الطبيعي الناتج عن update عن التغير العشوائي غير المبرر.
قائمة مراجعة
- UA/Client Hints ثابتة للإصدار.
- Screen/DPR منطقية.
- Canvas/WebGL مستقرتان وفق السياسة.
- timezone/locale لا تتغيران بلا سبب.
- Permissions و storage منفصلتان عن Profile أخرى.
البصمة لا تعزل الحساب وحدها
حتى بصمة متسقة لا تمنع ربط حسابين إذا شاركا Cookies أو Site Data أو Proxy أو أخطاء تشغيل بشرية. لهذا يجب أن يأتي fingerprint QA داخل اختبار Profile isolation شامل.
استخدم أدوات الفحص للمقارنة لا للدرجة
ال ـscore الذي تعرضه أداة فحص قد يكون مفيدًا، لكن القيمة الأكبر في export النتائج ومقارنتها قبل/بعد. عندما تعرف أي إشارة تغيرت ولماذا، يمكنك اتخاذ قرار هندسي بدل مطاردة رقم أعلى.
ضع Severity لكل تناقض
ليست كل التناقضات متساوية. تغير timezone دقيقة واحدة بسبب DST ليس مثل UA تعلن نظامًا بينما WebGL و fonts توحيان ببيئة مختلفة كليًا. صنف الفروق إلى منخفضة ومتوسطة وعالية حسب مدى وضوحها واستمرارها وتأثيرها على سيناريوك. هذا يمنع الفريق من قضاء الوقت على فروق شكلية وترك مشكلات عزل أو شبكة أكثر أهمية.
افصل الخصائص الثابتة عن السياقية
بعض الإشارات ينبغي أن تبقى ثابتة غالبًا مثل GPU family داخل Profile، بينما أخرى قد تتغير مع الجلسة أو حجم النافذة. ضع كل إشارة في فئة ثابتة أو سياقية، ثم اختبرها وفق توقعها الصحيح. بهذه الطريقة لا تعتبر تغير viewport مشكلة ولا تتجاهل تغير renderer غير المبرر.
شارك في تقييم ونقاش المقال
رأيك يضيف قيمة للمقال ويساعدنا على تحسين المحتوى والنقاش حوله.
النقاش
جارٍ تحميل التعليقات…