ما هو WebGL Vendor Fingerprinting؟ GPU وبصمة المتصفح
المتصفح والجهاز

ما هو WebGL Vendor Fingerprinting؟ GPU وبصمة المتصفح

يقرأ WebGL vendor fingerprinting اسم شركة GPU والموديل مباشرةً لبناء معرّف دائم — بدون كوكيز أو أذونات.

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

يقرأ WebGL Vendor Fingerprinting (بصمة مورّد WebGL) اسم شركة GPU وموديلها الدقيق من واجهة برمجية للرسومات ثلاثية الأبعاد في المتصفح لبناء معرّف جهاز مستمر — دون تخزين أي شيء على جهازك. يمكنك التحقق مما يكشفه متصفحك الآن على whatsmy.fyi.

ملخص سريع

يستخدم WebGL vendor fingerprinting امتداد المتصفح المسمّى WEBGL_debug_renderer_info لقراءة سلسلتين تكشفهما بيانات برنامج تشغيل GPU: اسم المورّد (مثل NVIDIA Corporation) وسلسلة المحرّك (مثل ANGLE (NVIDIA GeForce RTX 3050 Direct3D11 vs_5_0 ps_5_0)). هذه السلاسل محددة بما يكفي لتعريف موديل GPU وواجهة برنامج التشغيل الخلفية وأحياناً حتى إصدار برنامج التشغيل — معلومات نادراً ما تتغير ولا يمكن مسحها كالكوكيز.

ما هو WebGL Vendor Fingerprinting؟

WebGL vendor fingerprinting أسلوب تتبع في المتصفح يستغل امتداد WEBGL_debug_renderer_info — ميزة تصحيح أخطاء مدمجة في مواصفة WebGL — لاستخراج معلومات تفصيلية عن أجهزة الرسوميات لديك. على عكس بصمة Canvas التي تستنتج فروق GPU من تباينات الرسم على مستوى البكسل، يسأل WebGL vendor fingerprinting برنامج التشغيل مباشرةً: "من صنعك وما اسمك؟"

النتيجة زوج من السلاسل — UNMASKED_VENDOR_WEBGL وUNMASKED_RENDERER_WEBGL — تُعرّف شركة GPU وموديلها وواجهة الرسوميات الخلفية (Direct3D أو Metal أو Vulkan أو OpenGL) وغالباً إصدار برنامج التشغيل. هاتان القيمتان مجتمعتان تحملان 10–15 بتاً من الإنتروبيا، مما يجعلهما من أعلى السمات الفردية في مجموعة أدوات بصمة المتصفح.

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

كيف يعمل WebGL Vendor Fingerprinting؟

تتطلب عملية الاستخراج بضعة أسطر فقط من JavaScript وتكتمل في أقل من ميلي ثانية.

الخطوة 1 — طلب امتداد التصحيح

يستدعي السكريبت gl.getExtension("WEBGL_debug_renderer_info") على سياق WebGL. معظم المتصفحات تكشف هذا الامتداد بشكل افتراضي؛ المتصفحات المعزّزة للخصوصية قد تُعيد null أو سلسلة عامة.

الخطوة 2 — قراءة سلاسل المورّد والمحرّك

مع توفر الامتداد، يستدعي السكريبت gl.getParameter() مرتين — مرة لـ ext.UNMASKED_VENDOR_WEBGL (مثل Google Inc. (NVIDIA)) ومرة لـ ext.UNMASKED_RENDERER_WEBGL (مثل ANGLE (NVIDIA, NVIDIA GeForce RTX 3050 Laptop GPU Direct3D11 vs_5_0 ps_5_0, D3D11)). هذه سلاسل برنامج تشغيل خام — وليست قيماً يُعقّمها المتصفح أو نظام التشغيل قبل إعادتها.

الخطوة 3 — الدمج مع إشارات أخرى

يُجزَّأ سلسلة المحرّك ويُدمج مع امتدادات WebGL المدعومة وحجم النسيج الأقصى ودقة التظليل ومعاملات WebGL الأخرى لإنتاج بصمة GPU مركّبة. هذه القيمة المركّبة أكثر فرادةً بكثير من أي من السلسلتين منفردتين.

