Dokumentasi
/

Kompatibilitas Runtime

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 dengan browser, tetapi keluarannya tidak memakai eval(). Gunakan ketika halaman target memiliki Content Security Policy yang melarang eval/unsafe-eval.
  • node - lingkungan Node.js. Opsi khusus peramban dinonaktifkan (opsi tersebut memerlukan window/document dan akan menjadi no-op atau melempar error di Node). Beberapa pertahanan vmSelfDefending yang 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. Tanpa window, tanpa document, dan global self yang berbeda.
  • userscript - sandbox pengelola userscript (misalnya Tampermonkey). Pertahanan vmSelfDefending disesuaikan untuk konteks ini. Memerlukan Obfuskasi VM (atau Parse HTML) dan obfuscator v6.9.0+.
  • bytenode - untuk kode yang akan dikompilasi menjadi .jsc dengan 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.