يستخدم Device Memory Fingerprinting (بصمة ذاكرة الجهاز) خاصية JavaScript المسمّاة navigator.deviceMemory لقراءة فئة RAM التقريبية لجهازك وإدراجها في بصمة متصفحك الفريدة — بدون كوكيز، ودون أذونات، ودون أي تحذير. يمكنك مشاهدة ما يكشفه متصفحك الآن على whatsmy.fyi.
ملخص سريع
تُعيد navigator.deviceMemory RAM جهازك بالغيغابايت، مقرّبةً إلى أقرب قوة اثنين: 0.25، 0.5، 1، 2، 4، أو 8 جيجابايت. هذه القيمة المجمّعة الخشنة تُضيف نحو 2–3 بتات إنتروبيا إلى بصمة متصفحك. من تلقاء نفسها لا يمكنها تعريفك بشكل فريد، لكن مقترنةً بعدد أنوية المعالج ودقة الشاشة وتفاصيل GPU وأكثر من 30 إشارة أخرى، تساعد خدمات البصمة التجارية على تحديد جهازك. رفض كل من Firefox وSafari تطبيق الواجهة البرمجية. فقط المتصفحات القائمة على Chromium تكشف عنها.
ما هو Device Memory Fingerprinting؟
Device Memory Fingerprinting أسلوب تتبع في المتصفح يقرأ خاصية Navigator.deviceMemory — سمة للقراءة فقط أُدخلت في Chrome 63 في ديسمبر 2017 — لتحديد مقدار RAM جهازك. القيمة غير دقيقة عمداً: جهاز بـ 6 جيجابايت RAM يُبلّغ عن 8، وجهاز بـ 3 جيجابايت يُبلّغ عن 4، لأن المواصفة تتطلب التقريب إلى أقرب قوة اثنين. صُمّم هذا التكميم للحدّ من مخاطر البصمة، لكنه يُنشئ إشارة ثابتة ومتسقة تبقى عبر جلسات التصفح والوضع الخاص واتصالات VPN.
الواجهة البرمجية جزء من عائلة أوسع من خصائص كشف الأجهزة في المتصفح، إلى جانب navigator.hardwareConcurrency (عدد أنوية المعالج) وnavigator.platform. كل واحدة منها توفر دقة محدودة، لكنها مجتمعةً تبني ملف أجهزة يُصنّفه توجيه W3C لبصمة الإصبع صراحةً كناقل بصمة.
على عكس التتبع القائم على الكوكيز، لا يمكن حجب بصمة ذاكرة الجهاز بمسح بيانات المتصفح. إنها مكوّن واحد من مجموعة أدوات بصمة المتصفح الأوسع التي تستخدمها شركات التتبع لتعريفك عبر الويب.
كيف تعمل navigator.deviceMemory؟
تُعرّف مواصفة W3C لذاكرة الجهاز خوارزمية دقيقة لاشتقاق القيمة التي يُبلّغ عنها متصفحك. فهمها يكشف سبب اعتقاد مؤلفي المواصفة بأنها آمنة وسبب اختلاف باحثي البصمة.
الخطوة 1 — قراءة الذاكرة الفيزيائية
يقرأ المتصفح RAM الفيزيائي للجهاز بالبايت من نظام التشغيل. تنفيذ Chrome في approximated_device_memory.cc يقرأ القيمة بالميغابايت، ثم يقرّبها إلى أقرب قوة اثنين. جهاز يُبلّغ عن 6,144 ميغابايت (6 جيجابايت) يُحوَّل إلى 8,192 ميغابايت (8 جيجابايت).
الخطوة 2 — التحويل إلى جيجابايت والتثبيت
تُقسَّم قيمة الميغابايت المقرّبة على 1,024 لإنتاج الرقم بالجيغابايت. أي نتيجة أعلى من 8 تُثبَّت عند 8.0. الإصدارات الأحدث من Chrome على المنصات غير Android وسّعت الحدّ الأعلى إلى 32، مما يعني أن محطة عمل بـ 64 جيجابايت RAM تُبلّغ الآن عن 32 بدلاً من 8.
الخطوة 3 — التقييد بسياقات HTTPS
تُلزم المواصفة بأن navigator.deviceMemory متاحة فقط في السياقات الآمنة (HTTPS). على صفحات HTTP، تُعيد الخاصية undefined. هذا يمنع التجسس السلبي عبر الاتصالات غير المشفّرة لكنه لا يفعل شيئاً للحدّ من البصمة على الغالبية العظمى من مواقع HTTPS.
الخطوة 4 — متاحة للسكريبتات بدون إذن
يمكن لأي JavaScript تعمل على الصفحة قراءة navigator.deviceMemory بدون مطالبة المستخدم أو طلب إذن أو إشعار متصفح. سكريبتات التحليلات والإعلانات من الأطراف الثالثة المضمّنة في ملايين المواقع تقرأها بصمت عند كل تحميل صفحة.
// Reading navigator.deviceMemory
// Returns: 0.25 | 0.5 | 1 | 2 | 4 | 8 (or undefined in Firefox/Safari)
const ram = navigator.deviceMemory;
console.log(ram); // e.g. 8 (on a 16 GB MacBook Pro)
// The absence of the value is itself a fingerprinting signal:
// undefined → browser is Firefox, Safari, or Tor Browser (not Chromium)
if (ram === undefined) {
console.log('Non-Chromium browser detected');
}
// Fingerprinting services combine it with CPU core count
const hardwareProfile = {
deviceMemory: navigator.deviceMemory,
cpuCores: navigator.hardwareConcurrency, // e.g. 10
platform: navigator.platform, // e.g. "MacIntel"
};
// Bot detection: flag out-of-spec values
const VALID_VALUES = [0.25, 0.5, 1, 2, 4, 8, 16, 32];
const isOutOfSpec = ram !== undefined && !VALID_VALUES.includes(ram);
// Out-of-spec values (e.g. 3, 6, 12) → high-confidence spoof or headless browserكم تُسهم ذاكرة الجهاز في البصمة؟
تعني قيم الإعادة المكمَّمة أن navigator.deviceMemory توفر إنتروبيا محدودة في العزل — لكن الإشارة التي توفرها ثابتة وقابلة للقراءة آلياً.
| الإشارة | القيمة / النتيجة | المصدر |
|---|---|---|
| إنتروبيا Shannon (في العزل) | ~2–3 بت | مواصفة W3C لذاكرة الجهاز |
| عدد قيم الدلو القياسية | 6 (0.25، 0.5، 1، 2، 4، 8 جيجابايت) | مواصفة W3C لذاكرة الجهاز |
| معدل دعم المتصفح العالمي | 76.37% (جميعها قائمة على Chromium) | Can I Use، 2025 |
| دعم Firefox / Safari | 0% — لم يُطبَّق عمداً | MDN Web Docs |
| القيم خارج المواصفة في عينة حركة مرور 7 أيام | أكثر من 16,000 حدث مُعلَّم كمزوّر | Castle.io، 2025 |
| أحداث احتيال مرتبطة بتناقضات deviceMemory | ~3,500 من جهة عاملة واحدة | Castle.io، 2025 |
| مصادر إشارات مسمّاة في FingerprintJS مفتوح المصدر | ~40 إشارة تشمل deviceMemory | FingerprintJS GitHub |
تأتي قوة بصمة navigator.deviceMemory العملية من مزيجها مع إشارات أجهزة أخرى. عندما يُبلّغ متصفح عن deviceMemory: 8 وhardwareConcurrency: 10 وplatform: "MacIntel" وسلسلة محرّك WebGL محددة، يكون الملف المركّب كافياً لتضييق الميدان بشكل ملحوظ — وثابتاً بما يكفي للاستمرار عبر الجلسات.
من يستخدم Device Memory Fingerprinting في الواقع؟
منصات البصمة التجارية
FingerprintJS، المكتبة مفتوحة المصدر التي تستخدمها ملايين المواقع، تُدرج صراحةً deviceMemory كمصدر إشارة مسمّى (getDeviceMemory) في طبقة جمعها. المنتج التجاري Fingerprint.com يجمع أكثر من 100 إشارة متصفح وجهاز، مع ذاكرة الجهاز كمكوّن في طبقة ملف الأجهزة.
كشف البوتات ومنع الاحتيال
تستخدم منصات الأمان navigator.deviceMemory ليس بشكل أساسي كإشارة تتبع، بل كفحص اتساق. كثيراً ما تُضبط برامج مكافحة الكشف وأطر الأتمتة headless هذه السمة بشكل خاطئ — تضع قيماً مثل 3 أو 6 أو 12 لا تكون أعداداً صحيحة من قوى الاثنين، أو قيماً أعلى من 8 تتجاوز الحدّ الأقصى القياسي. رصدت Castle.io أكثر من 16,000 حدث deviceMemory خارج المواصفة في نافذة حركة مرور واحدة مدتها 7 أيام.
شبكات الإعلانات السلوكية
مع إهمال ملفات تعريف الارتباط من الأطراف الثالثة عبر المتصفحات الرئيسية، دمجت شبكات الإعلانات بشكل متزايد الإشارات على مستوى الجهاز — بما فيها فئة ذاكرة الجهاز — في رسوم بيانية الهوية الاحتمالية. دلو الذاكرة (جهاز منخفض المستوى مقابل متوسط مقابل راقٍ) يحمل أيضاً قيمة ديموغرافية.
الغياب كإشارة
عندما تُعيد navigator.deviceMemory undefined، يعلم سكريبت البصمة فوراً أن المتصفح ليس قائماً على Chromium — يؤكد Firefox أو Safari أو Tor Browser. هذا التمييز الثنائي موجود/غائب نفسه له قيمة تعريفية ويجمعه الكتبيات كإشارة سلبية.
هل Device Memory Fingerprinting قانوني؟
بموجب GDPR، تُنشئ بصمة المتصفح معرّفاً فريداً مستمراً وبالتالي تُشكّل معالجةً للبيانات الشخصية. صرّحت CNIL (سلطة حماية البيانات الفرنسية) صراحةً بأن التتبع القائم على البصمة يستلزم نفس الموافقة المستنيرة كالتتبع القائم على الكوكيز. أكّد ICO البريطاني في يناير 2025 أن بصمة الإصبع خاضعة لمتطلبات PECR نفسها كالكوكيز.
الاستثناء القانوني الوحيد المهم هو كشف الاحتيال ومنع البوتات. المنصات التي تستخدم navigator.deviceMemory فقط للكشف عن الإشارات المزوّرة أو المتناقضة — وليس لتتبع الأفراد عبر المواقع — تستوفي عادةً أساس المصلحة المشروعة لـ GDPR دون الحاجة إلى موافقة صريحة.
كيف تحمي نفسك من بصمة ذاكرة الجهاز
تتراوح خيارات الحماية من شبه كاملة (مع مقايضات توافق الويب) إلى تخفيفات خفيفة تقلل سطح التتبع دون كسر المواقع:
- متصفح Tor (أقوى حماية): قائم على Firefox، لذا تُعيد
navigator.deviceMemoryundefinedبشكل أصلي — الواجهة البرمجية غير مُطبَّقة. مقترناً بـ letterboxing وتطبيع user-agent والتوجيه الشبكي عبر شبكة إخفاء هوية Tor، يوفر Tor Browser أقوى حماية واقعية ضد بصمة على مستوى الجهاز. - Firefox (موصى به للاستخدام اليومي): لا يُطبّق Firefox
navigator.deviceMemoryإطلاقاً. تفعيلprivacy.resistFingerprintingفيabout:configيُطبّع إضافياً حجم الشاشة والمنطقة الزمنية والإعدادات المحلية ومقاييس الخطوط. المزيج يوفر مقاومة قوية لبصمة الأجهزة دون عبء شبكة Tor. - متصفح Brave (حماية قائمة على Chromium): يُطبّق Brave الواجهة البرمجية (قاعدة كود Chromium) لكن يطبّق تعشيشاً لكل جلسة ولكل موقع — أسلوب يُسمى Farbling. قيمة
deviceMemoryالمُبلَّغ عنها تختلف بين المواقع وبين الجلسات، مما يمنع الربط عبر المواقع. - Safari: مثل Firefox، رفض Safari تطبيق الواجهة البرمجية.
navigator.deviceMemoryتُعيدundefinedفي جميع إصدارات Safari حتى 2025. هذا مقصود — كان فريق Apple WebKit حذراً تاريخياً في كشف تفاصيل الأجهزة عبر واجهات API الويب. - Chrome مع الإضافات: إضافات مثل JShelter أو CanvasBlocker يمكنها تجاوز
navigator.deviceMemoryلإعادة قيمة ثابتة أو عشوائية. كن على دراية بأن تجاوزها إلىundefinedفي متصفح Chromium يُنشئ إشارة شذوذ خاصة بها. - افهم قيود VPN: يغيّر VPN عنوان IP الخاص بك ويُوجّه الحركة عبر نفق مشفّر لكنه لا يؤثر على
navigator.deviceMemoryمطلقاً. القيمة تُقرأ من أجهزتك المحلية بواسطة JavaScript تعمل في متصفحك، بدون أي تورط للشبكة. تحقق مما إذا كان IP الخاص بك محجوباً بشكل صحيح على whatsmy.fyi.
الأسئلة الشائعة
هل تعمل navigator.deviceMemory في وضع التصفح الخاص؟
نعم. يمنع التصفح الخاص كتابة متصفحك للتاريخ والكوكيز على القرص، لكنه لا يغيّر RAM الخاص بك أو طريقة تقرير Chrome عنه. navigator.deviceMemory تُعيد نفس القيمة في نافذة التصفح الخاص كما في النافذة العادية. فقط المتصفحات التي لا تُطبّق الواجهة البرمجية (Firefox، Safari) أو تُعدّلها بنشاط (Brave) تتصرف بشكل مختلف.
لماذا رفض Firefox وSafari تطبيق navigator.deviceMemory؟
خلص كلا الفريقين إلى أن تكلفة البصمة تفوق فائدة راحة المطوّر. قضية GitHub في مستودع W3C Device Memory جادلت بأن "مقدار RAM ناقل بصمة" ودعت مصنّعي المتصفحات إلى "التفكير عشر مرات قبل تطبيق هذا الاقتراح". اتخذ Firefox وSafari ذلك الموقف؛ لم يفعل Chrome وEdge.
هل يمكن استخدام navigator.deviceMemory لتعريف المستخدمين الأفراد؟
ليس وحده. مع ستة قيم دلو قياسية فقط وانحراف شديد نحو 4 و8 جيجابايت (يعكس توزيع الأجهزة الحديثة)، توفر navigator.deviceMemory وحدها نحو 2–3 بتات إنتروبيا — أقل بكثير من عتبة التعريف الفردي. لكن مقترنةً بعدد أنوية المعالج وسلسلة محرّك GPU ودقة الشاشة والمنطقة الزمنية والخطوط المثبّتة، يمكن للبصمة المركّبة الوصول إلى دقة تعريف مكافئة للكوكيز عبر مجموعات البيانات الكبيرة.
ما هو تلميح العميل HTTP Device-Memory؟
إضافةً إلى واجهة JavaScript البرمجية، تُعرّف مواصفة Device Memory رأس HTTP طلب Sec-CH-Device-Memory. عندما يُرسل خادم Accept-CH: Device-Memory، سيُرفق Chrome دلو ذاكرة الجهاز بالطلبات اللاحقة كرأس — قبل تشغيل أي JavaScript. هذا يعني أن الخادم يمكنه قراءة فئة RAM الخاصة بك من كل طلب HTTP، دون تنفيذ سطر واحد من JavaScript.
كيف تستخدم أنظمة كشف البوتات navigator.deviceMemory؟
تستخدم منصات كشف البوتات القيمة بشكل أساسي كإشارة اتساق، وليس رمز تتبع. تُصادق مع navigator.deviceMemory مقابل user agent المُبلَّغ عنه وسلسلة المنصة وعدد أنوية المعالج. المتصفحات headless وأطر الأتمتة غالباً تضبط قيماً غير صالحة — قوى اثنين خارج النطاق المتوقع، أو قيم غير قوى اثنين مثل 3 أو 6 جيجابايت — يسهل الإشارة إليها كمزوّرة.
هل بصمة ذاكرة الجهاز هي نفسها بصمة الأجهزة؟
بصمة ذاكرة الجهاز مجموعة فرعية واحدة من بصمة الأجهزة. تشمل فئة بصمة الأجهزة الأوسع أيضاً عدد أنوية المعالج (navigator.hardwareConcurrency) وهوية GPU عبر WebGL Fingerprinting، ودقة الشاشة وكثافة البكسل، وخصائص الأجهزة الصوتية التي تُقرأ عبر Audio Fingerprinting. مجتمعةً تبني هذه الإشارات ملف أجهزة يكاد يكون محصّناً ضد تدابير الخصوصية على مستوى البرنامج كالتصفح الخاص أو حذف الكوكيز.
هل يساعد استخدام DNS للخصوصية أو حاجب إعلانات؟
يمكن لحاجبات DNS ومستوى الإعلانات منع طلبات الشبكة التي تنقل بصمتك إلى خادم تتبع. إذا حُجب تحميل سكريبت بصمة من طرف ثالث، لا يمكنه التنفيذ وقراءة navigator.deviceMemory. لكن السكريبتات من الطرف الأول المضمّنة مباشرةً في كود الموقع لا تُحجب بواسطة حاجبات الإعلانات النموذجية — تُعامَل كجزء من الموقع نفسه.
مقالات ذات صلة
- ما هو CPU Fingerprinting؟ كيف يكشف hardwareConcurrency عنك — الواجهة البرمجية الشقيقة لـ deviceMemory، تكشف عدد أنوية المعالج
- ما هو WebGL Fingerprinting؟ كيف يُعرّفك كرت الشاشة — كيف تكشف واجهة رسم 3D عن مورّد GPU وموديله وإصدار برنامج التشغيل
- ما هو Canvas Fingerprinting؟ كيف تتتبعك المواقع بدون كوكيز — كيف ينتج رسم بكسل GPU معرّفاً فريداً عبر Canvas API
- ما هو Audio Fingerprinting؟ كيف يتتبعك AudioContext — كيف ينتج أجهزة صوت جهازك بصمة صوتية فريدة



