navigator.platform وبصمة المتصفح: كيف يكشف نظام التشغيل عنك
المتصفح والجهاز

navigator.platform وبصمة المتصفح: كيف يكشف نظام التشغيل عنك

تعرّف على كيفية استخدام navigator.platform للكشف عن نظام التشغيل الخاص بك بصمت — ولماذا يُعطي بيانات خاطئة على Apple Silicon.

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

navigator.platform خاصية JavaScript تُخبر أي موقع بنظام التشغيل الخاص بك — بصمت، فورياً، ودون أي استئذان. إنها قطعة صغيرة لكن مستمرة في لغز بصمة المتصفح يكشف عنها كل جهاز يعمل بمتصفح حديث. يمكنك مشاهدة قيمتك الخاصة الآن على whatsmy.fyi.

ملخص سريع

navigator.platform خاصية JavaScript للقراءة فقط تُعيد سلسلة تُعرّف نظام التشغيل — قيم مثل "Win32" أو "MacIntel" أو "Linux x86_64". لا تتطلب أي إذن، ولا تُشغّل أي طلب شبكي، وقابلة للقراءة من كل سكريبت في كل صفحة تزورها. من تلقاء نفسها تحمل إنتروبيا منخفضة (~2–4 بتات)، لكن أنظمة البصمة تجمعها مع أكثر من 30 إشارة أخرى لتعريف جهازك بشكل فريد. وهي أيضاً خاطئة فعلياً على مئات الملايين من أجهزة Mac Apple Silicon، التي لا تزال تُبلّغ عن "MacIntel". البديل الحديث هو navigator.userAgentData.platform الذي يفصل البيانات منخفضة الإنتروبيا عن عالية الإنتروبيا في نموذج قائم على الاشتراك.

ما هو navigator.platform Fingerprinting؟

navigator.platform جزء من Navigator API، مجموعة خصائص المتصفح التي يمكن لـ JavaScript قراءتها منذ منتصف التسعينيات. على عكس رسم Canvas أو مخرجات WebGL — التي تتطلب عمليات GPU معقدة لاستخراج بصمة — قراءة navigator.platform تافهة للغاية:

console.log(navigator.platform);
// "Win32"          — Windows (both 32-bit and 64-bit)
// "MacIntel"       — macOS Intel AND Apple Silicon
// "Linux x86_64"   — Linux on 64-bit x86
// "iPhone"         — iOS on iPhone
// "iPad"           — iPadOS (older iPads; see below)

القيمة متاحة لكل سكريبت في كل صفحة، بدون مطالبة بالأذونات، ودون نافذة حوار اشتراك، ودون رحلة شبكية. عندما يجمعها سكريبت تتبع أو كشف احتيال، لا تتلقى أي إشعار على الإطلاق.

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

أداة Electronic Frontier Foundation Cover Your Tracks تختبر صراحةً "منصة النظام" كإحدى إشاراتها المقيسة. بحث EFF Panopticlick الأصلي لعام 2010 عبر 470,161 متصفح وجد أن 84% من المتصفحات كانت قابلة للتعريف الفريد الكامل بالبصمة وحدها.

كيف تعمل navigator.platform؟

تُضبط الخاصية من قِبَل المتصفح عند بدء التشغيل بناءً على نظام التشغيل الأساسي. مواصفة WHATWG HTML تترك الصيغة الدقيقة كلياً لتنفيذ المتصفح — لا توجد قائمة قيم موحّدة. تقاربت المتصفحات على مجموعة سلاسل من خلال الاتفاق التاريخي لا المواصفة.

قراءة القيمة

يقرأ سكريبت البصمة navigator.platform في استدعاء متزامن واحد بلا آثار جانبية:

// Reading navigator.platform — zero cost, zero visibility to user
function getPlatformSignal() {
  return {
    platform: navigator.platform,
    // Often combined immediately with other navigator properties
    hardwareConcurrency: navigator.hardwareConcurrency,
    deviceMemory: navigator.deviceMemory,
    language: navigator.language,
    languages: navigator.languages,
    maxTouchPoints: navigator.maxTouchPoints,
  };
}

// Example output on a MacBook Pro (Apple Silicon):
// {
//   platform: "MacIntel",       ← factually wrong — it's ARM, not Intel
//   hardwareConcurrency: 10,    ← 10 CPU cores
//   deviceMemory: 8,            ← 8 GB RAM
//   language: "en-US",
//   languages: ["en-US", "en"],
//   maxTouchPoints: 0,          ← no touch screen
// }

التحقق من الاتساق — القوة الحقيقية للبصمة

