التوثيق
/

توافق بيئة التشغيل

توافق بيئة التشغيل

اختر 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.