// WebGL vendor fingerprinting — how tracking scripts extract GPU identity
function getWebGLVendorFingerprint() {
  const canvas = document.createElement('canvas');
  const gl =
    canvas.getContext('webgl') ||
    canvas.getContext('experimental-webgl');

  if (!gl) return { vendor: 'unsupported', renderer: 'unsupported' };

  // Request the debug extension that exposes unmasked driver strings
  const ext = gl.getExtension('WEBGL_debug_renderer_info');

  if (!ext) {
    // Browser is protecting you (Brave / Firefox resistFingerprinting)
    return { vendor: 'protected', renderer: 'protected' };
  }

  // These strings directly identify your GPU brand and model
  const vendor   = gl.getParameter(ext.UNMASKED_VENDOR_WEBGL);
  const renderer = gl.getParameter(ext.UNMASKED_RENDERER_WEBGL);

  // Example output:
  // vendor:   "Google Inc. (NVIDIA)"
  // renderer: "ANGLE (NVIDIA, NVIDIA GeForce RTX 3050 Laptop GPU
  //            (0x000025A2) Direct3D11 vs_5_0 ps_5_0, D3D11)"

  return { vendor, renderer };
}

كيف تبدو سلاسل المحرّك؟

الصيغة الدقيقة تعتمد على مورّد GPU ونظام التشغيل لديك. على المتصفحات القائمة على Chromium، تبدأ السلاسل بـ ANGLE — طبقة الترجمة في Chrome التي تغلّف واجهات API الرسوميات الأصلية. إليك أمثلة من الواقع:

مورّد GPUمثال سلسلة RENDERER
NVIDIA (Windows)ANGLE (NVIDIA, NVIDIA GeForce RTX 3050 Laptop GPU (0x000025A2) Direct3D11 vs_5_0 ps_5_0, D3D11)
AMD (Windows)ANGLE (AMD, AMD Radeon RX 6600 Direct3D11 vs_5_0 ps_5_0, D3D11)
Intel (Linux / Mesa)ANGLE (Intel, Vulkan 1.3.267 (Intel(R) UHD Graphics (TGL GT2) (0x00009A78)), Intel open-source Mesa driver)
Apple SiliconANGLE (Apple, ANGLE Metal Renderer: Apple M2 Max, Unspecified Version)
Apple Silicon (M4)ANGLE (Apple, ANGLE Metal Renderer: Apple M4 Pro, Unspecified Version)

غالباً ما تُشفّر سلسلة المحرّك معرّف PCI الداخلي للـ GPU (مثل 0x000025A2)، الخاص بـ GPU SKU محدد. هذا يجعل سلسلة المحرّك فريدة ليس فقط لعائلة GPU بل غالباً لمتغيّر خط منتج محدد.

ما مدى تفرّد بصمة مورّد WebGL؟

النتيجةالقيمةالمصدر
مساهمة الإنتروبيا من سلسلة محرّك GPU10–15 بتEFF Cover Your Tracks
حصة أكبر 10,000 موقع التي تستخدم بصمة WebGL>8%Princeton Web Transparency & Accountability Project, 2020
تفرّد البصمة عند دمج 13+ إشارة (تشمل WebGL)83–90%أبحاث EFF Panopticlick
الإشارات التي يتتبعها بائعو مكافحة الاحتيال الحديثون100+Fingerprint.com
ثبات بصمة GPU عبر إعادة تشغيل المتصفحدائمة حتى تغيير الأجهزةدراسة DrawNApart لبصمة GPU (arXiv 2022)

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

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

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

شركات الأمن مثل Fingerprint (المعروفة سابقاً بـ FingerprintJS) تستخدم سلسلة محرّك WebGL كإشارة هوية جهاز أساسية. عندما يصل محاولة تسجيل دخول من جهاز لا تتطابق بصمة GPU الخاصة به مع أي جلسة سابقة لذلك الحساب، تُشغّل تصعيد المخاطر. تُستخدم الإشارة أيضاً للكشف عن بوتات حشو بيانات الاعتماد التي تعمل عادةً في بيئات افتراضية أو headless حيث تُعيد سلسلة المحرّك قيمة محرّك برنامجي عام بدلاً من اسم GPU حقيقي.

Ad-Tech والتتبع عبر المواقع

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

كشف البوتات والأتمتة