تعامل أنظمة كشف الاحتيال navigator.platform كمرساة حقيقة. إذا أرسل متصفح User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) لكن navigator.platform يُعيد "Linux x86_64"، فإن التناقض إشارة شبه مؤكدة للتزوير أو الأتمتة أو متصفح headless مضبوط بشكل خاطئ. الارتباطات المتوقعة:

  • "Win32" → يجب أن يحتوي User-Agent على Windows
  • "MacIntel" → يجب أن يحتوي User-Agent على Mac OS X
  • "Linux x86_64" → يجب أن يحتوي User-Agent على Linux
  • "iPhone" → يجب أن يحتوي User-Agent على iPhone ويجب أن تُشغَّل أحداث اللمس

خطأ أتمتة شائع هو ضبط سلسلة User-Agent مخصصة — لانتحال صفة Mac أو iPhone — دون تجاوز navigator.platform أيضاً. يُكتشف عدم التطابق فوراً.

قيم سلسلة المنصة في الواقع

السلاسل التي قد يُعيدها متصفحك، وما تعنيه فعلاً:

سلسلة المنصةالمعنىحصة OS لسطح المكتب
"Win32"Windows — 32 بت و64 بت (Chrome وEdge وFirefox الحديث كلها تُعيد هذا على Windows 64 بت)~72%
"MacIntel"macOS على Intel — وأيضاً جميع أجهزة Mac Apple Silicon M1/M2/M3/M4 التي لا تزال تُعيد هذه السلسلة للتوافق مع الإصدارات السابقة~16%
"Linux x86_64"Linux على x86 64 بت (معظم مستخدمي Linux سطح المكتب)~4.7%
"Linux armv7l"Linux على ARM — Raspberry Pi وChromebooks وبعض Android في وضع سطح المكتب<1%
"iPhone"iOS على iPhoneهاتف: ~28% من OS الهاتف
"iPad"iPadOS — لكن iPadOS 13+ مع تفعيل "طلب موقع سطح المكتب" يُعيد "MacIntel" الآن بدلاً منههاتف: متراجع
"Win64"Firefox القديم على Windows 64 بت (Firefox 63+ غيّر هذا إلى "Win32" للاتساق)قديم

مفارقتا Apple Silicon و iPad

غرابتان موثّقتان تجعلان navigator.platform مضلّلاً بنشاط بدلاً من مجرد غير دقيق.

Apple Silicon تُعيد "MacIntel"

كل Mac بشريحة M1 أو M2 أو M3 أو M4 — معالجات ARM المُدخَلة أواخر 2020 — لا تزال تُبلّغ عن navigator.platform === "MacIntel". اختارت Apple وبائعو المتصفحات التوافق مع الإصدارات السابقة على حساب الدقة: تغيير السلسلة إلى شيء مثل "MacARM" سيكسر الكود القديم الذي يتحقق من "MacIntel" لتطبيق سلوك خاص بـ macOS. ونتيجةً لذلك، تُعرّف مئات الملايين من أجهزة Apple Silicon نفسها بشكل خاطئ لأكثر من أربع سنوات. الواجهة البرمجية الوحيدة التي تُعرّف Apple Silicon بشكل صحيح هي navigator.userAgentData.getHighEntropyValues(["architecture"])، التي تُعيد "arm" بدلاً من "x86".

iPadOS 13+ يُبلّغ كـ Mac

عندما أدخلت Apple iPadOS 13، مكّنت "طلب موقع سطح المكتب" بشكل افتراضي، مما دفع Safari لإبلاغ User-Agent لسطح المكتب و"MacIntel" كمنصة — حتى على iPad. مكتبات البصمة مثل FingerprintJS تتضمن منطق تصحيح: إذا أعادت navigator.platform "MacIntel" لكن الجهاز يُشغّل أحداث لمس كجهاز محمول، تتجاوز المكتبة التصنيف إلى iPad أو iPhone. بدون هذا التصحيح، يبدو كل iPad حديث MacBook في بيانات البصمة.

من يستخدم navigator.platform في الواقع؟

شبكات الإعلانات والتتبع

تستخدم منصات الإعلانات السلوكية بصمة المتصفح — مع navigator.platform كمكوّن — للحفاظ على معرّفات أجهزة مستمرة بعد حجب ملفات تعريف الارتباط من الأطراف الثالثة. المنصة تساهم في التقسيم على مستوى نظام التشغيل وفي استقرار المعرّف عبر الجلسات.

منصات كشف الاحتيال

خدمات مثل Fingerprint (المعروفة سابقاً بـ FingerprintJS)وStripe Radar وSift Science تستخدم navigator.platform بشكل أساسي كفحص اتساق. إذا أظهر جهاز يدّعي أنه جهاز Windows قيمة منصة Linux، أو تغيّرت قيمة المنصة بين جلسات مصادق عليها لنفس حساب المستخدم، فإنها تُشغّل إشارة خطر.

