Skrip dan Extension untuk Browsing

Sekarang ini banyak waktu saya habiskan di browser, bahkan ketika melakukan programming sekalipun perlu sering mencari solusi dengan Google. Untuk mempernyaman browsing, saya menggunakan berbagai browser extension baik yang diterbitkan resmi atau buatan sendiri plus beberapa bookmarklet.

Untuk yang belum tahu: browser extension adalah program yang bisa ditambahkan ke browser untuk menambah atau mengubah fungsionalits tertentu.  Supaya lebih singkat, berikutnya extension yang saya maksud di artikel ini adalah browser extension.

Salah satu contoh extension paling populer adalah untuk memblokir iklan. Ini membuat browsing jadi lebih nyaman, lebih cepat dan lebih hemat data. Extension lain yang banyak digunakan orang adalah password manager untuk mengingat password berbagai situs.

Semua browser modern saat ini mendukung extension. Browser yang saya gunakan sehari-hari adalah Chrome dan Firefox, tapi informasi yang saya tuliskan di sini berlaku untuk browser lain juga (semua browser sudah mendukung extension).

Dulu saya cukup percaya berbagai extension yang ada, tapi lama-lama kepercayaan itu mulai hilang. Ada banyak kasus yang menyebabkan saya kurang percaya, baik itu karena bug parah, karena kecerobohan developer, atau keserakahan developer.

Contoh bug parah adalah di extension Last Pass, program password manager. Beberapa kali bug penting ditemukan di extension ini yang memungkinkan orang jahat untuk mengambil semua password kita, dan bahkan dalam kondisi tertentu bisa menjalankan program (misalnya malware) di komputer kita. Saya sempat memakai extension ini, lalu segera menguninstall setelah beberapa kali bug semacam ini muncul.

Contoh yang ceroboh: ada extension “Web Developer” yang penggunanya ada 1 juta extensionnya “dibajak” dengan phishing email. Sang penjahat mengambil alih account developer lalu mengupload versi baru extension dengan perubahan. Pembajak  mengubah extension untuk menginjeksi iklan ke halaman yang dikunjungi, dan mencuri password Cloudflare tapi Andaikan pembajak jahat maka bisa digunakan untuk mencuri password apa saja (termasuk juga situs Bank).

Contoh yang serakah: sebagian extension yang usernya banyak dijual ke pihak lain, dan pihak yang baru ini biasanya akan mencoba mencari uang dengan cara apapun. Kadang sebuah extension tidak dijual tapi bekerjasama dengan pihak lain yang meminta timbal balik (ini salah satu contohnya).

Untuk dapat mengubah halaman web yang kita kunjungi, maka sebuah extension perlu punya akses ke halaman yang kita kunjungi. Ini artinya sebuah extension yang jahat bisa mencuri password ataupun data lainnya, atau menjalankan skrip apapun (misalnya crypto miners). Secara umum semua extension (terutama yang memiliki permission berbahaya) bisa memiliki bug, bisa jatuh ke tangan yang salah karena kecerobohan developer, dan bisa juga dijual ke pihak lain.

Sekarang saya mengurangi jumlah extension yang saya pakai dan memperhatikan berita untuk berbagai extension yang saya pakai. Contoh: dulu saya memakai AdBlock plus, tapi setelah pembuat extension ini bekerja sama dengan berbagai pihak agar iklan bisa diloloskan, maka saya berpindah ke uBlock Origin.

Chrome dan Firefox mendukung penggunaan profile untuk memisahkan beberapa account (misalnya account pekerjaan dan account rumah). Untuk berbagai jenis pekerjaan, saya memakai profile browser tersendiri. Tiap profile bisa memiliki extension sendiri. Jadi misalnya saya ingin melakukan pentesting, saya bisa memakai profile khusus dengan berbagai extension khusus pentesting.

Saat ini saya percaya berbagai extension dari pembuat browser (extension dari Google untuk Chrome dan extension dari Mozilla untuk Firefox).  Tapi tidak langsung percaya pada extension yang populer karena belajar dari kasus extension “Web Developer”: popularitas sebuah extension bukan jaminan bahwa itu akan aman.

