البرهان
كل مواقع الأدوات على الويب تكتب أنها تحترم خصوصيتكم. ونحن نفضّل أن نريكم كيف تتحققون. هناك ثلاث طرق لذلك، من الأسرع إلى الأشمل، ولا واحدة منها تتطلب معرفة بالبرمجة.
الطريقة السريعة: فاحص الشبكة
المتصفح نفسه يعرض القائمة الكاملة لما يدخل وما يخرج. هذا هو أوضح برهان، ولا يستغرق أكثر من عشر ثوان.
- افتحوا أداة من هذا الموقع
عارض البيانات الوصفية مثلا. وانتظروا حتى تكتمل الصفحة. - افتحوا أداة الفحص
مفتاح F12 على ويندوز ولينكس. وعلى ماك، Cmd + Option + I. ويمكن المرور أيضا من قائمة المتصفح، عند مدخل «أدوات المطوّر» أو «فحص». - انتقلوا إلى تبويب «الشبكة»
اسمه «Network» إذا كان متصفحكم بالإنجليزية. ثم انقروا على أيقونة المنع أو على «مسح» لإفراغ القائمة: يجب أن تكون فارغة قبل التجربة. - أفلِتوا ملفا وشغّلوا المعالجة
هذه هي اللحظة الحاسمة. راقبوا القائمة بينما تشتغل الأداة، وبينما تنزّلون النتيجة. - لاحظوا
تبقى القائمة فارغة. لا يظهر أي سطر، لا أثناء قراءة الملف، ولا أثناء المعالجة، ولا عند التنزيل، لأن التنزيل يصنعه متصفحكم بنفسه من ذاكرة التبويب.
دقّة صادقة: عند أول تحميل للصفحة، يعرض الفاحص أسطرا فعلا. تلك ملفات الموقع نفسه، من صفحة وورقة أنماط وخطوط ونصوص برمجية، وكلها تُقدَّم من هذا النطاق نفسه. المهم أن تنظروا بعد ذلك التحميل، أثناء المعالجة: هناك ترفع المواقع الأخرى، وهناك يجب أن تبقى القائمة فارغة.
الطريقة القاطعة: اقطعوا الاتصال
الموقع الذي يحتاج إلى خادم كي يعمل لا يستطيع العمل بلا شبكة. أما هذا فيستطيع.
- زوروا الأداة مرة أولى، والاتصال قائم
عندها يستقر الموقع في ذاكرة متصفحكم، تماما مثل تطبيق. - اقطعوا الشبكة
وضع الطيران، أو انزعوا الكابل، أو حوّلوا تبويب الشبكة في الفاحص إلى وضع «دون اتصال». - أعيدوا تحميل الصفحة واستعملوا الأداة
كل شيء يعمل: الصفحة تُعرض، والملف يُفلَت، والمعالجة تجري، والنتيجة تُنزَّل. الموقع الذي يرفع لا يستطيع فعل هذا.
الطريقة الشاملة: اقرأوا الشيفرة
هي الأبطأ والأمتن. ولا تتطلب أي حساب ولا أي أداة خاصة.
- اعرضوا الشيفرة المصدرية للصفحة
Ctrl + U، أو نقرة يمنى ثم «عرض مصدر الصفحة». شيفرة الموقع نفسها ليست مضغوطة ولا مشوّشة، وهذا اختيار: الشيفرة غير المقروءة لا يمكن التحقق منها. وثمة استثناء واحد، هو مكتبة PDF المدمجة: تُقدَّم مضغوطة كما ينشرها صاحبها، وصفحة المنهج تذكر وزنها ورخصتها وأنها لا تجري أي اتصال بالشبكة. - افتحوا ملف الأداة
شيفرة كل أداة تسع في ملف جافاسكريبت واحد، مسمّى باسمها، يُحمَّل من هذا النطاق. ستجدون فيه قراءة الملف، والمعالجة، وصناعة النتيجة. أما الصفحة نفسها فتحمّل فوق ذلك أساس الموقع المشترك، وفي ركن PDF المكتبة المدمجة: وهذه الملفات هي نفسها في كل صفحة. - ابحثوا عمّا يمكن أن يرسل شيئا
في المتصفح، لا توجد إلا عائلة صغيرة من طرق إرسال البيانات: الكلمات التي تُبحث هي fetch وXMLHttpRequest وsendBeacon وWebSocket وEventSource، ووسوم الصور أو النصوص البرمجية المصنوعة في أثناء التشغيل. ستجدون بعضها، وهذا مقصود. فهي ترد داخل تعليقات تشرح بالضبط أن هذه الدوال لا تُستدعى أبدا؛ وفي موضع آخر تأتي كلمة fetch لأنها ببساطة إحدى كلمات قائمة EFF التي يستعملها مولّد عبارات المرور. أما أدوات الصور فتصنع فعلا وسم صورة: وعنوانه دائما هو الملف الذي وضعتموه للتو، عنوان blob: لا يغادر متصفحكم. فالمطلوب البحث عنه ليس الكلمة، بل استدعاء حقيقي إلى عنوان بعيد. ولا يوجد واحد.
وبرهان ندين لكم به، وهو برهان الآلة
الطرق الثلاث أعلاه ملك لكم: تتيح لكم التحقق من دوننا. أما الرابعة فهي تُلزمنا نحن.
قبل كل نشر للموقع، يشغّل برنامج متصفحا حقيقيا، ويفتح كل صفحة أداة، ويُفلت فيها ملف اختبار حقيقيا، ويشغّل المعالجة، ويراقب الشبكة على مستوى المتصفح نفسه، لا على مستوى شيفرة الصفحة. فإذا رأى طلبا واحدا يخرج إلى خادم آخر أثناء المعالجة، رُفض النشر. لا يُنبَّه عليه: يُرفض.
هذا هو القفل الوحيد في المشروع الذي لا يُلتف عليه بتغيير نص. يعيش في مجلد المشروع باسم «validate-localite»، ويعمل في كل مرة.