كشف المتصفحات headless

كثيراً ما تُخفق الكاشطات الآلية وأطر البوتات في ضبط قيمة navigator.platform واقعية تتطابق مع User-Agent المزوّر. تتحقق منصات مكافحة البوتات مثل Cloudflare Bot Management وAkamai Bot Manager من هذا التوافق كإشارة واحدة في نماذج تسجيل البوتات. سلسلة منصة غائبة أو فارغة أو غير متطابقة مؤشر موثوق للأتمتة.

navigator.platform مقابل navigator.userAgentData — البديل الحديث

أُدخلت User-Agent Client Hints API (navigator.userAgentData) في Chrome 89 (2021) كجزء من مبادرة User-Agent Reduction من Google — خطة لتجميد سلسلة User-Agent القديمة للحدّ من سطح البصمة السلبية. الواجهة البرمجية الجديدة تفصل البيانات إلى منخفضة الإنتروبيا (متاحة دائماً) وعالية الإنتروبيا (يجب طلبها صراحةً):

// Low-entropy: always available, returns a clean enum value
navigator.userAgentData.platform;
// "macOS", "Windows", "Linux", "Android", "iOS"
// — no more "MacIntel", "Win32", "Linux x86_64"

// High-entropy: must explicitly request; website must justify need
navigator.userAgentData
  .getHighEntropyValues(["platform", "platformVersion", "architecture", "bitness"])
  .then(data => {
    console.log(data.platform);         // "macOS"
    console.log(data.platformVersion);  // "14.5.0" (internal version, not "Sonoma")
    console.log(data.architecture);     // "arm" ← finally correctly identifies Apple Silicon
    console.log(data.bitness);          // "64"
  });

// Fallback for browsers without userAgentData support (Firefox):
const platform = navigator?.userAgentData?.platform || navigator?.platform;

التحوّل المعماري الرئيسي: القيم عالية الإنتروبيا مثل architecture وplatformVersion تتطلب استدعاءً غير متزامن صريحاً، مما يمنح المتصفحات فرصة لتطبيق ضجيج أو مطالبة المستخدم.

كيف تحمي نفسك

منع navigator.platform من التسرّب أصعب مما يبدو، لأن التزوير الساذج كثيراً ما يجعلك أكثر قابلية للتعريف لا أقل. إليك الخيارات مرتّبة من الأكثر فاعلية إلى الأكثر عملية:

  • متصفح Tor (أقوى حماية): يُوحّد Tor navigator.platform عبر جميع المستخدمين في نفس فئة نظام التشغيل — جميع مستخدمي Windows يُبلّغون بنفس القيمة، وجميع مستخدمي macOS يُبلّغون بنفس القيمة. الهدف هو مجموعة إخفاء هوية كبيرة حيث يبدو كل مستخدمي Tor متطابقين. المقايضة هي تصفح أبطأ عبر شبكة Tor.
  • Firefox مع privacy.resistFingerprinting: تفعيل هذا العَلَم في about:config يجعل Firefox يزوّر navigator.platform جانباً خصائص navigator متعددة أخرى في آنٍ واحد. لكن فقط ~0.48% من مستخدمي Firefox يُفعّلونه — الإعداد نفسه يصبح بصمة تميّزك عن 99.52% من مستخدمي Firefox الذين لا يملكونه. قد تبرز أكثر لا أقل.
  • متصفح Brave (موصى به للاستخدام اليومي): نهج Farbling في Brave يُعشوش إشارات البصمة عالية الإنتروبيا لكل جلسة ولكل موقع. لـ navigator.platform تحديداً، يُوافق Brave القيمة المُبلَّغ عنها مع المنصة الحقيقية (لتجنب التناقضات الواضحة) بينما يُعطّل الإشارات عالية الإنتروبيا مثل canvas وWebGL التي تقوم بمعظم عمل البصمة.
  • لا تزوّر navigator.platform بمعزل: تغيير navigator.platform فقط دون تحديث سلسلة User-Agent وسلاسل GPU من WebGL ومخرجات canvas يُنشئ تناقض إشارات ستكشفه أنظمة كشف الاحتيال فوراً. التزوير غير المكتمل أسوأ من عدم التزوير — يميّزك كأداة أتمتة أو متهرّب متعمّد.
  • افهم قيود VPN: يغيّر VPN عنوان IP المرئي لديك لكن ليس له أي أثر على navigator.platform أو أي خاصية متصفح أخرى. تحقق من انكشافك الكامل على whatsmy.fyi.

هل navigator.platform مُهمَلة؟