Waktu tahun-tahun pertama memakai Firefox, ada extension Grease Monkey. Dengan ini kita bisa membuat skrip sendiri (atau menggunakan skrip orang lain) untuk mengubah perilaku sebuah situs. Salah satu yang pernah saya publish dulu adalah untuk otomatis membuka tag spoiler di kaskus. Dulu ada situs userscripts.org yang menghosting semua skrip ini, tapi sekarang sudah down. Saat ini ada beberapa extension pengganti Grease Monkey dan ada situs pengganti userscripts.org, tapi semuanya agak kurang meyakinkan dari sisi security.

Di browser kita bisa membuat bookmark dan isinya adalah URL javascript, istilahnya bookmarklet. Dengan bookmarklet  kita bisa menjalankan skrip kecil. Ini bisa menjadi alternatif untuk extension. Saya memakai beberapa bookmarklet buatan orang lain (biasanya kodenya singkat dan bisa dengan mudah dimengerti) dan membuat beberapa bookmarklet sendiri.

Bookmarklet buatan saya biasanya untuk mengatasi beberapa site yang menyebalkan. Contohnya di salah satu situs banking yang saya pakai di sini mematikan semua fungsi copy paste di situs tersebut, sehingga saya tidak bisa copy paste nomor ID untuk membayar tagihan internet (padahal nomornya panjang) dan entah kenapa untuk jenis tagihan ini tidak bisa disimpan sebagai favorit. Dengan bookmarklet sederhana, saya bisa memasukkan nomor pelanggan ini langsung. Contoh skripnya kira-kira seperti ini:

