توافق بيئة التشغيل
اختر target لبيئة التشغيل الفعلية. قد تحتوي بناءات المتصفح وNode على دفاعات مختلفة؛ وهدف المتصفح لا يحل محل Node.
target
browser: Chrome وFirefox وSafari وEdge.browser-no-eval: مثلbrowser، لكن الناتج لا يستخدمeval(). استخدمه عندما تحتوي الصفحة المستهدفة على سياسة أمان محتوى (CSP) تمنعeval/unsafe-eval.node: بيئة Node.js. تُعطَّل الخيارات الخاصة بالمتصفح (فهي تتطلبwindow/documentوستكون بلا أثر أو ترمي خطأ في Node). بعض دفاعاتvmSelfDefendingالتي تعتمد على واجهات خاصة بالمتصفح، مثل كشف المتصفحات دون واجهة، واستعادة مجال تنفيذ (realm) نظيف عبر iframe، وفحوصات مكافحة أدوات الفحص وDOM، لا تُضمَّن لهذا الهدف.service-worker: سياق Service Worker. لا يوجدwindowولاdocument، والكائن العامselfمختلف.userscript: بيئة معزولة لمدير سكربتات المستخدم (مثل Tampermonkey). تُعدَّل دفاعاتvmSelfDefendingوفقًا لذلك. يتطلب تشويش VM (أو خيار Parse HTML) والمشوِّش v6.9.0+.bytenode: للكود الذي سيُترجَم إلى.jscباستخدام bytenode. يتطلب تشويش VM (أو خيار Parse HTML) والمشوِّش v6.13.0+.
بيئة المتصفح والنطاقات
يجب أن تطابق التصريحات المتعلقة بمكان تشغيل الكود بيئة النشر الفعلية. فيجب أن يصف browserEnvironment الطريقة التي يُقدَّم بها البناء فعليًا (راجع Browser Environment)، ويجب أن يسرد خيار VM Domain Lock كل نطاق يقدّمه (راجع VM Domain Lock). وقد تُطلق أدوات الأتمتة والمنقِّحات الدفاعات المتقدمة؛ راجع الاختبار وCI.
JavaScript
قد تتغير أسماء الدوال ونصوصها المصدرية بفعل التشويش. لا تستخدم .name أو .toString() كبيانات تطبيق ثابتة؛ استخدم معرِّفات صريحة بدلًا من ذلك. قد تبقى المتغيرات العامة المكشوفة ظاهرة عندما تتطلبها إعداداتك.
strictMode
مع strictMode: null وstrictMode: false لا تزال التوجيهات الصريحة ووحدات ES وتوابع الأصناف تُعامَل على أنها صارمة. أما strictMode: true فيعامل كل المدخلات على أنها صارمة. طابِق سياق التشغيل النهائي؛ فالمجمِّع الذي يضيف الوضع الصارم بعد التشويش قد يغيّر السلوك.
خط البناء
جمّع TypeScript أو JSX وحزّم تطبيقك قبل خطوة التشويش النهائية. احتفظ بتعليقات /* javascript-obfuscator:vm */ خلال ذلك البناء كي يظل وضع التعليقات قادرًا على العثور عليها. لا تصغّر الناتج المحمي بخيار Self Defending أو VM Self Defending ولا تنسّقه ولا تُعِد كتابته بأي شكل بعد ذلك. خرائط المصدر غير متاحة لتشويش VM وتشويش HTML.
