ما هو Screen Fingerprinting؟ دقة الشاشة وبصمة المتصفح
المتصفح والجهاز

ما هو Screen Fingerprinting؟ دقة الشاشة وبصمة المتصفح

يقرأ screen fingerprinting دقة شاشتك وكثافة البكسل وعمق الألوان لبناء معرّف دائم — يبقى حتى في وضع التصفح الخاص.

7 دقائق قراءة·

يقرأ Screen Fingerprinting (بصمة الشاشة) دقة شاشتك وكثافة البكسل وعمق الألوان عبر واجهات برمجية مدمجة في المتصفح لبناء معرّف ثابت يظل قائماً عبر الجلسات والنوافذ الخاصة واتصالات VPN. يمكنك مشاهدة ما تكشفه شاشتك الآن على whatsmy.fyi.

ملخص سريع

يجمع Screen Fingerprinting القيم من window.screen وwindow.devicePixelRatio — دقة شاشتك ومساحة العرض المتاحة وعمق الألوان ونسبة كثافة البكسل — لإنشاء معرّف ثابت للجهاز. من تلقاء نفسه يضيف نحو 3–5 بتات من الإنتروبيا؛ مجتمعاً مع إشارات بصمة أخرى يصبح متتبعاً موثوقاً عبر الجلسات لا يمكن لمسح الكوكيز أو التصفح الخاص هزيمته.

ما هو Screen Fingerprinting؟

Screen Fingerprinting أسلوب تتبع سلبي يحصد خصائص العرض التي تكشفها Screen API وخاصية window.devicePixelRatio. صُمّمت هذه الواجهات لمساعدة مطوري الويب على بناء تخطيطات متجاوبة وتحجيم الصور بشكل صحيح للشاشات عالية الكثافة — لكنها في الوقت ذاته تمنح سكريبتات بصمة الإصبع وصفاً تفصيلياً لشاشتك الفعلية وتهيئة أجهزتك.

على عكس Canvas أو WebGL Fingerprinting، لا يحتاج بصمة الشاشة إلى أي رسم — القيم متاحة بشكل متزامن دون أي حسابات فور تحميل الصفحة. سطر واحد من JavaScript كافٍ لقراءة ملف الشاشة الكامل لجهازك. هذا يجعله أحد أقل ناقلات البصمة تكلفةً وأعلاها توافراً.

يُعدّ بصمة الشاشة إشارةً رئيسية في عائلة تقنيات بصمة المتصفح الأوسع. يُدمج عادةً مع بيانات GPU من WebGL Fingerprinting، وبيانات مكدس الصوت من Audio Fingerprinting، وفروق الرسم التي يلتقطها Canvas Fingerprinting لتشكيل معرّف مركّب.

كيف يعمل Screen Fingerprinting؟

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

الخصائص الأساسية

screen.width / screen.height — إجمالي أبعاد بكسل الشاشة الفعلية، مُبلَّغ عنها بوحدات بكسل CSS. شاشة 1920×1080 عند تكبير 100% تُبلّغ عن 1920 × 1080. نفس الشاشة عند تكبير Windows 125% تُبلّغ عن 1536 × 864، مما يكشف فوراً عن إعداد تكبير نظام التشغيل.

screen.availWidth / screen.availHeight — الجزء من الشاشة المتاح لنوافذ المتصفح، بعد طرح أشرطة المهام والأرصفة وواجهة النظام. على جهاز Windows 1920×1080 بشريط مهام بارتفاع 40 بكسل أسفل الشاشة، تكون availHeight هي 1040. هذا يكشف نظام التشغيل الذي تستخدمه وما إذا كان شريط مهامك مرئياً أو مثبتاً أو مضبوطاً على الإخفاء التلقائي.

window.devicePixelRatio — نسبة بكسلات الشاشة الفيزيائية إلى بكسلات CSS. شاشة 1080p العادية لها نسبة 1. MacBook Pro Retina لها 2. iMac 27 بوصة 5K لها 2 أيضاً. هاتف Android رائد حديث بتكبير 3× لها 3. هذه القيمة الواحدة تميّز بشكل موثوق أجهزة HiDPI عن الشاشات العادية، وأجهزة Mac Retina عن أجهزة Windows، والهواتف الاقتصادية عن الهواتف الرائدة.

screen.colorDepth / screen.pixelDepth — عدد البتات المستخدمة لتمثيل لون كل بكسل. في الممارسة العملية هذا 24 على كل جهاز حديث تقريباً، لكن الأنظمة القديمة وبعض تهيئات سطح المكتب البعيد تُعيد 16 أو 8، مما يجعلها إشارة مفيدة للكشف عن البيئات الافتراضية أو المدمجة.

