रनटाइम संगतता
वास्तविक रनटाइम के लिए target चुनें। Browser और Node बिल्ड में अलग सुरक्षा हो सकती है; Browser target, Node का विकल्प नहीं है। वातावरण घोषणाएँ, डोमेन सीमाएँ और रनटाइम टूल भी कॉन्फ़िगरेशन से मेल खाने चाहिए।
target
browser- Chrome, Firefox, Safari, Edge.browser-no-eval-browserजैसा ही, लेकिन आउटपुटeval()का उपयोग नहीं करता। इसे तब चुनें जब टारगेट पेज की Content Security Policyeval/unsafe-evalको मना करती हो।node- Node.js एनवायरनमेंट। ब्राउज़र-विशिष्ट विकल्प बंद रहते हैं (उन्हेंwindow/documentचाहिए और Node में वे बेअसर होंगे या एरर देंगे)।vmSelfDefendingके कुछ बचाव जो सिर्फ़ ब्राउज़र वाली API पर निर्भर हैं - हेडलेस-ब्राउज़र डिटेक्शन, iframe-आधारित क्लीन-रेल्म रिकवरी, एंटी-इंस्पेक्टर/DOM जाँच - इस टारगेट के लिए नहीं जोड़े जाते।service-worker- Service Worker संदर्भ। नwindow, नdocument, औरselfग्लोबल अलग होता है।userscript- यूज़रस्क्रिप्ट मैनेजर सैंडबॉक्स (जैसे Tampermonkey)।vmSelfDefendingके बचाव उसी हिसाब से समायोजित होते हैं। इसके लिए ऑब्फ़स्केटर v6.9.0+ चाहिए।bytenode- उस कोड के लिए जिसे bytenode से.jscमें कंपाइल किया जाएगा। इसके लिए ऑब्फ़स्केटर v6.13.0+ चाहिए।
JavaScript
ऑब्फ़स्केशन से फ़ंक्शन नाम और स्रोत पाठ बदल सकते हैं। .name या .toString() को स्थिर ऐप डेटा न मानें; स्पष्ट पहचानकर्ता उपयोग करें। सेटिंग्स के अनुसार सार्वजनिक ग्लोबल नाम दिखाई दे सकते हैं।
strictMode
strictMode: null और strictMode: false भी स्पष्ट निर्देशों, ES मॉड्यूल और क्लास मेथड को strict पहचानते हैं। strictMode: true पूरे इनपुट को strict मानता है। अंतिम रनटाइम से मिलान करें; ऑब्फ़स्केशन के बाद बंडलर द्वारा strict mode जोड़ने से व्यवहार बदल सकता है।
CLI / API
अंतिम ऑब्फ़स्केशन से पहले TypeScript या JSX संकलित करें और ऐप बंडल करें। VM चयन टिप्पणियाँ उस चरण तक रखें। Self Defending आउटपुट को बाद में मिनिफ़ाई, फ़ॉर्मैट या संशोधित न करें। VM और HTML ऑब्फ़स्केशन में सोर्स मैप उपलब्ध नहीं हैं। एजेंट, ऑटोमेशन या डीबगर का उपयोग करने वाले कार्यात्मक परीक्षणों के लिए टेस्टिंग और CI देखें।
