Kompatibilitas Runtime
Pilih target sesuai runtime yang sebenarnya. Build untuk peramban dan Node dapat berisi pertahanan yang berbeda; target peramban bukan pengganti untuk Node.
target
browser- Chrome, Firefox, Safari, Edge.browser-no-eval- sama denganbrowser, tetapi keluarannya tidak memakaieval(). Gunakan ketika halaman target memiliki Content Security Policy yang melarangeval/unsafe-eval.node- lingkungan Node.js. Opsi khusus peramban dinonaktifkan (opsi tersebut memerlukanwindow/documentdan akan menjadi no-op atau melempar error di Node). Beberapa pertahananvmSelfDefendingyang bergantung pada API khusus peramban - deteksi peramban headless, pemulihan clean-realm berbasis iframe, pemeriksaan anti-inspector/DOM - tidak dihasilkan untuk target ini.service-worker- konteks Service Worker. Tanpawindow, tanpadocument, dan globalselfyang berbeda.userscript- sandbox pengelola userscript (misalnya Tampermonkey). PertahananvmSelfDefendingdisesuaikan untuk konteks ini. Memerlukan Obfuskasi VM (atau Parse HTML) dan obfuscator v6.9.0+.bytenode- untuk kode yang akan dikompilasi menjadi.jscdengan bytenode. Memerlukan Obfuskasi VM (atau Parse HTML) dan obfuscator v6.13.0+.
Lingkungan peramban dan domain
Deklarasi tentang tempat kode berjalan harus sesuai dengan lingkungan produksi yang sebenarnya. browserEnvironment harus menggambarkan cara build benar-benar disajikan (lihat Browser Environment), dan VM Domain Lock harus mencantumkan setiap domain yang menyajikannya (lihat VM Domain Lock). Otomasi dan debugger dapat memicu pertahanan lanjutan; lihat Pengujian dan CI.
JavaScript
Nama fungsi dan teks sumber fungsi dapat berubah akibat obfuskasi. Jangan memakai .name atau .toString() sebagai data aplikasi yang stabil; gunakan pengenal eksplisit sebagai gantinya. Global publik mungkin tetap terlihat jika diperlukan oleh pengaturan Anda.
strictMode
strictMode: null dan strictMode: false tetap mengenali direktif eksplisit, modul ES, dan metode kelas sebagai strict. strictMode: true memperlakukan semua masukan sebagai strict. Sesuaikan dengan konteks runtime final; bundler yang menambahkan strict mode setelah obfuskasi dapat mengubah perilaku.
Pipeline build
Kompilasi TypeScript atau JSX dan bundel aplikasi Anda sebelum langkah obfuskasi terakhir. Pertahankan komentar /* javascript-obfuscator:vm */ selama build tersebut agar mode komentar masih dapat menemukannya. Jangan minifikasi, format, atau menulis ulang keluaran Self Defending atau VM Self Defending dengan cara lain sesudahnya. Source map tidak tersedia untuk obfuskasi VM dan HTML.