screen.orientation.type — يُبلّغ عما إذا كانت الشاشة في وضع عمودي أو أفقي. على سطح المكتب هذا دائماً landscape-primary؛ على الهاتف يتغير، والهاتف الذي يُمسك في وضع عمودي دائماً يكشف نمطاً سلوكياً.

window.innerWidth / window.innerHeight — أبعاد إطار العرض الحالي للمتصفح. تتغير مع تغيير حجم النافذة، لكن عند تحميل الصفحة تعكس حجم النافذة المعتاد للمستخدم — نقطة بيانات سلوكية أخرى.

الكود

// Screen fingerprinting — all values are synchronous, no rendering needed
function getScreenFingerprint() {
  const dpr = window.devicePixelRatio;

  return {
    // Physical display dimensions (CSS pixels)
    screenWidth:      window.screen.width,
    screenHeight:     window.screen.height,

    // Available area after system UI (taskbar, dock)
    availWidth:       window.screen.availWidth,
    availHeight:      window.screen.availHeight,

    // HiDPI / Retina ratio — key differentiator
    devicePixelRatio: dpr,

    // Physical pixels (what the GPU actually renders)
    physicalWidth:    Math.round(window.screen.width * dpr),
    physicalHeight:   Math.round(window.screen.height * dpr),

    // Color depth — usually 24; lower values flag VMs or legacy systems
    colorDepth:       window.screen.colorDepth,
    pixelDepth:       window.screen.pixelDepth,

    // Viewport — reflects browser window state at load time
    innerWidth:       window.innerWidth,
    innerHeight:      window.innerHeight,

    // Orientation
    orientation:      screen.orientation?.type ?? 'unknown',
  };
}

// Example output — MacBook Pro 14-inch (2023), Chrome, fullscreen
// {
//   screenWidth: 1512, screenHeight: 982,
//   availWidth: 1512,  availHeight: 932,   ← 50px macOS menubar
//   devicePixelRatio: 2,
//   physicalWidth: 3024, physicalHeight: 1964,
//   colorDepth: 24, pixelDepth: 24,
//   innerWidth: 1512, innerHeight: 879,
//   orientation: 'landscape-primary'
// }

يكفي مزيج screenWidth وscreenHeight وdevicePixelRatio وavailHeight وحده للتمييز بين عشرات من فئات الأجهزة الشائعة. عند تضمين إزاحة شريط المهام، تصبح كثير من التهيئات فريدة دون الحاجة إلى إشارات إضافية.

ما مدى تفرّد بصمة الشاشة؟

توفر بيانات الشاشة وحدها إنتروبيا معتدلة — كافية لتضييق فئة جهازك بشكل ملحوظ، لكن نادراً ما تكفي لتعريفك بمعزل عن غيرها. قوّتها تأتي من طريقة اندماجها مع إشارات أخرى.

الإشارة / النتيجةالقيمةالمصدر
الإنتروبيا من دقة الشاشة وحدها~3.3 بتEFF Cover Your Tracks
الإنتروبيا مع إضافة devicePixelRatio~4.8 بتBrowserLeaks
أكثر دقة شاشة شيوعاً عالمياً (1920×1080)~24% من المستخدمينStatcounter GlobalStats, 2025
المستخدمون بملف شاشة فريد (دقة + DPR + تكبير OS)~18%أبحاث Fingerprint.com
قيم devicePixelRatio المرصودة عملياً1، 1.25، 1.5، 1.75، 2، 2.5، 3، 3.5مجموعة بيانات BrowserLeaks
دقة البصمة المركّبة (شاشة + canvas + WebGL)>95%Fingerprint.com Pro

يبدو أن 24% من المستخدمين يشتركون في دقة 1920×1080 وكأنها غطاء واقٍ — لكن داخل هذه المجموعة، تعمل الاختلافات في devicePixelRatio وارتفاع شريط المهام وإعدادات تكبير نظام التشغيل وحجم إطار العرض على تقسيم السكان بسرعة. شاشة 1920×1080 عند تكبير Windows 125% تُنتج screenWidth: 1536، مما يميّزها فوراً عن المستخدمين عند تكبير 100%.

من يستخدم Screen Fingerprinting في الواقع؟

الإعلانات والتتبع عبر المواقع

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

كشف الاحتيال وأمن الحسابات