الجواب غامض عمداً. لا تزال مواصفة WHATWG HTML تتضمن navigator.platform — وهي غير مُهمَلة رسمياً. يصفها MDN بـ "غير موصى بها" و"غير موثوقة" لكن يتوقف عند وصفها بالمُهمَلة.

الاستنتاج العملي: ستبقى navigator.platform في المتصفحات إلى أجل غير مسمى للتوافق مع الإصدارات السابقة. لن تُزال أبداً لأن كثيراً من السكريبتات القديمة تعتمد عليها. لكن يجب على مطوري الويب نقل أي كشف مشروع لنظام التشغيل إلى navigator.userAgentData.platform.

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

ما الذي تُعيده navigator.platform على أجهزة Mac Apple Silicon؟

تُعيد "MacIntel" — نفس قيمة أجهزة Mac Intel. حافظت Apple وبائعو المتصفحات على التوافق مع الإصدارات السابقة على حساب الدقة. كل Mac M1 وM2 وM3 وM4 يُبلّغ عن معمارية معالج خاطئة منذ 2020. الطريقة الوحيدة للكشف عن Apple Silicon من المتصفح هي من خلال navigator.userAgentData.getHighEntropyValues(["architecture"]) الأحدث، الذي يُعيد "arm" بشكل صحيح.

هل يمكن للمواقع الكشف عن نظام التشغيل الخاص بي بدون navigator.platform؟

نعم، عبر قنوات تكميلية متعددة: رأس طلب User-Agent (يُرسل مع كل طلب HTTP، مرئي للخوادم قبل تشغيل أي JavaScript)، وسلاسل GPU من WebGL (التي عادةً ما تُسمّي برامج تشغيل GPU الخاصة بنظام التشغيل)، وفروق رسم canvas (macOS Core Text مقابل Windows ClearType مقابل Linux FreeType تُنتج مخرجات بكسل مختلفة قابلة للقياس). حجب navigator.platform وحده لن يمنع كشف نظام التشغيل.

هل مسح الكوكيز يُعيد ضبط navigator.platform؟

لا. تُشتقّ navigator.platform من نظام التشغيل الخاص بك عند بدء تشغيل المتصفح — لا تُخزَّن في الكوكيز أو التخزين المحلي أو أي بيانات متصفح يمكن مسحها. إنها نفس القيمة في وضع التصفح الخاص وفي ملف تعريف متصفح جديد وبعد مسح ذاكرة التخزين المؤقت الكاملة.

ما الفرق بين navigator.platform و navigator.userAgent؟

navigator.platform معرّف نظام تشغيل قصير ومُهيكَل. سلسلة navigator.userAgent أطول بكثير وسلسلة مركّبة تتضمن اسم المتصفح والإصدار واسم نظام التشغيل وإصداره ومحرك العرض ورموز التوافق التاريخية — كلها في سلسلة واحدة غير مُهيكَلة. يحتوي User-Agent على إنتروبيا أكثر (10–15 بتاً) لكنه أكثر تقلباً بين إصدارات المتصفح. navigator.platform أكثر ثباتاً عبر الإصدارات، مما يمنحها دوراً تكميلياً في البصمة.

لماذا يُظهر iPad أحياناً "MacIntel" كمنصته؟

iPadOS 13 (الصادر 2019) أدخل ميزة "طلب موقع سطح المكتب" التي كانت مُفعَّلة بشكل افتراضي. هذا جعل Safari على iPad يُبلّغ عن User-Agent لسطح المكتب و"MacIntel" كمنصته، بدلاً من "iPad". القصد كان جعل المواقع تُقدّم محتوى محسَّناً لسطح المكتب للشاشة الأكبر لـ iPad. التأثير الجانبي هو أن أنظمة البصمة يجب أن تكشف عن أجهزة iPad عبر إشارات غير مباشرة — دعم أحداث اللمس ونسبة أبعاد الشاشة وواجهات WebKit API — بدلاً من الثقة بسلسلة المنصة مباشرةً.

كم بتاً من الإنتروبيا تُضيف navigator.platform؟

نحو 2–4 بتات في العزل، لأن عدد القيم المتمايزة في حركة المرور الحقيقية صغير (Win32 يغطي ~72% من متصفحات سطح المكتب؛ MacIntel تغطي ~16%). الإنتروبيا أعلى للقيم غير المعتادة — مستخدم يُبلّغ عن "Linux armv7l" في أقلية صغيرة جداً. مقترنةً مع هاش canvas ومحرّد WebGL ودقة الشاشة والمنطقة الزمنية وتزامن الأجهزة، تتجاوز البصمة المركّبة الكلية عادةً 20 بتاً — كافية لتضييق هويتك إلى واحد في مليون متصفح.

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

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

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

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

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

navigator.platform وبصمة المتصفح: كيف يكشف نظام التشغيل عنك | whatsmy.fyi