ما الذي تعكسه هذه الأداة
تعيد الكثير من أدوات تشويش جافاسكريبت — بما فيها الأداة الموجودة في هذا الموقع نفسه — كتابة الكود عبر مجموعة صغيرة وميكانيكية من التحويلات الثابتة: تنقل كل نص حرفي إلى مصفوفة واحدة وتستبدل كل استخدام باستدعاء دالة استرجاع، وتُهرب الأحرف العادية كسلاسل \xNN أو \uNNNN، وتوسّع الحسابات البسيطة إلى تعبيرات مكافئة لكن أطول، وتغلّف الكود الحقيقي داخل شرط if صحيح دائمًا أو خاطئ دائمًا، وتعيد كتابة a.b كـ a['b']. تعكس هذه الأداة هذه الأمور الخمسة بالضبط:
- دمج مصفوفة النصوص — تجد النمط
var _s = ["foo", "bar"]; function _g(i){ return _s[i]; }وتستبدل كل استدعاء من نوع_g(0)يكون فيه الفهرس رقمًا حرفيًا بالنص الفعلي، ثم تحذف المصفوفة والدالة إذا لم يعد يستخدمهما شيء آخر. - فك تشفير الهروب — تعرض
\x48\x69كـHiبدل الصيغة المهربة. - طي الثوابت — تحوّل
1 + 2إلى3، و"a" + "b"إلى"ab"، وحسابات حرفية مشابهة، مع تجنب أي شيء يتطلب التخمين (مثل القسمة على صفر حرفي). - حذف الفروع الميتة — يصبح
if (true) { A } else { B }مجردA؛ ويختفيwhile (false) {}تمامًا. - من الأقواس إلى النقطة — يصبح
obj['name']هوobj.nameعندما يكونnameمعرّفًا صالحًا.
ما لا تفعله
هذه مطابقة أنماط ثابتة على شجرة تركيب مجردة (AST)، وليست أداة فك تشويش عامة. لا تُنفّذ أي كود، لذا لا يمكنها فك حزمة محمّل يعتمد على eval، أو حل شرط غامض يعتمد على قيمة وقت التشغيل، أو عكس تسطيح تدفق التحكم بعيدًا عن حالة if/while/الشرط الثلاثي الحرفية البسيطة أعلاه. تُترك أسماء المتغيرات كما هي — يبقى _0x1a2b كما هو. إذا لم يتطابق ملفك تمامًا مع شكل مصفوفة النصوص + دالة الاسترجاع، تُبلّغ تلك المرحلة ببساطة عن صفر استدعاءات مُدمجة بدلًا من تخمين نمط آخر.
كيف تعمل
يُحلَّل الكود إلى شجرة AST باستخدام acorn، ويُجتاز ويُعاد كتابته بتحويلات مكتوبة يدويًا لا تعمل إلا عندما تكون القيمة حرفية بشكل مثبت مسبقًا، ثم يُعاد توليده باستخدام astring. لا يُرسل شيء إلى أي خادم: يحدث التحليل وإعادة الكتابة بالكامل في متصفحك.
طريقة الاستخدام
الصق أو اكتب كود جافاسكريبت في المحرر ثم شغّله. يعرض الملخص بالضبط عدد مرات تفعيل كل مرحلة، لترى ما تغيّر وما لم يتغيّر. انسخ النتيجة أو حمّلها كملف .js.
Tiny Online Tools







