ماذا تفعل الأداة
تعيد أداة تشويش JavaScript كتابة السكربت بحيث يظل يعمل بالطريقة نفسها تمامًا لكنه يصبح أصعب بكثير على البشر قراءةً ونسخًا. تتحوّل أسماء المتغيّرات والدوال إلى معرّفات بلا معنى مثل _0x3f2a، وتنتقل النصوص الحرفية إلى جدول بحث مرمَّز، وفي المستويات الأعلى يُخلط تدفق التحكم ويُمزج به كود ميت.
وهي مفيدة لألعاب المتصفح والعروض التوضيحية والودجات وفحوص التراخيص التي تنشرها كـ JavaScript عادي ولا تريد أن تُنسخ حرفيًا.
طريقة الاستخدام
- الصق كود JavaScript أو افتح ملف
.js. - اختر القوة:
- منخفضة تعيد تسمية الأسماء المحلية وتنقل النصوص إلى مصفوفة بحث. وتبقى المخرجات سريعة وصغيرة نسبيًا.
- متوسطة تضيف ترميز النصوص وتسطيح تدفق التحكم وبعض الكود الميت.
- عالية تطبّق كل شيء بأقصى قوة. وقد تكون النتيجة أكبر بأضعاف كثيرة وأبطأ بشكل ملحوظ.
- فعّل إعادة تسمية الأسماء العامة فقط إذا لم يكن هناك شيء خارج السكربت يشير إلى دواله أو متغيّراته ذات المستوى الأعلى.
- أوقف مخرجات في سطر واحد إذا أردت توزيع النتيجة على عدة أسطر.
- انسخ الكود المشوَّش أو نزّله واختبره قبل النشر.
مثال
يعرّف المثال دالة greet وعدّادًا للزيارات. بعد التشويش بقوة منخفضة يصبح الكود سطرًا واحدًا من الأسماء الست عشرية، ومع ذلك يطبع عند تشغيله Hello, Ada! You have visited 1 time(s).
التشويش مقابل التصغير
التصغير، كما تفعله أداة تصغير JavaScript وCSS، يحذف المسافات البيضاء ويقصّر الأسماء لجعل الملفات أصغر وأسرع في التنزيل. أما التشويش فيسير في الاتجاه المعاكس من حيث الحجم: فهو يضيف عمدًا طبقات غير مباشرة ليجعل الكود أصعب فهمًا. وكثير من المشاريع تصغّر كل شيء ولا تشوّش إلا الملفات القليلة التي تحتوي على منطق يستحق الحماية.
الحدود
لا يستطيع التشويش حماية الأسرار. فكل ما يستطيع المتصفح تشغيله يستطيع المستخدم فحصه في النهاية، لذا احتفظ بمفاتيح API وقواعد العمل التي يجب أن تبقى خاصة على خادمك. كما تُبطئ الإعدادات الثقيلة الكود، فتجنّبها في الحلقات الساخنة والصفحات الحسّاسة للأداء.
الأسئلة الشائعة
› هل يغيّر التشويش ما يفعله الكود الخاص بي؟
لا. يتصرف السكربت المشوَّش تمامًا مثل الأصلي، ولا يتغيّر إلا شكله. شغّل اختباراتك دائمًا على النسخة المشوَّشة، لأن الكود الذي يفحص مصدره أو أسماء دواله قد يتصرف بشكل مختلف.
› هل يمكن عكس الكود المشوَّش؟
ليس بالكامل، لكن شخصًا مصمّمًا لديه الوقت يستطيع مع ذلك أن يفهم ما يفعله. تعامل مع التشويش كمطبّ يبطئ النسخ العابر، ولا تعتبره أبدًا مكانًا لإخفاء أسرار مثل مفاتيح API.
› متى يجب تفعيل إعادة تسمية الأسماء العامة؟
فقط عندما يكون السكربت مستقلًا بذاته. فإعادة تسمية الأسماء العامة تُعطّل سمات HTML أو السكربتات الأخرى أو الاختبارات التي تستدعي دوالك ذات المستوى الأعلى بأسمائها.
› هل يُرفع الكود الخاص بي؟
لا. يجري التشويش في متصفحك باستخدام مكتبة javascript-obfuscator مفتوحة المصدر.