تستخدم منصات الأمان بصمة الشاشة للكشف عن الأجهزة الجديدة التي تسجّل الدخول إلى حسابات موجودة. التغيير المفاجئ في devicePixelRatio أو أبعاد الشاشة — مثل التبديل من Mac Retina (dpr: 2) إلى سطح مكتب 1080p عادي (dpr: 1) — إشارة خطر قوية لمحاولات الاستيلاء على الحساب أو حشو بيانات الاعتماد.

استنتاج نوع الجهاز

devicePixelRatio من أكثر الإشارات موثوقية للتمييز بين فئات الأجهزة دون قراءة سلسلة User-Agent. نسبة 2 أو أعلى تدل بشكل موثوق على شاشة HiDPI — شائعة جداً على الهواتف الحديثة وأجهزة Apple. مقترنةً بأبعاد الشاشة، تتيح لسكريبتات البصمة استنتاج فئة الجهاز بدقة (هاتف رائد، هاتف متوسط، هاتف اقتصادي، لابتوب، سطح مكتب).

كشف تجاوز حدود الوصول المدفوع

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

بصمة الشاشة وقوانين الخصوصية

يُدرج توجيه W3C لبصمة الإصبع صراحةً screen.width وscreen.height وdevicePixelRatio كناقلات بصمة يجب على كُتّاب المواصفات مراعاتها. بموجب GDPR، تُشكّل بيانات البصمة التي يمكن ربطها بشكل معقول بفرد معالجةً للبيانات الشخصية، مما يستلزم إما موافقة مستنيرة أو مسوّغ مصلحة مشروعة. CNIL الفرنسية و ICO البريطاني كلاهما صرّح بأن بصمة الإصبع لأغراض الإعلان تتطلب موافقة صريحة مع بقاء التطبيق متفاوتاً.

كيف تحمي نفسك من بصمة الشاشة

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

  • متصفح Tor (أقوى حماية): يُطبّع Tor Browser جميع قيم الشاشة — يُبلّغ عن دقة قياسية بغض النظر عن شاشتك الفعلية، ويثبّت devicePixelRatio عند 1. كل مستخدمي Tor يبدون متطابقين لسكريبتات بصمة الشاشة. المقايضة هي سرعة شبكة Tor المنخفضة.
  • Firefox مع privacy.resistFingerprinting: عند تفعيله في about:config، يُقرّب Firefox أبعاد الشاشة إلى قيمة قياسية ويحدّ devicePixelRatio عند 1. أحجام إطار العرض تُعبّأ إلى أقرب دلو بكسل 200×100. هذا يجعل ملف شاشتك مطابقاً لمستخدمي RFP الآخرين.
  • متصفح Brave (موصى به للاستخدام اليومي): يطبّق Brave تقنية Farbling على بيانات الشاشة — يُدخل قيمة ضجيج صغيرة فريدة للجلسة ولكل أصل في screen.width وscreen.height وdevicePixelRatio. تتغير بصمتك مع كل جلسة وتختلف عبر المواقع، مما يجعل الارتباط عبر المواقع غير موثوق دون كسر وظائف الموقع.
  • تجنّب تكبير نظام التشغيل غير القياسي: مستخدمو Windows الذين يضبطون تكبير العرض على 125% أو 150% ينتجون قيم screenWidth غير معتادة (مثل 1536 من شاشة 1920 بكسل) أكثر ندرةً وبالتالي أكثر تعريفاً. استخدام المستويات القياسية يقلل الإنتروبيا قليلاً.
  • إضافات المتصفح (تأثير محدود): يمكن تهيئة إضافات مثل Canvas Blocker لانتحال قيم الشاشة، لكنها قابلة للكشف وقد تعطل التصميم المتجاوب على بعض المواقع.
  • VPN — مفيد لكن غير كافٍ: يخفي VPN عنوان IP الخاص بك لكن له صفر أثر على خصائص شاشتك. devicePixelRatio والدقة لديك متطابقة خلف VPN. تحقق مما يكشفه عنوان IP الحقيقي لك على whatsmy.fyi.

الأسئلة الشائعة

هل يعمل بصمة الشاشة في وضع التصفح الخاص؟

نعم. يمنع وضع التصفح الخاص حفظ التاريخ والكوكيز وبيانات النماذج على القرص — لكنه لا يغيّر شاشتك الفعلية. screen.width وscreen.height وdevicePixelRatio متطابقة في وضع التصفح الخاص وفي النافذة العادية. فقط المتصفحات التي تعمل بتطبيع نشط — Tor Browser أو Firefox مع privacy.resistFingerprinting — تُنتج قيماً مختلفة.

