الجواب القصير
في معظم الملفات، في معظم الأوقات، الرفعُ لا بأس به. فالمحوِّلاتُ ذاتُ السمعة تحذف ما ترسله خلال ساعات قليلة ولا شأن لها بصور عطلتك.
والمشكلةُ ليست أنها تكذب. بل أنك لا تملك سبيلاً إلى معرفة أتكذب أم لا. فمتى غادر الملفُّ جهازك، صار كلُّ وعد بما يحدث بعدها وعداً تأخذه على الثقة: كم يُحفَظ، ومن يستطيع الوصول إليه، وأيُنسَخ إلى نسخة احتياطية تعمّر أطول من مؤقّت الحذف، وماذا يحدث له إن بيعت الشركة أو اختُرِقت. ولا شيء من ذلك مرئيٌّ من الخارج.
فالسؤالُ النافع ليس «أأثق بهذا الموقع؟» بل «أيحتاج هذا العملُ أن يغادر ملفي أصلاً؟» وفي عدد كبير ومتزايد من الأعمال الجوابُ لا، ومتى كان الجوابُ لا، كفّ سؤالُ الثقة عن كونه سؤالاً عليك أن تجيبه.
ماذا يفعل «الرفع» فعلاً
حين يطلب منك محوِّلٌ أن تختار ملفاً ثم يعرض عليك شريط تقدّم، يكون متصفحُك ينسخ الملف كلَّه، بايتاً ببايت، عبر الإنترنت إلى حاسوب يملكه شخصٌ آخر. وذلك الحاسوبُ يكتبه على قرص، ويشغّل التحويل، ويكتب النتيجة على القرص نفسه، ويناولك رابطاً.
وفي تلك اللحظة يوجد ملفُّك في ثلاثة مواضع على الأقل لم تخترها: قرصُ الخادم، وأيُّ سجلات دوّنت الطلب، وكثيراً شبكةُ توصيل محتوى خزّنت النتيجة مؤقتاً ليكون التنزيلُ سريعاً. وعلى سياسة الحذف أن تبلغ الثلاثة. ومعظمُها يقول إنها تفعل. ولا تستطيع فحص واحد منها.
وجديرٌ بالمعرفة كذلك: أن الملف ليس الشيء الوحيد الذي يصل. فاسمُ الملف يذهب معه، وكذلك كلُّ ما بداخل الملف ممّا لا تستطيع رؤيته. فالصورةُ الخارجةُ من هاتف توّاً تحمل نموذجياً إحداثياتِ GPS الدقيقة حيث التُقِطت، والوقتَ، والرقمَ التسلسلي للكاميرا، وأحياناً مصغَّرةً مضمَّنة للصورة الأصلية قبل أن تقتصّها. ومن يحرصون على الصورة كثيراً ما لا يحرصون على ذلك، لأن لا شيء على الشاشة يعرضه عليهم.
لماذا ترفع معظمُ الأدوات رغم ذلك
لا لأنها تريد ملفاتك. بل لأنه لم يكن ثمّة بديلٌ في معظم عمر الويب. فلم يكن المتصفحُ يستطيع فكَّ ترميز فيديو، ولا إعادةَ ترميز صورة عند جودة مختارة، ولا تحليلَ صيغة ملف؛ وكان خادمٌ عليه FFmpeg وImageMagick يستطيع. فلم يكن الرفعُ نموذجَ عمل، بل كان الموضعَ الوحيد الذي يمكن أن يحدث فيه العمل.
وقد كفّ ذلك عن كونه صحيحاً حديثاً وبهدوء. فالمتصفحاتُ تشحن الآن WebAssembly، الذي يشغّل المرمِّزات المصرَّفة نفسها بسرعة قريبة من الأصلية، و WebCodecs، الذي يكشف مرمِّز الفيديو العتادي الموجود في جهازك أصلاً، وواجهةَ لوحة تستطيع فكَّ ترميز الصور وإعادةَ ترميزها مباشرةً. فالعملُ الذي كان يُحتاج إليه خادمٌ من أجله يعمل الآن على الجهاز الذي عنده الملفُّ أصلاً.
وكثيرٌ من الأدوات ما زال يرفع، ولذلك أسبابٌ صادقة: خطُّ معالجة قائم لا يريد أحدٌ إعادة كتابته، أو صيغةٌ لا فاكَّ ترميز لها في المتصفح، أو عملٌ ثقيلٌ حقاً على هاتف. وثمّة سببٌ أقلُّ صدقاً، وهو أن الخادم حيث تسكن الحسابات والحصص والفئاتُ المدفوعة. فالأداةُ التي تعمل بالكامل في متصفحك يصعب قياسُ استهلاكها.
أربعةُ فحوص تستطيع إجراءها بنفسك
وهي تعمل على أي أداة، ومنها هذه. ولا واحدٌ منها يقتضي أخذَ كلام أحد على الثقة، والأولُ يستغرق نحو عشر ثوانٍ.
1. اقطع الاتصال
حمّل الصفحة، ثم أطفئ الواي فاي أو انزع الكبل، وحاول استعمالها. فالأداةُ التي تنجز عملها في متصفحك تستمرّ كما كانت بالضبط. والأداةُ التي ترفع تتوقّف فوراً، لأن الشيء الذي ينجز العمل لم يعد قابلاً للوصول.
وهذا أقوى اختبار موجود، وأصعبُها تزييفاً، لأنه لا يمكن الإجابةُ عنه بصياغة. فإما أن يكتمل التحويلُ بلا شبكة وإما ألا يكتمل.
2. راقب لسان الشبكة
افتح أدوات المطوِّر في متصفحك، واختر الشبكة، ثم استعمل الأداة. فكلُّ طلب تصدره الصفحةُ مسرودٌ بحجمه. فإن كانت صورتُك بـ 4 ميغابايت قد رُفِعت، فثمّة طلبٌ بـ 4 ميغابايت في تلك القائمة. وإن كان أكبرُ ما يغادر الصفحة بضعةَ كيلوبايتات من الإعلانات، فلم تُرفَع.
رتّب بالحجم وانظر إلى الأعلى. فلست بحاجة إلى فهم الطلبات؛ بل إلى أن تلحظ أواحدٌ منها بحجم ملفك.
3. اقرأ Content-Security-Policy
اعرض مصدر الصفحة وابحث عن Content-Security-Policy، قرب الأعلى. فهي قائمةُ العناوين التي يُسمَح لتلك الصفحة بالاتصال بها، ويفرضها متصفحُك لا حسنُ نوايا الموقع — فالطلبُ إلى أي شيء ليس على القائمة يُرفَض، مهما حاولت الشيفرة.
والتوجيهُ الذي يهمّ هو connect-src، وهو يحكم أين يجوز للصفحة إرسالُ بيانات. فإن سمّى عنواناً يخصّ الموقع الذي أنت عليه، فالصفحةُ تستطيع إرسال ملفك هناك. وإن لم يسمِّ شيئاً، أو لم يسمِّ إلا أطرافاً ثالثة كشبكة إعلانات، فلا تستطيع.
والصفحةُ التي لا Content-Security-Policy لها أصلاً ليست دليلاً على شيء سيّئ. بل تعني فقط أن هذا الفحص بعينه ليس عنده ما يقوله لك.
4. اقرأ الشيفرة
أقلُّها راحةً، وأقطعُها. فإن نشرت أداةٌ مصدرها وقدّمته دون خطوة بناء، فالملفاتُ التي جلبها متصفحُك هي الملفاتُ التي تستطيع قراءتها. ابحث فيها عن fetch وXMLHttpRequest وsendBeacon — وهي الطرقُ الثلاث التي تستطيع بها صفحةٌ إرسال أي شيء — وانظر ماذا يُعطى لها.
ومعظمُ الناس لن يفعل هذا. ويظلّ مهمّاً أنه ممكن، لأن الادّعاء الذي لا يستطيع أحدٌ فحصه ليس ادّعاءً حقاً.
ما لا يعنيه «تعمل في متصفحك»
ويجدر أن نكون دقيقين، لأن العبارة تُستعمَل على وجه فضفاض ولأن على هذا الموقع أن يلزم نفسه المعيار الذي يقترحه.
- لا تعني ألا طلبات أصلاً. فالصفحةُ نفسها وصلت عبر الشبكة، ومعظمُ الأدوات المجانية يحمل إعلانات أو تحليلات تكلّم أحداً. فالادّعاءُ عن ملفك، لا عن حركة المرور عموماً.
- ولا تخفي عنوان IP الخاص بك. فكلُّ موقع تزوره يراه، وهذا منها. فالمعالجةُ المحلية عن محتويات ملفاتك، لا عن إخفاء الهوية.
- ولا تنجو من ميزة تجلب شيئاً. فالأداةُ التي تتيح لك لصق عنوان ويب عليها أن تتصل بذلك العنوان، وذلك الخادمُ يعلم عنوان IP الخاص بك وما طلبته. وذلك متأصّلٌ في الميزة لا عيبٌ فيها — لكنه استثناءٌ حقيقي وينبغي للأداة أن تقوله صراحةً لا أن تتغاضى عنه.
- وليست هي «نحذف ملفاتك». فالجملةُ الثانية عمّا تختار شركةٌ فعله. والأولى عمّا هو ممكنٌ تقنياً. وواحدةٌ منهما لا غير قابلةٌ للفحص.
متى يكون الرفعُ لا بأس به حقاً
ليست هذه حجّةً على أن كل رفع غلطة. أرسل الملف حين لا يكون المحتوى حساساً ويكون العملُ أسهل هكذا؛ وحين يكون العملُ ثقيلاً حقاً على جهازك؛ وحين لا يكون للصيغة فاكُّ ترميز في المتصفح؛ أو حين تستعمل خدمةً لك معها علاقةٌ أصلاً وقرأت شروطها فعلاً.
وكن أشدَّ حذراً حين يحوي الملفُّ شيئاً لم تكن لتنشره علناً: وثائقَ هوية، وفحوصاً طبية، وعقوداً، وكلَّ ما فيه عنوانٌ أو وجهٌ لم تقصد مشاركته، أو صورةً لم تنظر في بيانات موقعها. فلتلك، الأداةُ التي تستطيع فحصها أجدرُ بالتفضيل على الأداة التي عليك أن تثق بها — لا لأن الموثوقة يُرجَّح أن تخونك، بل لأن السؤال لا يُطرَح أصلاً مع القابلة للفحص.
كيف يجيب هذا الموقع عن تلك الفحوص الأربعة
لكان دليلاً غريباً أن يقول لك افحص ثم يطلب إعفاءَ نفسه. فإذن، بالترتيب:
- اقطع الاتصال. افتح أي أداة هنا، واقطع الاتصال، وتستمرّ في العمل. ولكل صفحة أداة مؤشّرٌ حيّ يقول لك أأنت متصلٌ الآن، فتستطيع مشاهدته يتغيّر.
- لسانُ الشبكة. حوّل شيئاً واقرأ القائمة. فلا شيء يحمل ملفك ولا مصغَّرةً له ولا اسمه ولا حجمه ولا شيئاً قُرِئ منه. وليس على هذا الموقع حدثُ تحليلات مخصَّص عنده شيءٌ من ذلك ليرسله.
- Content-Security-Policy. وهي في أعلى مصدر كل صفحة. و
connect-srcيسمّي نقاطَ إعلانات Google وقياسها وزرَّ التبرّع، ولا شيء غيرها. ولا عنوان على تلك القائمة يخصّ هذا الموقع، لأن هذا الموقع لا خادم له — بل هو ملفاتٌ ساكنة. فليس ثمّة موضعٌ يُرسَل إليه ملفٌّ ولو حاول شيءٌ ذلك. - الشيفرة. كلُّ سطر علنيّ. والبناءُ يجرّد التعليقات والمسافات البيضاء ولا شيء غير ذلك، وتستطيع تشغيله بنفسك ومقارنة النتيجة بما يُقدَّم.
والاستثناءات، مذكورةً لا مدفونة: هذا الموقع يحمل إعلانات Google وعدّادَ زيارات، وكلاهما يكلّم Google ولا واحدٌ منهما يُناوَل شيئاً عن ملفاتك؛ وأداةُ الصور إلى فيديو تستطيع جلب صورة من عنوان تلصقه، ومعنى ذلك أن ذلك الخادم يرى عنوان IP الخاص بك. و صفحةُ الخصوصية تعرض الاثنين بالكامل.
وكلُّ أداة هنا تعمل هكذا: ضاغطُ صور يصيب حجماً تسمّيه، و مقتصُّ فيديو، و عارضُ EXIF ومُزيله للبيانات الخفيّة الموصوفة أعلى هذه الصفحة، و الصور إلى فيديو، و الصور إلى PDF. كلُّها مجانية، ولا حساب، ولا واحدةٌ منها عندها موضعٌ ترسل إليه ملفاتك.