البوتات الآلية التي تعمل في بيئات متصفح حاوية أو headless تُعيد قيم محرّك شاذة — غالباً Google SwiftShader (محرّك fallback البرمجي لـ Chrome) أو Mesa OffScreen. الجهاز البشري الحقيقي شبه يعيد هذه القيم في التصفح العادي. أنظمة مكافحة البوتات تضع علامة على هذه السلاسل كمؤشرات بوت عالية الثقة.

تطبيق الجدران المدفوعة

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

هل WebGL Vendor Fingerprinting قانوني؟

بموجب GDPR، أي معرّف مستمر يمكن ربطه بشكل معقول بفرد — بما فيه سلسلة محرّك GPU المستخدمة لإعادة التعريف — يُشكّل معالجةً للبيانات الشخصية. أدرجت السلطة الفرنسية CNIL صراحةً بصمة المتصفح كتقنية تستلزم موافقة مستنيرة أو استثناء مصلحة مشروعة ضيق. بموجب CCPA وCPRA الأمريكية، تُصنَّف بيانات البصمة معلومات شخصية خاضعة لحقوق الانسحاب.

يُعرّف توجيه W3C لبصمة الإصبع امتداد WEBGL_debug_renderer_info كـ "ناقل بصمة عالي الدقة" ويلاحظ أن بائعي المتصفح متوقعٌ منهم تقييد توفره في السياقات الحساسة للخصوصية.

كيف تحمي نفسك من بصمة مورّد WebGL

  • متصفح Brave (موصى به للاستخدام اليومي): يُعشوش نظام Farbling المدمج في Brave سلاسل محرّد WebGL والمورّد على أساس كل جلسة وكل موقع. كل موقع يتلقى وصفاً مختلفاً قليلاً لـ GPU، مما يجعل التتبع عبر المواقع بسلسلة المحرّد غير موثوق. لا يلزم أي ضبط.
  • Firefox مع privacy.resistFingerprinting: ضبط هذا العَلَم على true في about:config يجعل Firefox يُعيد سلسلة محرّد عامة غير محددة الهوية بدلاً من بيانات GPU الحقيقية. يُفعّل Tor Browser هذا بشكل افتراضي. بعض التطبيقات الكثيفة في WebGL (الألعاب، أدوات التصميم ثلاثي الأبعاد) قد لا تعمل بشكل صحيح مع تفعيل هذا.
  • Firefox webgl.enable-debug-renderer-info: false: خيار أكثر استهدافاً في about:config يعطّل امتداد التصحيح فقط — يستمر WebGL في العمل بشكل طبيعي. هذا يحجب استعلام المورّد/المحرّد المباشر مع الحفاظ على التوافق مع محتوى WebGL.
  • إضافة WebGL Fingerprint Defender: متاحة لكل من Chrome وFirefox، تعترض هذه الإضافة استدعاءات امتداد WEBGL_debug_renderer_info وتُعيد سلسلة محرّد عشوائية أو مزوّرة.
  • متصفح Tor (أقوى حماية): يُطبّع Tor Browser جميع مخرجات WebGL بحيث يُعيد كل مستخدم بيانات محرّد متطابقة، مما يلغي التعريف القائم على GPU كلياً. المقايضة هي سرعات أبطأ بسبب شبكة Tor.
  • تعطيل WebGL كلياً: ضبط webgl.disabled: true في Firefox أو استخدام إضافة متصفح لحجب WebGL يمنع جميع بصمات WebGL — لكنه سيكسر المحتوى ثلاثي الأبعاد على الويب بما فيه الألعاب عبر الإنترنت والخرائط وتصوّرات البيانات.

لاحظ أن VPN لا أثر له على بصمة WebGL. سلسلة محرّد GPU تُقرأ من واجهات API المتصفح المحلية، وليس من اتصالك الشبكي. تحقق مما إذا كان VPN الخاص بك يخفي عنوان IP الخاص بك فعلاً (مصدر قلق منفصل) على whatsmy.fyi.

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

ما الفرق بين بصمة مورّد WebGL وبصمة محرّد WebGL؟

هما جانبان من نفس التقنية. سلسلة المورّد (UNMASKED_VENDOR_WEBGL) تُعرّف شركة GPU — عادةً NVIDIA أو AMD أو Intel أو Apple أو طبقة ترجمة مثل Google (ANGLE). سلسلة المحرّد (UNMASKED_RENDERER_WEBGL) تُعرّف موديل GPU المحدد وواجهة الرسوميات الخلفية وغالباً إصدار برنامج التشغيل. كلتاهما تُقرأ في نفس استدعاء API؛ مجتمعتان تشكّلان بصمة مورّد WebGL.

