الأدوات
عرض توضيحي لتتبع Evercookie
افهم كيف تستمر "ملفات تعريف الارتباط الزومبي" عبر محاولات الحذف من خلال استغلال آليات تخزين متعددة في المتصفح.
عرض توضيحي تعليمي فقط
تعرض هذه الصفحة مفاهيم Evercookie لأغراض تعليمية. نحن لا نتتبعك فعلياً. يخزن العرض معرفاً عشوائياً لإظهار كيفية عمل الاستمرارية، ويمكنك مسحه بالكامل في أي وقت.
ما هو Evercookie؟
Evercookie (يُسمى أيضاً "ملف تعريف ارتباط زومبي" أو "ملف تعريف ارتباط فائق") هو واجهة برمجة تطبيقات JavaScript تنشئ ملفات تعريف ارتباط شديدة الاستمرارية عن طريق تخزين نفس معرف التتبع عبر العديد من آليات تخزين المتصفح المختلفة في وقت واحد.
عندما يحذف المستخدم ملفات تعريف الارتباط الخاصة به، يقوم Evercookie بإعادة إنشاء نفسه من أي موقع تخزين متبقٍ. لإزالة Evercookie فعلياً، يجب مسح جميع آليات التخزين دفعة واحدة - وهو أمر لا يعرف معظم المستخدمين كيفية القيام به.
تم إنشاء Evercookie الأصلي بواسطة سامي كامكار، باحث أمني ومبتكر Evercookie في عام 2010 لإظهار مدى صعوبة الحفاظ على الخصوصية عبر الإنترنت.
العرض التفاعلي
معرف التتبع التجريبي الخاص بك
جارٍ الإنشاء...
جرب مسح ملفات تعريف الارتباط فقط، ثم انقر "فحص جميع التخزين" لترى كيف يستمر المعرف
آليات التخزين
تستغل ملفات Evercookie أكثر من 17 آلية تخزين مختلفة. أدناه يُظهر أيها متاح في متصفحك وحالتها الحالية:
كيف تعمل كل آلية
ملفات تعريف الارتباط HTTP القياسية شائع
الطريقة التقليدية - ملفات نصية صغيرة يخزنها المتصفح. سهلة المسح عبر إعدادات المتصفح.
document.cookie = "tracking_id=abc123; expires=Fri, 31 Dec 9999 23:59:59 GMT";
تخزين HTML5 المحلي شائع
يخزن حتى 5-10 ميغابايت لكل نطاق. يستمر حتى يتم مسحه صراحة. غالباً ما يُتجاهل عند مسح "ملفات تعريف الارتباط".
localStorage.setItem('tracking_id', 'abc123');
// Survives browser restart, never expires
تخزين جلسة HTML5 شائع
مشابه لـ localStorage ولكن يُمسح عند إغلاق علامة التبويب. يمكن استخدامه لتمرير البيانات لإعادة إنشاء ملفات تعريف ارتباط أخرى أثناء الجلسة.
sessionStorage.setItem('tracking_id', 'abc123');
IndexedDB شائع
قاعدة بيانات NoSQL كاملة في المتصفح. يمكنها تخزين كميات كبيرة من البيانات المهيكلة. نادراً ما يمسحها المستخدمون.
const request = indexedDB.open('evercookie_db', 1);
request.onsuccess = (e) => {
const db = e.target.result;
// Store tracking ID in database
};
بصمة Canvas PNG ماكر
يشفر قيمة ملف تعريف الارتباط كألوان بكسل RGB في صورة PNG، ثم يفرض تخزينها مؤقتاً. يُقرأ ملف تعريف الارتباط مرة أخرى برسم الصورة المخزنة مؤقتاً على Canvas وقراءة قيم البكسل.
// Encode "abc" as RGB: R=97, G=98, B=99
ctx.fillStyle = 'rgb(97, 98, 99)';
ctx.fillRect(0, 0, 1, 1);
// Later, read it back from cached image
HTTP ETag ماكر
ETags مخصصة للتحقق من صحة ذاكرة التخزين المؤقت ولكن يمكنها تخزين معرفات التتبع. يرسل الخادم ETag فريداً، ويرسله المتصفح مرة أخرى في الطلبات اللاحقة.
// Server response:
HTTP/1.1 200 OK
ETag: "tracking_id_abc123"
// Browser's next request:
If-None-Match: "tracking_id_abc123"
ملف تعريف الارتباط الفائق HSTS متقدم
يستغل HSTS (أمان النقل الصارم HTTP) عن طريق ترميز البتات في سياسات HSTS للنطاقات الفرعية. كل بت هو نطاق فرعي إما لديه HSTS مُعيّن أو لا.
// Encoding "5" (binary: 101) across subdomains:
// bit0.tracker.com → HSTS ON (1)
// bit1.tracker.com → HSTS OFF (0)
// bit2.tracker.com → HSTS ON (1)
// Reading: check if browser upgrades each subdomain to HTTPS
ذاكرة التخزين المؤقت للويب ماكر
يخزن معرف التتبع داخل ملف JavaScript أو HTML مخزن مؤقتاً. عندما يحمل المتصفح النسخة المخزنة مؤقتاً، تحتوي على المعرف.
// Server sends with far-future cache headers:
Cache-Control: max-age=31536000
// File contents:
var cached_tracking_id = "abc123";
خاصية window.name ماكر
تستمر خاصية window.name عبر تنقلات الصفحات داخل نفس علامة التبويب، حتى إلى نطاقات مختلفة. يمكنها تخزين حتى 2 ميغابايت.
window.name = "tracking_id=abc123";
// Survives navigation to other sites in same tab!
ملفات Flash (LSO) متوقف
كائنات Flash المحلية المشتركة خزنت البيانات خارج سيطرة المتصفح. تطلبت زيارة موقع Adobe لمسحها. Flash ميت الآن، لكنه كان فعالاً جداً.
// ActionScript:
var so:SharedObject = SharedObject.getLocal("evercookie");
so.data.tracking_id = "abc123";
so.flush();
تخزين Silverlight المعزول متوقف
كان لإضافة Silverlight من Microsoft آلية تخزين خاصة بها، منفصلة عن تخزين المتصفح. تم إيقاف Silverlight الآن.
سرقة السجل مُصحح
شفرت البيانات في سجل المتصفح بزيارة عناوين URL تحتوي على المعرف. يمكن القراءة بالتحقق من أنماط :visited للروابط. أصلحت المتصفحات هذا.
// Create history entries:
location = "http://tracker.com/id/a";
location = "http://tracker.com/id/b";
// Read via CSS :visited (now blocked)
كيف يحمي Brave من Evercookies
- تقسيم التخزين: يعزل التخزين لكل موقع، مما يمنع التتبع عبر المواقع
- Ephemeral Storage: Third-party storage is cleared when you close the site
- Canvas Fingerprint Randomization: Defeats PNG-based cookie storage
- Blocked HSTS Supercookies: Clears HSTS state for tracking domains
- ETag Stripping: Removes tracking ETags from known trackers
- بدون Flash/Silverlight: الإضافات القديمة محظورة بالكامل
تداعيات الخصوصية
تُظهر ملفات Evercookie مشكلة أساسية في خصوصية الويب: المتصفح لديه أماكن كثيرة جداً لتخزين البيانات. كل واجهة برمجة تطبيقات جديدة (IndexedDB، Service Workers، Cache API) تنشئ مخبأً محتملاً آخر للمتتبعات.
بينما كانت ملفات Evercookie في الأصل إثبات مفهوم، تُستخدم أشكال منها في الواقع بواسطة:
- شبكات الإعلانات للتتبع عبر المواقع
- أنظمة كشف الاحتيال
- تطبيق حوائط الدفع
- أدوات المراقبة الحكومية
أفضل دفاع هو استخدام متصفح يركز على الخصوصية مثل Brave الذي ينفذ تقسيم التخزين ويحظر بنشاط تقنيات التتبع المعروفة.