هل يؤثر تغيير مستوى تكبير المتصفح على بصمة الشاشة؟

يؤثر تكبير المتصفح على window.devicePixelRatio في بعض المتصفحات — Chrome مثلاً يضرب DPR الأساسي للأجهزة في عامل التكبير، لذا تكبير 125% على شاشة 1080p عادية ينتج devicePixelRatio بقيمة 1.25 بدلاً من 1. هذا يمكن أن يزيد الإنتروبيا (يجعلك أكثر تميزاً) إذا كان مستوى التكبير غير قياسي. screen.width وscreen.height لا يتأثران بتكبير المتصفح.

كيف يختلف devicePixelRatio بين شاشات Retina والعادية؟

شاشة 1080p العادية لها كثافة بكسل تُعيّن بكسلاً فيزيائياً واحداً لبكسل CSS واحد، لذا devicePixelRatio هو 1. شاشات Apple Retina تحزم ضعف عدد البكسلات الفيزيائية تقريباً لكل بوصة، لذا تُبلّغ عن 2. على MacBook Pro Retina، دقة CSS بقياس 1512×982 تقابل 3024×1964 بكسل فيزيائي. هواتف Android الرائدة الحديثة عادةً تُبلّغ عن 2.75 أو 3. هذه القيمة الواحدة من أكثر الإشارات موثوقية للتمييز بين لابتوبات Apple silicon ولابتوبات Windows العادية.

هل يمكن للموقع الكشف عن شاشتي الفعلية حتى لو غيّرت حجم نافذة المتصفح؟

نعم. screen.width وscreen.height دائماً يعكسان أبعاد الشاشة الفيزيائية الكاملة — لا يتغيران عند تغيير حجم نافذة المتصفح. window.innerWidth وwindow.innerHeight يتغيران مع حجم النافذة، لكن قيم screen.* مثبّتة بالأجهزة. فقط إذا غيّرت إلى شاشة مختلفة (مثل فصل شاشة خارجية) تتغير أبعاد الشاشة.

هل بصمة الشاشة أكثر دقة على الهاتف أم سطح المكتب؟

أجهزة الهاتف المحمول تُنتج إنتروبيا مركّبة أعلى لأن تشتت دقة الشاشة و DPR في نظام Android أكبر بكثير. Samsung وGoogle وOnePlus وXiaomi كلٌّ منها تشحن أجهزة بدقات وكثافات بكسل مختلفة. سطح المكتب أكثر تجانساً — 1920×1080 عند تكبير 100% هو المهيمن — لكن مستخدمي Windows الذين ضبطوا نسب تكبير غير قياسية (125%، 150%، 175%) ينتجون قيماً غير معتادة تزيد التفرد.

ما العلاقة بين بصمة الشاشة وبصمة Canvas؟

تقرأ بصمة الشاشة خصائص عرض الأجهزة بشكل متزامن — لا حاجة للرسم. تُقدّم بصمة Canvas صورة مخفية وتقرأ مخرجات البكسل للكشف عن فروق رسم GPU والخطوط. إنها تكميلية: بصمة الشاشة تُعرّف أجهزة عرضك؛ بصمة Canvas تُعرّف مكدس رسم الرسومات لديك. الإشارتان لا تتعارضان تقريباً أبداً ومعاً تضيّقان تهيئة جهازك بشكل ملحوظ. راجع دليل بصمة Canvas للتعمق في جانب الرسم.

هل تغيير إعداد الشاشات المتعددة يغيّر بصمة الشاشة؟

تُبلّغ window.screen API عن خصائص الشاشة التي تتواجد عليها نافذة المتصفح حالياً، وليس جميع الشاشات المتصلة. إذا نقلت نافذة متصفحك من شاشة ثانوية 1920×1080 إلى شاشة رئيسية 2560×1440، ستتغير أبعاد الشاشة التي تُبلّغ عنها JavaScript. هذا يعني أن سكريبتات البصمة يمكنها الكشف عن مستخدمي الشاشات المتعددة الذين ينقلون النوافذ بانتظام بين الشاشات — إشارة سلوكية إضافية إلى بيانات الأجهزة.

مقالات ذات صلة

تحقق من عنوان IP وموقعك ودرجة الخصوصية — فوراً.

صفر سجلات. صفر تتبع. صفر APIs خارجية.

ابدأ الفحص الآن →

مقالات ذات صلة

ما هو Screen Fingerprinting؟ دقة الشاشة وبصمة المتصفح | whatsmy.fyi