هل يخفي وضع التصفح الخاص سلسلة محرّد WebGL الخاصة بي؟

لا. يمنع وضع التصفح الخاص حفظ التاريخ والكوكيز في متصفحك، لكنه لا يغيّر الأجهزة التي يعمل عليها متصفحك. سلسلة محرّد GPU متطابقة في الوضع الخاص وفي النافذة العادية. فقط المتصفحات ذات حماية بصمة نشطة — Brave أو Tor Browser أو Firefox مع privacy.resistFingerprinting — تُعيد قيمة مختلفة.

هل يمكنني تغيير سلسلة محرّد WebGL الخاصة بي دون تغيير GPU؟

ليس بشكل موثوق. لا يمكنك تعديل السلسلة التي يُبلّغ عنها برنامج تشغيل GPU الخاص بك لنظام التشغيل، والمتصفح يقرأها من برنامج التشغيل. يمكن لإضافات المتصفح وإعدادات الخصوصية اعتراض استدعاء API وإعادة قيمة مزوّرة للمواقع — لكن نظام بصمة متطور قد يكشف القيمة المزوّرة كشاذة ويضع عليها علامة كجهاز خصوصي، وهو نفسه إشارة بصمة.

كيف يختلف WebGL vendor fingerprinting عن بصمة Canvas؟

تستنتج بصمة Canvas فروق GPU بشكل غير مباشر — ترسم صورة وتحلل تباينات الرسم على مستوى البكسل الناتجة عن أجهزتك وبرامجك. يستعلم WebGL vendor fingerprinting برنامج التشغيل GPU مباشرةً، قراءة سلاسل صريحة للشركة المصنّعة والموديل. بصمة Canvas أكثر حساسية لفروق البرامج (الخطوط، عرض نص نظام التشغيل)؛ بصمة مورّد WebGL مرتبطة بشكل أكثر مباشرةً بهوية الأجهزة. تُنشر عادةً معاً لأنهما يلتقطان أبعاداً تكميلية من تفرّد الجهاز. راجع دليل بصمة Canvas للمقارنة التفصيلية.

هل يحمي VPN من بصمة مورّد WebGL؟

لا. يُشفّر VPN حركتك ويخفي عنوان IP الخاص بك، لكنه لا يتفاعل مع واجهة برمجية للرسوميات في متصفحك. سلسلة محرّد GPU تُقرأ من أجهزة محلية — وليس من شبكتك — ولا يمكن لـ VPN تغييرها. بصمة مورّد WebGL تعمل بشكل متطابق سواء كنت متصلاً عبر VPN أو بروكسي أو اتصال مباشر.

ما سلسلة المحرّد التي يُعيدها متصفح headless؟

متصفحات headless وبيئات الاختبار الآلي التي تفتقر إلى GPU حقيقي تُعيد عادةً محرّد fallback البرمجي: Google SwiftShader في Chromium أو Mesa OffScreen في Firefox. أجهزة المستخدم الحقيقية شبه لا تُعيد هذه القيم في التصفح العادي. أنظمة مكافحة البوتات تعاملها كمؤشرات بوت عالية الثقة.

هل WebGL vendor fingerprinting مرتبط بتقنية DrawNApart؟

هما مرتبطان لكن مختلفان. DrawNApart (arXiv 2022) تقنية بصمة GPU أكثر تقدماً تُعرّف الأجهزة من تباينات التوقيت الدقيقة في سرعة تنفيذ GPU — قابلة للقياس باستخدام JavaScript غير مميّز. بصمة مورّد WebGL تقرأ ببساطة سلاسل برنامج التشغيل. يمكن لـ DrawNApart التمييز بين جهازين بموديل GPU متطابق لأن وحدات تنفيذ GPU الفردية تتفاوت قليلاً في السرعة؛ لا يمكن لبصمة المورّد القياسية إجراء ذلك التمييز. قد تجمع منصات البصمة التجارية كلا الأسلوبين.

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

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

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

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

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

ما هو WebGL Vendor Fingerprinting؟ GPU وبصمة المتصفح | whatsmy.fyi