كيف تعمل المتصفحات المضادة للكشف: الشرح التقني الكامل

أسطح البصمة، وتوليد هوية متسقة، وعزل التخزين على القرص، والتوجيه لكل ملف شخصي، والحدود الصريحة للنهج كله.
يؤدي المتصفح المضاد للكشف أربع مهام. يخزّن بيانات تصفح كل ملف شخصي على حدة، ويتحكم في هوية الجهاز التي يبلّغ عنها كل ملف، ويوجّه حركة كل ملف بشكل مستقل، ويُبقي الثلاثة متسقة بمرور الوقت. تستعرض هذه المقالة كيف تُنجَز كل مهمة على مستوى الآلية، وتنتهي بما لا يستطيع النهج فعله.
أسطح البصمة
ابدأ بما تستطيع الصفحة قراءته، لأن كل ما عداه استجابة له. يستطيع سكربت في أي موقع أن يطرح أسئلة على المتصفح، وتصف الإجابات الجهاز. وتتجمع الأسطح بشكل طبيعي.
| السطح | ما تقرؤه الصفحة |
|---|---|
| Navigator | اسم المتصفح وإصداره، والمنصة، وقائمة اللغات، وعدد المعالجات والذاكرة المبلَّغ عنهما، ودعم اللمس |
| الشاشة | العرض والارتفاع ومساحة العمل المتاحة وعمق اللون ونسبة بكسلات الجهاز |
| Canvas | البكسلات الدقيقة الناتجة عن رسم نص وأشكال خارج الشاشة، تُحوَّل إلى قيمة ثابتة بالتجزئة |
| WebGL | سلاسل مورّد الرسوميات والمصيِّر، إضافةً إلى تجزئات لمشاهد مرسومة |
| الصوت | ناتج مذبذب يمر عبر مخطط معالجة الصوت، وهو يختلف باختلاف المنظومة |
| الخطوط | أي الخطوط مثبّتة، يُستدل عليها من قياسات النص |
| المنطقة الزمنية والساعة | المنطقة والإزاحة المبلَّغ عنهما، تُقارَنان بالمكان الذي تصل منه الحركة |
| الشبكة | العنوان نفسه، ورؤية WebRTC لمرشحات الاتصال، وشكل مصافحة TLS |
لا صف واحد يحدد هوية جهاز. المجموع هو الذي يفعل، وفي المجموع أيضاً تُكشف الأكاذيب: قيم لا يمكن أن تنتمي إلى جهاز حقيقي واحد إشارة أعلى صوتاً من أي قيمة منفردة.
الجمع رخيص وصامت. كل قيمة في الجدول متاحة لأي صفحة عبر واجهات موثقة، دون نافذة طلب إذن، ومعظمها يصل في الثانية الأولى من الزيارة. وأياً كان موقفك من هذه الممارسة، فهي حقيقة قائمة في الويب الحديث، وهي الأساس الذي يُهندَس المتصفح المضاد للكشف في مواجهته.
كيف تُولَّد هوية متسقة
النهج الساذج أن تعترض كل سؤال وتُعشوِئ الإجابة. وهو يفشل لسبب بنيوي. الإجابات تصف جهازاً واحداً، فهي مترابطة، والإجابات العشوائية المستقلة تكسر الترابط. وكيل مستخدم Windows بجانب خطوط لا تأتي إلا مع macOS، أو حجم شاشة لم يُشحن به حاسوب محمول قط، أو سلسلة رسوميات لم تتعايش يوماً مع المنصة المزعومة: كل منها تناقض يستطيع المدقق اختباره بكلفة زهيدة.
لذا يولّد المتصفح المضاد للكشف الفعّال الهوية بوصفها مجموعة. يبدأ من فئة جهاز حقيقية شائعة ويشتق كل قيمة من ذلك الاختيار. تحدد المنصة قائمة الخطوط المعقولة وسلاسل الرسوميات ودعم اللمس. وتأتي الشاشة من الأحجام التي تُشحن بها تلك الفئة فعلاً. وتأتي اللغة والمنطقة الزمنية من المنطقة المقصودة للملف الشخصي. تتفق القيم لأنها اختيرت معاً من وصف واحد لجهاز واحد.
الخاصية الثانية بالأهمية نفسها: المجموعة مخزّنة. تُكتب في الملف الشخصي حين يُنشأ، وتبلّغ كل جلسة بالقيم نفسها، لأن جهازاً يتغير بين الزيارات يصف عتاداً لا يملكه أحد. والثبات هو معظم ما تعنيه المعقولية.
عزل التخزين على القرص
مهمة التخزين أقل المهام بريقاً وأكثرها إطلاقاً. كل ملف شخصي يملك مجلداً، وكل ما يحفظه المتصفح يعيش داخله: قاعدة الكوكيز، وLocal Storage، وIndexedDB، وذاكرة HTTP المؤقتة، وتسجيلات service worker، وحالة الإضافات، والسجل، وبيانات الاعتماد المحفوظة. ملفان شخصيان مجلدان منفصلان تماماً، ويُوجَّه كل متصفح قيد التشغيل إلى مجلده.
الانفصال التام هو الخاصية الواجب فحصها، لأن العزل الجزئي يفشل بصمت. فصل الكوكيز سهل. أما الذاكرة المؤقتة فقد تعرّف بمتصفح عائد عبر الموارد التي احتفظت بها. وقد تحمل service workers معرّفات وتواصل العمل بين الزيارات. وIndexedDB هو المكان الذي تحفظ فيه التطبيقات الحديثة السجلات التي تثق بها فعلاً. عزل يغطي المخازن المشهورة ويشارك أي مخزن آخر لم يعزل إلا الجزء الظاهر من المشكلة.
الاستمرارية هي النصف الآخر. الجلسات تراكم قيمة: فحوص أمان مكتملة، وسجل دخول راسخ، وشكل زائر عائد. يحتفظ الملف الشخصي بمجلده بين الجلسات، وهذا ما يجعل العمل على الحسابات ممكناً أصلاً. والكتابة عند الإغلاق هي ما يجعل المجلد دائماً، ولهذا قد يكلّف إنهاء عملية الملف الشخصي في منتصف الجلسة الجلسة التي أسسها للتو.
توجيه الشبكة
يحمل كل ملف شخصي مساره الخاص، يُطبَّق عند بدء متصفحه، فتخرج حركته عبر بروكسي ذلك الملف دون المساس بإعدادات النظام أو بمسار أي ملف آخر.
- يُربط البروكسي بكل ملف شخصي لا بكل جهاز. المتصفحات العادية تأخذ بروكسي النظام. أما هنا فكل ملف قيد التشغيل يتصل عبر نقطته الخاصة.
- يمر حل الأسماء عبر المسار أيضاً، لأن طلباً يصل من بلد بينما استعلاماته تصل من بلد آخر تناقض في طبقة الشبكة.
- يُقيَّد WebRTC ليتفق مع المسار. وإن تُرك وحده فقد يكشف مرشحات اتصال لم يلمسها البروكسي.
- تُطابَق المنطقة الزمنية واللغة مع بلد المسار، لأن العنوان هو القيمة الوحيدة التي لا يمكن توليدها، فعلى بقية الحكاية أن تتفق معه.
والمسار أيضاً أجدر المكونات بالتحقق المستقل، لأنه يُشترى من طرف ثالث. اختبار نقطة الاتصال قبل إسنادها، وقراءة العنوان المرصود لا المعلَن، يكشفان العطل وهو ما زال مشكلة ضبط لا مشكلة حساب.
ما الذي يغيّره المتصفح نفسه
هناك موضعان تستطيع الأداة فيهما تغيير الإجابات التي تتلقاها الصفحة، والفرق بينهما أكثر مفترقات هذا الموضوع تقنيةً.
| النهج | كيف يعمل | نقطة الضعف |
|---|---|---|
| حقن السكربت | إضافة أو سكربت محقون يتجاوز الدوال التي تستدعيها الصفحة، فتعيد قراءات canvas واستعلامات navigator قيماً بديلة | التجاوزات نفسها مرئية. يمكن التعرف على الدوال المرقَّعة بأنها مرقَّعة، وأي سطح نسيه الحاقن يظل يجيب بالقيمة الحقيقية |
| داخل شيفرة المتصفح نفسه | تجيب تنفيذات المتصفح بالقيم المخزّنة للملف الشخصي، في مسارات الشيفرة التي تُنتج فيها القيم الحقيقية | عمل أكبر بكثير في البناء والصيانة، ولهذا تتميز الأدوات المصممة لهذا الغرض عن الإضافات |
نهج الحقن هو الذي بدأت منه هذه الفئة، وسقفه معروف جيداً: تستطيع الصفحة أن تفحص هل ما زالت الدوال الأصلية تبدو أصلية، وتستطيع بلوغ السطح نفسه عبر مسار لم يغطّه الحقن. لذلك تُجري المتصفحات المضادة للكشف المصممة لهذا الغرض التغييرات داخل المتصفح نفسه، فتكون الهوية المخزنة هي ما يبلّغ عنه التنفيذ عبر كل مسار يقرؤها.
ماذا يفعل فتح الملف الشخصي فعلاً
- تُحمَّل الهوية المخزّنة: مجموعة واحدة متسقة من قيم الجهاز، هي نفسها كما في المرة السابقة.
- يبدأ المتصفح على مجلد الملف الشخصي نفسه، فيكون كل مخزن دائم خاصاً به.
- يُطبَّق المسار: البروكسي، وحل الأسماء عبره، وWebRTC مقيَّداً به.
- تعمل الجلسة، وتراكم حالة داخل المجلد.
- عند الإغلاق تُكتب الحالة، فيستأنف الفتح التالي الجهاز نفسه والتخزين نفسه والمسار نفسه.
كل جزء من هذه القائمة قابل للتحقق من الخارج. افتح صفحة اختبار البصمة مرتين وقارن القيم بين المرتين. انظر إلى مجلد الملف الشخصي على القرص. اقرأ العنوان المرصود. ينبغي لأداة في هذه الفئة أن تدعوك إلى هذا الفحص، لأن الآلية هي المنتج.
الحدود الصريحة
للنهج حدود، ومعرفتها جزء من استخدامه بكفاءة.
- لا يستطيع أن يجعل المتصفح مستحيل التعرف عليه، ولا أحد يستطيع قياس مثل هذا الادعاء أصلاً. الهدف الواقعي ملف شخصي يُقرأ جهازاً عادياً متسقاً داخلياً ويبقى ثابتاً.
- لا يستطيع إصلاح التناقضات التي تُدخلها أنت. مسار في بلد ومنطقة زمنية في آخر خطأ ضبط، وكل ما تستطيعه الأداة أن تجعل الضبط الصحيح هو السهل.
- لا يغطي السلوك. التوقيت والحجم والإيقاع تُقرأ مع البيئة، والأسطول الذي يتحرك بتزامن تام يعرّف بنفسه مهما كانت كل بيئة نظيفة.
- لا يغطي الهوية المعلَنة. تفاصيل الاسترداد المشتركة ووسائل الدفع المشتركة والنصوص المعاد استخدامها تربط الحسابات عبر سجلات المنصة نفسها، فوق المتصفح بكثير.
- لا يغيّر قواعد المنصات. العزل يفصل بيئات مشروعة. وما تسمح به المنصة قرارها هي، ولا نَعِد هنا بأي نتيجة على منصة لا نتحكم فيها.
اقرأ الحدود تعريفاً لا خيبة أمل. المتصفح المضاد للكشف أداة اتساق: تخزين منفصل، وهوية ثابتة معقولة، ومسار مطابق، تُمسَك معاً لكل ملف شخصي وتتكرر بالشكل نفسه في كل فتح. تلك هي الآلية كلها، وكل ما يُكتب غيرها عن هذه الفئة تنويع عليها.

