Canvas fingerprinting هو أسلوب تتبع يرسم صورة غير مرئية باستخدام HTML5 Canvas API ويقرأ بيانات البكسل الناتجة لإنشاء معرّف فريد لجهازك — دون كوكيز، ودون تخزين أي شيء، ولا شيء يمكنك حذفه. يمكنك اختبار ما إذا كان متصفحك يكشف عن بصمة canvas الآن على whatsmy.fyi.
ملخص سريع
Canvas fingerprinting هو أسلوب تتبع يأمر متصفحك برسم صورة مخفية ثم يقرأ بيانات البكسل لتحديد هوية جهازك. يعمل هذا الأسلوب لأن كل من وحدة معالجة الرسومات (GPU) ونظام التشغيل ومعالج الخطوط يُدخل تباينات دقيقة ومتسقة في كيفية رسم تلك الصورة — غير مرئية للعين البشرية، لكنها فريدة لتركيبة أجهزتك وبرامجك.
ما هو Canvas Fingerprinting؟
يستغل canvas fingerprinting خاصية Canvas API في HTML5، وهي ميزة مصممة للسماح للمتصفحات برسم الرسوميات مباشرةً في نافذة المتصفح. كل متصفح حديث يدعمها — مما يعني أن سطح التتبع شبه شامل. عندما يعمل نص برمجي للبصمة، فإنه ينشئ عنصر canvas خارج الشاشة غير مرئي تماماً لك، يرسم عليه نصوصاً وأشكالاً، ثم يستدعي canvas.toDataURL() لقراءة بيانات البكسل كسلسلة Base64. تُحوَّل هذه السلسلة بعد ذلك إلى بصمة مضغوطة ومستقرة.
ما يجعل canvas fingerprinting قوياً هو أن مخرجات البكسل ليست متسقة تماماً عبر الأجهزة المختلفة. أوامر الرسم نفسها تنتج نتائج مختلفة بشكل طفيف اعتماداً على الشركة المصنعة لـ GPU وإصدار برنامج تشغيل الرسومات ونظام التشغيل والخطوط المثبتة وإعدادات مكافحة التعرج (anti-aliasing). قد ينتج جهازان يبدوان متطابقَين تماماً — نفس نظام التشغيل، نفس إصدار المتصفح — بصمة canvas مختلفة لأن برامج تشغيل GPU لديهما تختلف.
Canvas fingerprinting هو مكوّن من المجموعة الأشمل لتقنيات بصمة المتصفح. على خلاف الكوكيز، لا يتطلب أي تخزين على جهازك وغير متأثر تماماً بمسح سجل التصفح أو تمكين وضع التصفح الخاص أو تغيير الشبكة.
كيف يعمل Canvas Fingerprinting؟
تجري العملية في أربع خطوات، تستغرق كل منها بضعة ملّيثوانٍ فقط وغير مرئية تماماً للمستخدم.
الخطوة الأولى — رسم Canvas
يُنشئ مقطع JavaScript عنصر canvas خارج الشاشة ويرسم مجموعة من النصوص والأشكال والتدرجات باستخدام خطوط وألوان وأوضاع مزج محددة. تعقيد الرسم مهم: الأشكال الهندسية البسيطة تنتج تبايناً أقل؛ أما النصوص الثقيلة بالخطوط مع الظلال والتدرجات فتنتج تبايناً أكثر.
الخطوة الثانية — التصيير بواسطة GPU ونظام التشغيل
يمرّر المتصفح تعليمات الرسم إلى مجموعة رسومات نظام التشغيل. على Windows، يتولى ClearType تصيير الخطوط بمستوى دون البكسل. على macOS، يطبق Core Text خوارزمية تلميح خاصة به. على Linux، يصيّر FreeType بطريقة مختلفة مجدداً. تتعامل وحدة GPU مع مكافحة التعرج والاستيفاء اللوني. كل طبقة تُدخل تبايناً متسقاً لكنه خاص بالجهاز على مستوى البكسل.
الخطوة الثالثة — استخراج البكسل
يستدعي النص canvas.toDataURL() لقراءة الصورة المكتملة كـ PNG مُرمَّز بـ Base64. تُرمّز هذه السلسلة كل قيمة بكسل — بما في ذلك التبايانات الدون-بكسل المُدخَلة أثناء التصيير. بديلاً، قد تستخدم النصوص canvas.getImageData() للوصول المباشر إلى مخزن البكسل الخام.
الخطوة الرابعة — التجزئة (Hashing)
يُجزَّأ (Hash) مخزن البكسل الخام أو سلسلة Base64 — باستخدام MurmurHash أو MD5 عادةً — لإنتاج قيمة بصمة مضغوطة ومستقرة. تُرسَل هذه التجزئة إلى خادم التتبع وتُخزَّن كمعرّف جهاز.
// مثال بسيط على canvas fingerprinting
function getCanvasFingerprint() {
const canvas = document.createElement('canvas');
canvas.width = 280;
canvas.height = 60;
const ctx = canvas.getContext('2d');
// الخلفية — يتفاوت مزج الألوان حسب GPU
ctx.fillStyle = 'rgb(255, 102, 0)';
ctx.fillRect(10, 10, 100, 30);
// النص — يتفاوت تصيير الخط حسب نظام التشغيل (ClearType / Core Text / FreeType)
ctx.fillStyle = '#069';
ctx.font = '18px Arial';
ctx.fillText('Canvas fingerprint', 2, 45);
// الظل — يتفاوت تصيير الظل حسب برنامج تشغيل الرسومات
ctx.shadowColor = 'rgba(0, 0, 0, 0.5)';
ctx.shadowBlur = 6;
ctx.shadowOffsetX = 2;
ctx.shadowOffsetY = 3;
// تعيد سلسلة Base64 تختلف بدقة عبر الأجهزة
// حتى مع إصدارات متطابقة من المتصفح ونظام التشغيل
return canvas.toDataURL();
}ما مدى تفرّد بصمة Canvas؟
تساهم canvas fingerprinting بكمية كبيرة من الإنتروبيا في بصمة المتصفح الإجمالية. تتباين نتائج الأبحاث حسب مجموعة البيانات والمنهجية، لكن الاتجاه متسق: مخرجات canvas هي معرّف عالي الإشارة، لا سيما عند دمجه مع سمات المتصفح الأخرى.
| النتيجة | القيمة | المصدر |
|---|---|---|
| إنتروبيا Canvas بمعزل عن غيرها | 8–10 بت | EFF Cover Your Tracks |
| المتصفحات القابلة للتعرف عليها فريدياً عبر canvas وحدها | 83.6% | BrowserLeaks |
| نسبة أكبر 20,000 موقع تستخدم canvas fingerprinting | 12.7% | ACM Internet Measurement Conference, 2025 |
| التفرد الفعلي في العالم الواقعي (8 ملايين بصمة) | 33.6% | دراسة أكاديمية ميدانية، 2018 |
| تفرد Canvas على الأجهزة المحمولة | 62% | ACM Internet Measurement Conference, 2025 |
الفجوة بين نتائج المختبرات (80–90% تفرداً) والبيانات الواقعية (33.6%) موجودة لأن كثيراً من التكوينات الشائعة تنتج مخرجات canvas متطابقة. كل أجهزة MacBook Pro التي تعمل بنفس نظام التشغيل macOS ونفس إصدار Safari، مثلاً، تشترك في نفس تجزئة canvas. التفرد يكون أعلى على الأجهزة ذات تركيبات GPU وبرامج تشغيل غير معتادة. الأجهزة المحمولة تحصل على درجات أعلى لأن تنوع الأجهزة أكبر.
من يستخدم Canvas Fingerprinting في العالم الواقعي؟
شبكات الإعلانات
تستخدم شركات التكنولوجيا الإعلانية canvas fingerprinting لتتبع المستخدمين عبر المواقع للاستهداف السلوكي وتحديد الحد الأقصى للتكرار. أصبح ذا قيمة خاصة مع إيقاف الكوكيز من الطرف الثالث عبر المتصفحات الرئيسية — يؤدي canvas fingerprinting نفس دور التعرف دون الحاجة إلى أي كوكيز أو موافقة المستخدم في معظم التطبيقات الحالية.
منصات كشف الاحتيال
تستخدم شركات الأمن مثل Fingerprint (المعروفة سابقاً بـ FingerprintJS) وCastle.io بصمة canvas للكشف عن عمليات استيلاء الحسابات وحشو بيانات الاعتماد ونشاط البوتات. إذا كانت بصمة canvas للجهاز لا تتطابق مع تلك المسجلة لحساب ما، فإنها تُطلق إشارة خطر للمراجعة. يستوفي هذا الاستخدام عادةً أساس المصلحة المشروعة بموجب اللائحة الأوروبية لحماية البيانات (GDPR) دون الحاجة إلى موافقة صريحة.
تطبيق الجدار المدفوع والوصول المحدود
تستخدم الناشرون الإخباريون وخدمات الاشتراك canvas fingerprinting لتطبيق حدود المقالات على المستخدمين الذين يحذفون الكوكيز لإعادة تعيين عداد وصولهم المحدود. نظراً لأن البصمة مشتقة من الأجهزة وليس من البيانات المخزنة، فإنها تظل سارية حتى بعد حذف الكوكيز والتصفح الخاص.
هل Canvas Fingerprinting قانوني؟
بموجب اللائحة الأوروبية لحماية البيانات (GDPR) في أوروبا، يُشكّل canvas fingerprinting معالجة لبيانات شخصية عندما يمكن ربط التجزئة الناتجة بشخص محدد. صنّفت السلطة الفرنسية لحماية البيانات (CNIL) صراحةً بصمة المتصفح على أنها تستلزم الموافقة المستنيرة ما لم تنطبق استثناء المصلحة المشروعة الضيق. بموجب قوانين CCPA وCPRA الأمريكية، تُعامَل بيانات البصمة كمعلومات شخصية تخضع لحقوق إلغاء الاشتراك.
تُقرّ إرشادات W3C للبصمة الرقمية بأن canvas هو "ناقل بصمة عالي الدقة" وتنصح مؤلفي مواصفات الويب باعتبار مخاطر البصمة عند تصميم واجهات برمجة تطبيقات المتصفح الجديدة. يظل التطبيق متفاوتاً عبر الولايات القضائية.
كيف تحمي نفسك من Canvas Fingerprinting؟
الحماية الكاملة صعبة — الدفاعات الفعالة تنطوي على مقايضات في توافق الويب. هذه الخيارات مرتبة من الأقوى إلى الأكثر عملية للاستخدام اليومي:
- متصفح Tor (أقوى حماية): يُوحّد Tor مخرجات canvas بحيث يُعيد كل مستخدم Tor نفس تجزئة canvas، مما يجعل التعرف الفردي مستحيلاً. المقايضة هي التصفح الأبطأ بسبب شبكة Tor.
- متصفح Brave (موصى به للاستخدام اليومي): يستخدم Brave تقنية تسمى Farbling — يحقن قيمة ضوضاء عشوائية صغيرة لكل جلسة ولكل موقع في مخرجات بكسل canvas. تتغير بصمتك مع كل جلسة ولكل موقع، مما يجعل التتبع عبر المواقع غير موثوق مع بقائه غير مرئي بصرياً لك.
- Firefox مع
privacy.resistFingerprinting: ضبط هذا الإعداد علىtrueفيabout:configيجعل Firefox يُعيد مخرجات canvas موحدة مماثلة لمتصفح Tor. معطّل افتراضياً؛ قد تتصرف بعض المواقع التي تعتمد على رسومات canvas بشكل غير متوقع. - إضافة CanvasBlocker (Firefox وChrome): تعترض هذه الإضافة استدعاءات
canvas.toDataURL()وgetImageData()وإما تحجبها كلياً أو تُعيد بيانات عشوائية. مفيدة للمستخدمين الذين يحتاجون حماية البصمة دون تغيير المتصفح. - تجنب الخطوط النادرة وبرامج تشغيل GPU غير المعتادة: الحفاظ على تحديث البرامج والاستخدام بالأجهزة القياسية يقلل من تفرد مخرجات canvas. إصدارات برامج التشغيل النادرة تنتج آثاراً تصييرية أكثر تميزاً.
- استخدام VPN — مع فهم قيوده: يخفي VPN عنوان IP الخاص بك لكنه لا يؤثر على مخرجات canvas. يزيل طبقة واحدة من التتبع لكنه لا يعالج البصمة. تحقق مما إذا كان VPN الخاص بك يعمل على whatsmy.fyi.
الأسئلة الشائعة
هل يعمل canvas fingerprinting في وضع التصفح المتخفي أو الخاص؟
نعم. يمنع وضع التصفح الخاص متصفحك من حفظ السجل والكوكيز وبيانات النموذج على القرص — لكنه لا يغير GPU أو برنامج تشغيل الرسومات أو معالج خطوط نظام التشغيل. بصمة canvas الخاصة بك متطابقة في وضع التصفح المتخفي وفي نافذة عادية. فقط المتصفحات التي تُفعّل عشوائية البصمة بشكل نشط، مثل Brave أو Tor Browser، تتصرف بشكل مختلف.
هل يمكن لـ VPN منع canvas fingerprinting؟
لا. يغيّر VPN عنوان IP المرئي الخاص بك ويمرّر حركة المرور عبر نفق مشفر، لكنه لا يلمس مجموعة التصيير في المتصفح. يقرأ canvas fingerprinting بيانات تصيير على مستوى GPU ونظام التشغيل، غير متأثرة بالمرة بالخادم الذي تمر منه حركة مرورك. لحماية نفسك من canvas fingerprinting، استخدم Brave أو Firefox مع privacy.resistFingerprintingأو Tor Browser.
هل canvas fingerprinting مماثل لتتبع الكوكيز؟
لا. يخزن تتبع الكوكيز ملف معرّف على جهازك يمكنك عرضه وحذفه أو حجبه. لا يُخزّن canvas fingerprinting شيئاً — يُعيد بناء معرّف من خصائص أجهزة وبرامج جهازك في كل زيارة. حذف الكوكيز أو التخزين المحلي أو حجب كوكيز الطرف الثالث لا يؤثر على canvas fingerprinting.
هل تعطيل JavaScript يوقف canvas fingerprinting؟
نعم — يتطلب canvas fingerprinting تشغيل JavaScript. إذا أوقفت JavaScript كلياً، فلن يتمكن نص البصمة من التنفيذ. ومع ذلك، تعطيل JavaScript يكسر معظم المواقع الحديثة. النهج الأكثر عملية هو استخدام Farbling من Brave أو إضافة CanvasBlocker، التي تعترض استدعاءات canvas API تحديداً دون تعطيل JavaScript العام.
كيف يختلف canvas fingerprinting عن WebGL fingerprinting؟
كلاهما يستغل مسار تصيير الرسومات في المتصفح، لكنهما يستهدفان واجهات برمجة تطبيقات مختلفة. يستخدم canvas fingerprinting الـ Canvas API ثنائية الأبعاد وهو حساس لتصيير الخطوط واختلافات النص دون البكسل. يستخدم WebGL fingerprinting الـ API ثلاثية الأبعاد ويكشف مباشرةً عن اسم الشركة المصنعة لـ GPU والنموذج وإصدار برنامج التشغيل. غالباً ما يُنشَران معاً لأنهما يلتقطان أبعاداً تكميلية لتفرد الجهاز. اقرأ دليل WebGL fingerprinting للمزيد.
هل canvas fingerprinting دقيق بما يكفي لاستبدال الكوكيز كلياً؟
بمفرده، canvas fingerprinting غير كافٍ — التفرد الواقعي عبر مجموعات البيانات الكبيرة حوالي 33.6%. لكن عند دمجه مع بيانات محرك تصيير WebGL وبصمة الصوت وأبعاد الشاشة والمنطقة الزمنية وتزامن الأجهزة، تقترب البصمة المجمّعة من دقة مستوى الكوكيز. عادةً ما تُجمّع منصات البصمة التجارية 30 إشارة أو أكثر، مع canvas كأحد أعلى المكونات مساهمةً بشكل فردي.
ما الفرق بين بصمة canvas وتجزئة بكسل canvas؟
بصمة canvas هي معرّف الجهاز الإجمالي المشتق من عملية تصيير canvas. أما تجزئة بكسل canvas (canvas pixel hash) فهي تطبيق محدد يُجزَّأ فيه مخزن البكسل الخام منcanvas.getImageData() مباشرةً بدلاً من استخدام سلسلة Base64 منtoDataURL(). كلا الأسلوبين يستخرجان نفس التباين التصييري الجوهري؛ نهج تجزئة البكسل أسرع وينتج قيمة أكثر إحكاماً. اقرأ دليل تجزئة بكسل WebGL للتعمق أكثر.
مقالات ذات صلة
- ما هي بصمة المتصفح؟ كيف تتتبعك المواقع بدون كوكيز — الدليل الشامل لجميع إشارات البصمة المجمّعة
- ما هو WebGL Fingerprinting؟ كيف يُعرّفك GPU — كيف يكشف الـ API ثلاثي الأبعاد عن الشركة المصنعة لـ GPU وإصدار برنامج التشغيل
- ما هو Audio Fingerprinting؟ كيف يتتبعك AudioContext — كيف ينتج جهاز الصوت في جهازك معرّفاً فريداً
- ما هو Font Fingerprinting؟ كيف تتتبعك الخطوط المثبتة — كيف تساهم خطوطك المثبتة في بصمة متصفحك



