Salah satu perkara paling menarik yang anda pelajari dalam perjalanan awal anda dalam pembangunan web ialah cara untuk meniru tapak web dengan hanya menyalin kod sumber daripada halaman alat pembangun. Ramai pembangun mendapati ini membantu, tetapi ini tidak berlaku dengan pembangun yang membina tapak web ini dan pemilik tapak web.
Pemilik tapak web ini biasanya takut dan bimbang tentang kecurian kod pihak pelanggan mereka (HTML, CSS dan JavaScript). Ini memberikan mereka hanya satu pilihan: untuk mencari penyelesaian untuk menghalang penyalinan tanpa kebenaran atau penyalahgunaan kod sumber mereka.
Satu penyelesaian yang memenuhi keperluan pemilik tapak web ini ialah teknik yang dipanggil JavaScript Obfuscation. Secara ringkasnya, JavaScript obfuscation ialah tindakan menukar kod JavaScript yang boleh dibaca manusia kepada format kompleks yang sukar difahami oleh manusia.
Memandangkan ada dua sisi pada syiling, JavaScript obfuscation turut mempunyai rakan sejawatannya yang dipanggil JavaScript deobfuscation. Daripada namanya, anda sudah boleh mengetahui bahawa ia adalah tindakan yang bertentangan dengan pengeliruan JavaScript, dengan itu menukar kod JavaScript yang telah dikaburkan kepada format yang boleh dibaca manusia.
Nota: Dalam kebanyakan kes, nyahkeliruan JavaScript tidak membawa kod yang dikaburkan kepada bentuk asalnya, walaupun kadangkala anda mendapat bentuk asal. Adalah selamat untuk mengatakan bahawa penyahkeliruan JavaScript tidak menjanjikan anda kod JavaScript asal tetapi kod yang boleh anda baca dan fahami.
Kita belajar lebih baik dengan berlatih, jadi mari kita teroka bahagian praktikal semua penjelasan teori dalam bahagian pengenalan panduan ini.
Untuk menguji teknik ini, anda memerlukan kod JavaScript. Dengan itu, mari kita buat kod JavaScript ringkas yang mentakrifkan pembolehubah dan mengeluarkan rentetan berdasarkan bilangan kali gelung for dijalankan.
const no_loop_cycle = 5 for (let i = 0; i < no_loop_cycle; i++) { console.log("String ", i) }
Sekarang anda mempunyai kod JavaScript untuk ujian pergi ke Alat Obfuscator JavaScript, alat percuma untuk mengelirukan kod JavaScript.
Tampal contoh kod JavaScript ke dalam alat dan klik butang Obfuscate.
Berikut ialah perkara yang anda akan dapat sebagai output:
function _0xb78f(_0x2224cc,_0x217706){const _0x44095f=_0x4409();return _0xb78f=function(_0xb78f5c,_0x2ff516){_0xb78f5c=_0xb78f5c-0xd3;let _0x60ee28=_0x44095f[_0xb78f5c];return _0x60ee28;},_0xb78f(_0x2224cc,_0x217706);}const _0x5f75f2=_0xb78f;(function(_0x2c5162,_0x14873c){const _0x4e4ef7=_0xb78f,_0x5a8a62=_0x2c5162();while(!![]){try{const _0x1b7f08=parseInt(_0x4e4ef7(0xdb))/0x1*(-parseInt(_0x4e4ef7(0xdc))/0x2)+parseInt(_0x4e4ef7(0xdd))/0x3+-parseInt(_0x4e4ef7(0xd9))/0x4*(parseInt(_0x4e4ef7(0xd4))/0x5)+-parseInt(_0x4e4ef7(0xde))/0x6+parseInt(_0x4e4ef7(0xd6))/0x7*(-parseInt(_0x4e4ef7(0xd3))/0x8)+parseInt(_0x4e4ef7(0xd5))/0x9+parseInt(_0x4e4ef7(0xd7))/0xa;if(_0x1b7f08===_0x14873c)break;else _0x5a8a62['push'](_0x5a8a62['shift']());}catch(_0x153236){_0x5a8a62['push'](_0x5a8a62['shift']());}}}(_0x4409,0x71eba));const no_loop_cycle=0x5;for(let i=0x0;i<no_loop_cycle;i++){console[_0x5f75f2(0xda)](_0x5f75f2(0xd8),i);}function _0x4409(){const _0x5189f4=['2031897OhIMeN','15423690UOVACr','String\x20','1326068tySTtA','log','1CErZVM','245842QiNqEk','1819539wUQmJB','4133556arqvkn','16ZAFmnL','10OzrKck','3358431pZHaXs'];_0x4409=function(){return _0x5189f4;};return _0x4409();}
Tampal kod yang dikelirukan ini ke dalam editor kod anda dan jalankan untuk mengesahkan ketepatannya. Anda akan melihat bahawa ia memberikan output yang sama seperti kod asal.
Sekarang anda telah melihat pengeliruan JavaScript sedang beraksi, ia akan menjadi sama menggembirakan untuk mencuba nyahkeliruan JavaScript. Salin kod yang dikaburkan di atas dan tampalkannya ke dalam alat yang dikaburkan percuma ini.
Menggunakan alat deobfuscator itu akan memberi anda kod berikut:
const no_loop_cycle = 5 for (let i = 0; i < no_loop_cycle; i++) { console.log("String ", i) }
Kod yang dikembalikan selepas dinyahkelirukan adalah serupa dengan kod JavaScript asal tetapi dengan hanya sedikit perbezaan. Ini mengesahkan bahawa anda biasanya tidak mendapat kod JavaScript sebenar tetapi kod dalam format yang boleh dibaca yang anda boleh fahami.
Kebanyakan tapak web sangat bergantung pada membenamkan teknik mereka untuk menghalang pengguna yang tidak dibenarkan, terutamanya dalam kod JavaScript kerana ia bertanggungjawab untuk interaksi pengguna asas (kebanyakan perkara yang memerlukan anda berinteraksi dengan tapak web dilaksanakan menggunakan JavaScript).
Teknik ini kebanyakannya adalah penyimpangan JavaScript, di mana penyahkeliruan JavaScript dimainkan. Ia membantu menangani kejadian sedemikian, terutamanya apabila mengikis web.
Penyahkeliruan JavaScript membantu menjadikan kod lebih mudah dibaca, membolehkan anda memahami skrip dengan lebih baik, mensimulasikan interaksi anda dan mengikis data yang dijangkakan dengan betul.
Kekeliruan JavaScript malah menimbulkan lebih banyak mekanisme anti-mengikis, seperti sekuriti anti-bot, bilik menunggu Cloudflare dan satu siri teka-teki CAPTCHA. Walaupun terdapat cabaran ini, penyahkeliruan JavaScript masih diteruskan kerana ia membantu memintas dan merekayasa balik cabaran ini.
Penyahkeliruan JavaScript mengambil proses berikut:
Penyelesaian yang sempurna untuk nyahkeliruan JavaScript ialah gabungan kemahiran menyelesaikan masalah anda, keupayaan anda untuk mengecam corak dalam kod yang dikelirukan dan penggunaan alatan teknikal.
Jika anda mempunyai alatan yang diperlukan untuk memformatkan kod anda, Chrome DevTools untuk mengakses dan menganalisis kod yang dikelirukan, pustaka pihak ketiga luaran seperti uglify-js untuk menghuraikan dan meminimumkan kod serta alatan penyahpepijatan, anda boleh melihat melalui mana-mana contoh pengeliruan JavaScript .
Untuk mempercepatkan perkara, anda boleh menggunakan mana-mana alat deobfuscator JavaScript atau yang digunakan dalam panduan ini.
Atas ialah kandungan terperinci Menyahkod JavaScript: Panduan untuk Menyahkeliru. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!