javascript:document.querySelector(“#ctl00_ctl00_C_CW_txtRef2”).value = “nomoridsaya”;

Ada beberapa situs menyebalkan sejenis ini: meminta banyak input tapi tidak bisa disimpan jadi harus selalu entry ulang. Menurut saya bookmarklet adalah yang termudah dan teraman. Alternatif lain saya perlu menggunakan extension khusus untuk mengaktifkan kembali copy paste, tapi ini menambah kekhawatiran karena ada kemungkinan malah extension tersebut mencuri password saya (mungkin versi saat ini aman, tapi ketika auto update ternyata sudah dibajak orang lain).

Selain menggunakan bookmarklet, sekarang saya mulai memilih untuk membuat extension sendiri. Saat ini extension sudah sangat mudah dibuat dan didebug, dan fiturnya bisa lebih banyak dari userscript maupun bookmarklet (sebuah extension bisa memiliki ikon di toolbar, bisa sinkronisasi data antar browser, dsb). Firefox dan Chrome juga sudah memakai API yang serupa (web extension API). Mozilla juga membuat polyfill agar extension bisa kompatibel di kedua browser.

Mozilla dan Google memiliki tutorial yang bagus untuk mulai membuat extension sendiri. Tutorial dari Google bisa diakses di sini dan Mozilla di sini. Versi Mozilla menurut saya lebih bagus karena penjelasannya lebih cross platform. Selain tutorial, ada banyak contoh kode yang disediakan yang oleh Chrome dan Mozilla.

Jika Anda programmer yang sudah lama tidak menyentuh Javascript, perlu diperhatikan dengan seksama bahwa ada banyak fitur security yang diaktifkan di sebuah extension, misalnya CSP (content security policy) yang memblok inline javascript (tidak bisa “onlick=fungsi() “di tag html), dan berbagai aksi butuh permission di manifest.json.

Setelah membuat extension untuk satu browser, kita juga ingin agar extension itu bisa dipakai di browser lain di komputer lain, misalnya di rumah dan kantor atau laptop dan desktop. Di Chrome kita bisa membuat extension yang diterbitkan di Chrome Web Store, tapi statusnya unlisted sehingga orang lain tidak bisa menginstall extension tersebut jika tidak tahu URLnya (URL-nya panjang dan random). Selain itu kita juga bisa mempublish secara private untuk account kita sendiri. Dengan cara ini extension yang dibuat bisa dipakai di semua browser yang kita miliki. Di Firefox kita bisa menghosting sendiri extension yang kita miliki di web sendiri (atau bisa ditaruh di Dropbox/File sharing lain).

Di satu sisi, extension buatan sendiri bisa sangat aman, apalagi kalau orang lain tidak mengetahui apapun tentang extension yang kita buat. Tapi extension juga bisa memiliki bug, dan ada kemungkinan bisa dieksploitasi orang lain (lihat kasus Last Pass di atas). Saya memisahkan antara extension yang penting (ada kemungkinan menyentuh data penting), dan yang kurang penting, supaya jika satu “jebol”, yang lain tidak terpengaruh.

Dengan extension buatan sendiri, hal-hal yang sangat spesifik bisa saya dapatkan. Contoh kecil yang baru saya buat adalah ini: ketika mengunjungi situs bitcoin di Thailand (bx.in.th) saya selalu ingin membandingkan dengan situs bitcoin Indonesia (bitcoin.co.id). Kadang jika ada masalah spesifik di satu negara , harga bitcoin bisa tiba-tiba berbeda jauh  (misalnya ketika isu Bank Indonesia melarang bitcoin, harga bitcoin di Indonesia harganya yang tadinya lebih mahal dari Thailand tiba-tiba anjlok menjadi 15% lebih murah dari harga di Thailand).

Saya juga menambahkan menu search ketika memilih teks. Saya bisa mengklik kanan dan mencari kata di KBBI karena kadang tidak yakin apa ejaan baku sebuah kata. Contoh lainnya: ketika membaca mengenai cryptocurrency, sering kali saya tidak pernah mendengar nama sebuah cryptocoin (karena sekarang sudah ada lebih dari 1400 koin), saya bisa menambahkan “search in coinmarketcap” untuk mencari informasi mengenai koin tertentu. Sebagai catatan: saat ini kita tidak bisa menambahkan context menu search tanpa extension.

Membuat extension sendiri memang butuh waktu, tapi saya punya beberapa alasan kenapa ini worth the time:

  1. Saya jadi terpaksa belajar Javascript dan berbagai API baru yang ada di browser
  2. Saya merasa lebih aman karena tahu dengan tepat kode apa yang saya tuliskan
  3. Dalam jangka panjang, extension yang saya buat akan menghemat waktu saya lebih banyak

Menurut saya membuat extension ini cukup menarik karena biasanya program yang dibuat cukup kecil, dan sudah ada banyak library Javascript untuk melakukan hampir apa saja. Awalnya ketika mencoba satu fitur tertentu memang butuh waktu (contohnya menambahkan custom menu right click pertama), tapi berikutnya sangat cepat (menambah menu baru hanya perlu semenit saja).

Untuk saat ini saya belum tertarik untuk mempublikasikan extension pribadi yang saya pakai karena merasa terlalu spesifik untuk kasus saya, dan jika dipublikasikan akan menambah beban untuk memaintain extension tersebut.

4 thoughts on “Skrip dan Extension untuk Browsing”

  1. Saya menggunakan browser Vivaldi dan Opera, keduanya berbasis Chromium, dan by default sudah bisa menambahkan ragam mesin pencari di context menu. Tidak perlu menggunakan plugin lagi.

    Saat highlight suatu teks dan klik kanan, akan ada pilihan “Search with..” dan drop down pilihan mesin pencari yang sudah kita masukkan.

    Untuk Opera sendiri sudah ada fitur ad-block (juga VPN) dan Vivaldi kemungkinan akan menambahkan fitur tsb.

    1. Dulu saya (dan Istri) pake Opera di desktop dan juga Opera Mini (jaman Internet mobile masih mahal). Bahkan dulu sampe dapet T-Shirt Opera ikutan nulis blog tentang Opera.

      http://blog.compactbyte.com/2007/03/03/t-shirt-from-opera/

      Tapi karena sering ada masalah-masalah kecil, lama-lama saya lebih banyak memakai Chrome dan Firefox. Ini contoh kecil aja, barusan saya update Opera di Linux ke versi terbaru dan muncul ini di helpnya:

      https://imgur.com/TLuoYCy

      Setelah refresh jadi normal lagi. Kadang saya pakai masih pakai juga sih opera, terutama fitur VPN-nya sangat berguna untuk testing akses website dari berbagai IP.

    1. Sejauh ini sepertinya Keepass cukup bagus, open source dan tidak dikuasai pihak tertentu.

      Sebenarnya Lastpass juga masih ok, asalkan tidak memakai extension di browser.

Leave a Reply

Your email address will not be published. Required fields are marked *