بيئة المتصفح
أعلِن عن كيفية تقديم نسخة الإنتاج حتى يتمكن الكود المحمي من ربط سلامته بها.
يعلن خيار browserEnvironment حقائق عن البيئة التي تُقدَّم فيها نسخة الإنتاج، بحيث يمكن للكود المحمي أن يربط نفسه بها أو يتفاعل معها. إنه كائن صغير، ويسري مفعول كل حقل منه مع حماية محددة واحدة — أما بمفرده فلا يفعل الخيار شيئًا:
browserEnvironment: { transport: 'https', hosting: 'remote' }
transport
المخطط الذي تُقدَّم عبره الحزمة في الإنتاج — 'http' أو 'https'. يسري مفعوله مع vmSelfDefending.
مع 'https'، فإن نسخة يقدّمها من يقوم بالهندسة العكسية عبر HTTP عادي لن تعمل بشكل صحيح. أما 'http' أو ترك الحقل غير مضبوط فلا يضيف تلك الحماية.
hosting
المكان الذي تُقدَّم منه حزمة الإنتاج — 'remote' أو 'local'. يسري مفعوله مع vmDebugProtection، وعلى الهدفين browser وbrowser-no-eval فقط. يتطلب إصدار أداة التشويش 7.14.0 أو أحدث.
مع 'remote'، تُعامَل النسخة التي يأخذها من يقوم بالهندسة العكسية ويشغّلها في بيئته المحلية على أنها عدم تطابق في بيئة التشغيل، وتتفاعل دفاعات الأتمتة وفق ما هو مضبوط في vmDefenseReaction. أما 'local' أو ترك الحقل غير مضبوط فلا يضيف تلك الحماية.
الأهداف المدعومة
ينطبق browserEnvironment فقط على الأهداف browser وbrowser-no-eval وservice-worker. أما node وuserscript وbytenode فيُرفَض الخيار لها — إذ تفشل عملية التشويش بخطأ تحقّق بدلًا من تجاهل الإعداد بصمت. وhosting أضيق نطاقًا: يُقبل مع service worker لكنه لا يربط شيئًا هناك.
المتطلبات
- يسري
transportمعvmSelfDefending، وhostingمعvmDebugProtection؛ ولا تأثير لأيٍّ منهما بخلاف ذلك. - هدف
browserأوbrowser-no-evalأوservice-worker(browserأوbrowser-no-evalلـhosting). - إصدار أداة التشويش 7.9.0 أو أحدث لـ
transport، و7.14.0 أو أحدث لـhosting.
مثال
JavaScriptObfuscator.obfuscate(code, {
vmObfuscation: true,
vmSelfDefending: true,
vmDebugProtection: true,
target: 'browser',
browserEnvironment: { transport: 'https', hosting: 'remote' }
});