Fungsinya
Obfuscator JavaScript menulis ulang script sehingga tetap berjalan persis sama tetapi jauh lebih sulit dibaca dan disalin orang. Nama variabel dan fungsi menjadi identifier tanpa makna seperti _0x3f2a, string literal dipindahkan ke tabel lookup yang di-encode, dan pada level yang lebih tinggi alur kontrol diacak serta dead code dicampurkan.
Alat ini berguna untuk game browser, demo, widget, dan pengecekan lisensi yang Anda kirim sebagai JavaScript biasa dan tidak ingin disalin mentah-mentah.
Cara menggunakan
- Tempel JavaScript Anda atau buka file
.js. - Pilih Kekuatan:
- Rendah mengganti nama lokal dan memindahkan string ke array lookup. Output tetap cepat dan cukup kecil.
- Sedang menambahkan string yang di-encode, control-flow flattening, dan sedikit dead code.
- Tinggi menerapkan semuanya dengan kekuatan penuh. Hasilnya bisa berkali-kali lebih besar dan terasa lebih lambat.
- Aktifkan Ganti nama global hanya jika tidak ada apa pun di luar script yang merujuk ke fungsi atau variabel top-level-nya.
- Matikan Output satu baris jika Anda ingin hasilnya tersebar di beberapa baris.
- Salin atau unduh kode hasil obfuscation dan uji sebelum di-deploy.
Contoh
Contohnya mendefinisikan fungsi greet dan penghitung kunjungan. Setelah obfuscation dengan kekuatan rendah, kodenya menjadi satu baris berisi nama-nama heksadesimal, tetapi saat dijalankan tetap mencetak Hello, Ada! You have visited 1 time(s).
Obfuscation versus minify
Minify, seperti yang dilakukan minifier JavaScript dan CSS, menghapus whitespace dan menyingkat nama agar file lebih kecil dan lebih cepat diunduh. Obfuscation justru sebaliknya dalam hal ukuran: sengaja menambahkan lapisan tidak langsung agar kode lebih sulit dipahami. Banyak proyek me-minify semuanya dan hanya meng-obfuscate sedikit file yang berisi logika yang layak dilindungi.
Batasan
Obfuscation tidak bisa melindungi rahasia. Apa pun yang bisa dijalankan browser pada akhirnya bisa diperiksa pengguna, jadi simpan API key dan aturan bisnis yang harus tetap privat di server Anda. Pengaturan yang berat juga memperlambat kode, jadi hindari untuk loop yang sering dieksekusi dan halaman yang sensitif terhadap performa.
FAQ
› Apakah obfuscation mengubah perilaku kode saya?
Tidak. Script hasil obfuscation berperilaku sama dengan aslinya; hanya bentuknya yang berubah. Selalu jalankan tes Anda terhadap build hasil obfuscation, karena kode yang memeriksa source atau nama fungsinya sendiri bisa berperilaku berbeda.
› Bisakah kode hasil obfuscation dikembalikan?
Tidak sepenuhnya, tetapi orang yang gigih dan punya waktu tetap bisa memahami apa yang dilakukannya. Anggap obfuscation sebagai polisi tidur untuk mencegah penyalinan iseng, jangan pernah sebagai tempat menyembunyikan rahasia seperti API key.
› Kapan sebaiknya saya mengaktifkan Ganti nama global?
Hanya jika script-nya berdiri sendiri. Mengganti nama global akan merusak atribut HTML, script lain, atau tes yang memanggil fungsi top-level Anda berdasarkan namanya.
› Apakah kode saya diunggah?
Tidak. Obfuscation berjalan di browser Anda dengan library open source javascript-obfuscator.