كيف تعمل : الضغط وفك الضغط
المتصفح يعرف الضغط، لكنه لا يعرف حساب رمز تحقق CRC-32 ولا كتابة حاوية zip: وهاتان القطعتان مكتوبتان باليد هنا، والأرشيف المنتَج يُعاد فتحه بقارئنا نحن قبل أن يُردّ إليكم.
ضغط ثلاثة ملفات لإرفاقها برسالة بريد حركة عادية، ومع ذلك فهي من أشد الحالات التي تتطفل فيها المواقع على الشبكة: فهي تستقبل كل ما تريدون إرساله، وهو غالبا مستندات إدارية أو صور عائلية. أما المتصفح فيعرف فعل كل ذلك من دون إرسال شيء.
هو يعرف الضغط وفك الضغط بالدالة المسماة deflate الخام منذ Chrome 103 وFirefox 113 وSafari 16.4. أما رمز التحقق الذي يشترطه أرشيف zip لكل مدخل من مداخله فلا يعرف حسابه، ولا يعرف كتابة الحاوية نفسها. وهاتان القطعتان مكتوبتان باليد في هذه الأداة، منسوختين من مولّد الأيقونات عندنا الذي كانتا عنده أصلا: فنحن لا نعيد اختراع صيغة كتبناها هنا من قبل.
والأداة تعيد قراءة نفسها. فبعد صناعة أرشيفكم، تعيد فتحه بقارئها هي، وتفك ضغط كل مدخل، وتعيد حساب رمز تحققه. فالأرشيف الذي لا يعرف أي برنامج فتحه نتيجة كاذبة، ومن دون إعادة القراءة هذه ستكونون أنتم من ينتبه إليها، أمام من تراسلونه.
كيف تعمل
- للأرشفة، أفلِتوا عدة ملفات دفعة واحدة: تسردها الأداة، وتضغطها واحدا واحدا، وتردّ إليكم أرشيفا.
- وللفتح، أفلِتوا أرشيفا واحدا: تعرض الأداة ما يحتويه، بالحجم الحقيقي لكل مدخل، وتختارون ما تستخرجونه.
- والاتجاه يُستنتج وحده، لا من الامتداد بل من بايتات الملف الأولى: فالامتداد يُعاد تسميته، أما التوقيع فلا.
الصيغ المقبولة
أي ملفات لصناعة أرشيف؛ وأرشيف zip واحد لفتحه. والنمط يُستنتج من البايتات الأربعة الأولى من الملف المُفلَت، لا من اسمه.
أي ملفات كانت، للأرشفة
أفلِتوا منها ما شئتم دفعة واحدة. ويُضغط كل واحد على حدة، ولا يُستعمل الضغط إلا إذا ربح مكانا حقا: ففي صورة JPEG أو ملف PDF مضغوط أصلا، سيردّ تدفقا أكبر، ويُخزَّن المدخل حينها كما هو.
أرشيف zip، لفتحه
تُقرأ المداخل المخزَّنة والمداخل المضغوطة بـdeflate، وهذا يغطي جل الأرشيفات الحقيقية. أما المداخل المشفَّرة فتُسمّى وتُترك جانبا، والأرشيفات بصيغة Zip64 تُرفض مع قول ذلك. والعتبة تأتي من الوثيقة المرجعية للصيغة: أكثر من 65535 مدخلا، أو حجم يتجاوز أربعة غيغابايتات.
حدودها
200 ميغابايت لكل ملف
ضغط المتصفح يعمل في الذاكرة، ويجب أن يتسع الأرشيف كاملا فيها في الوقت نفسه مع الملفات الأصلية. وفوق ذلك، يُسقط هاتف تنفد ذاكرته التبويب بدل أن يعطي نتيجة: فالحد معلَن، والأداة ترفض رفضا نظيفا.
الأرشيف المحمي بكلمة مرور لا يُفتح هنا، ونحن لا نصنع واحدا
سببان متمايزان. عند الفتح: التشفير التاريخي لصيغة zip معروف بالضعف، والتشفير الحديث للأرشيفات امتداد مملوك تتعايش منه عدة صيغ؛ ونحن نسمّي المداخل المشفَّرة ونتركها جانبا بدل فك تشفير نصفها. وعند الكتابة: لحماية ملف، تفعل أداة «تشفير ملف» في ركن الأمان خيرا، بطريقة معروضة كاملة وبستمئة ألف تمريرة لصناعة المفتاح، وهذا ما لا يفعله أي أرشيف zip.
أرشيفات Zip64 مرفوضة، وذلك مقول
فوق 65535 مدخلا أو أربعة غيغابايتات، ترتّب الصيغة عدّاداتها في سجل إضافي، وتتشبع الحقول المعتادة عند قيمتها القصوى. ونحن لا نقرأ هذا السجل: وبدل ردّ أرشيف مقروء نصفه، تقول الأداة إنها لا تعرف قراءته. وأرشيف بهذا الحجم يتجاوز على كل حال حد الوزن.
التنزيل لا يستطيع إعادة إنشاء مجلدات
المتصفح ينزّل ملفات، لا أشجار مجلدات. فالمدخل المرتَّب في مجلد فرعي يخرج بمساره مسطَّحا في الاسم، والأداة تقول ذلك. وهذا أيضا ما يبطل فخ المسارات التي تصعد خارج مجلد الاستخراج: فنحن ننزع مقاطع الصعود ونشير إلى ذلك، بدل الاعتماد على المتصفح كي يحمينا.
استخراج عدة مداخل يقتضي إذنا من المتصفح
عند الملف الثاني المنزَّل في الحركة نفسها، يطلب Chrome إذن «تنزيل عدة ملفات»: وشيفرته المصدرية تضع الحد عند خمسين تنزيلا متزامنا وتحفظ جوابكم حتى تغيير العنوان. أما Firefox فقد حاول بناء الحاجز نفسه ولم يسلّمه قط، وسجل علله يقول ذلك. وأما Safari فلم نجد له أي مصدر أول. وهذا غير قابل للالتفاف ولا نسعى إليه: فالإرسالات متباعدة بـ350 ميلي ثانية، ويبقى في وسعكم استخراج مدخل واحد في كل مرة.
الأرشيفات التي نكتبها لا تحمل أي تاريخ
أرشيف zip يسجّل عادة ساعة كل مدخل. وستكون تلك المعلومة الوحيدة عنكم التي ينقلها الملف، مع أن لا المستقبِل ولا الصيغة يحتاجان إليها. لذلك نكتب أقدم تاريخ تجيزه الصيغة، 1 يناير 1980: فأرشيفان مصنوعان من الملفات نفسها متطابقان بايتا ببايت. وهو القرار نفسه المتخذ في أرشيف الأيقونات في ركن الصور.
أسئلة عن هذه الأداة
هل تُرسَل ملفاتي إلى مكان ما؟
لا. افتحوا أداة الفحص بمفتاح F12، وتبويب «الشبكة»، وأفرغوا القائمة، ثم أفلِتوا ملفاتكم واصنعوا الأرشيف: لا يخرج شيء. واقطعوا اتصالكم وأعيدوا الكرّة، تظل الأداة تعمل. وهذه أهم نقطة في أداة أرشفة، لأننا نُفلت فيها عادة كل ما كنا نستعد لإرساله.
لماذا أرشيفي ثقيل تقريبا كملفاتي؟
لأن ملفاتكم مضغوطة أصلا على الأرجح. فصورة بصيغة JPEG، أو ملف PDF، أو فيديو، أو ملف مكتبي حديث: كلها تحتوي ضغطا أصلا، ولم يعد فيها ما يُربَح. والأداة تقول لكم ذلك سطرا سطرا، وهي تخزّن هذه الملفات كما هي بدل أن تكبّرها، وهو ما سيقع بضغطها مرة ثانية. أما ما يُضغط جيدا فهو النص، وجداول الحسابات القديمة، وملفات الشيفرة، والصور بلا فقد.
ما الذي تفعله إعادة القراءة التي تتحدث عنها الصفحة بالضبط؟
بعد كتابة الأرشيف، تعيد الأداة فتحه بقارئها هي، كما سيفعل برنامج آخر: فتجد الفهرس، وتقطع المداخل، وتفك ضغط كل واحد، وتعيد حساب رمز تحققه انطلاقا من البايتات المحصَّلة. فالأرشيف قد تكون بنيته سليمة ورمز تحققه كاذبا: فيمر حينها من كل مراقبات الشكل، ويفشل عند من تراسلونه. وهذا هو المطلب نفسه في كل هذا الموقع: نعيد قراءة الملف المنتَج، ولا نصدّق الأداة على كلمتها.
لماذا لا تخرج الملفات المستخرَجة بمجلداتها؟
لأن المتصفح ينزّل ملفات، لا أشجار مجلدات: فليس عنده أي وسيلة لإنشاء مجلد على جهازكم، وهذا حسن. فالمدخل المرتَّب في مجلد فرعي يخرج بمساره مسطَّحا في اسمه، وهذا يحفظ المعلومة من دون اختراع بنية. وهذا أيضا ما يجعل فخا قديما في الأرشيفات بلا أذى: فالمدخل الذي يصعد مساره خارج مجلد الاستخراج لا يستطيع الكتابة في مكان آخر، ونحن ننظّف اسمه رغم ذلك.
لماذا يطلب مني المتصفح إذنا حين أستخرج عدة ملفات؟
لأن موقعا يطلق عدة تنزيلات بنقرة واحدة سلوك تتوجس منه المتصفحات، وهي محقة. وإذن «تنزيل عدة ملفات» يُطلَب مرة، ومنحه بلا خطر هنا ما دامت الملفات آتية من أرشيفكم أنتم. ونحن نباعد بين الإرسالات بثلاثمئة وخمسين ميلي ثانية، وهذا يتفادى إلغاءها، ويبقى في وسعكم استخراج مدخل واحد في كل مرة.
هل تستطيعون إضافة الحماية بكلمة مرور؟
لا ننوي ذلك، ولسبب جوهري. فالتشفير التاريخي لأرشيفات zip معروف بالضعف منذ زمن؛ والتشفير الحديث امتداد مملوك للصيغة، بعدة صيغ وباختلافات بين البرامج. فسنؤدي عملا ثقيلا لنردّ حماية لا نستطيع أن نقول بأمانة إنها متينة. وأداة التشفير في ركن الأمان تحل المشكلة الحقيقية: فهي تعرض طريقتها كاملة، وتستعمل ستمئة ألف تمريرة لصناعة المفتاح، والملف الناتج يُفك تشفيره في الصفحة نفسها.
هل أستطيع إضافة ملف إلى أرشيف موجود؟
ليس مباشرة: فالأداة تفتح أرشيفا أو تصنع واحدا، وهي لا تعدّله. والطريق أن تستخرجوا ما يهمكم، ثم تعيدوا إفلات كل شيء مع الملف الإضافي. وهي حركة إضافية، لكنها تتفادى صنفا كاملا من المفاجآت السيئة: فالأرشيف المعدَّل في مكانه قد يحتفظ بآثار من محتواه السابق، والأداة التي تعد بـ«تحديث» أرشيف من دون إعادة كتابته كاملا ليست بالنظافة التي تبدو عليها.
المتصفح يعرف الضغط، لكنه لا يعرف حساب رمز تحقق CRC-32 ولا كتابة حاوية zip: وهاتان القطعتان مكتوبتان باليد هنا، والأرشيف المنتَج يُعاد فتحه بقارئنا نحن قبل أن يُردّ إليكم.
التحققالبرهان، خطوة خطوةالتحقق بفاحص الشبكة، مشروحا حركة حركة، مع لقطات الشاشة.
الركنركن شؤون اليومتحويل الوحدات مع ذكر مصدر كل معامل، وحساب التواريخ من دون الوقوع في فخ تغيير التوقيت، وقص تسجيل صوتي، وضغط مجلد. تلك الأدوات التي نبحث عنها مرة في الشهر ولا نجدها أبدا.