Perlindungan alamat email melalui SVG, digunakan sebagai pengganti JavaScript
(rouninmedia.github.io)- Agar alamat email publik tetap tersembunyi dari pengumpulan oleh bot spam sambil tetap memungkinkan pengunjung menghubungi secara langsung, metode ini menempatkan teks email dan tautan
mailto:di dalam SVG - Perlindungan berbasis JavaScript bisa lebih canggih, tetapi ada beban karena fungsi kontak itu sendiri menjadi memiliki ketergantungan pada JS
- Pendekatan ini menyisipkan dokumen SVG eksternal ke HTML dengan tag
dan menempatkan tautan sebenarnya pada elemendi dalam SVG, bukan di HTML - SVG memberi efek menyembunyikan isi seperti gambar, tetapi karena menggunakan elemen ``, pengunjung tetap bisa menyalin alamat email tersebut
- Ini bukan solusi untuk menghentikan bot spam yang canggih, tetapi berguna untuk mengurangi risiko terekspos ke skrip pengumpul email sederhana
Cara menyembunyikan alamat email dengan SVG
- Alamat email publik mudah terekspos ke bot spam pengumpul email, sehingga memerlukan mekanisme perlindungan
- Teknik perlindungan yang umum biasanya menggabungkan HTML, CSS, dan JavaScript, tetapi penggunaan JavaScript membuat fungsi kontak terikat pada lingkungan eksekusi wajib halaman
- Metode SVG menangani tampilan email dan perilaku tautan tanpa menggunakan JavaScript sama sekali
- Bahkan jika JavaScript dimatikan, pengunjung tetap bisa menggunakan alamat email yang ditampilkan di halaman, sementara bagi bot spam alamat itu lebih tidak terekspos secara langsung dibanding teks HTML biasa
- Seperti teknik perlindungan berbasis frontend lainnya, ini tidak dapat sepenuhnya melindungi alamat email publik dari bot spam yang gigih dan canggih
- Demo langsung: SVG-based Email Protection
Implementasi HTML dan SVG
- Dokumen HTML menyisipkan file SVG eksternal dengan tag ``
- Dokumen grafis SVG yang sama bisa disisipkan satu kali atau beberapa kali di dalam HTML
- Contoh HTML menetapkan gaya
width: 180px,height: 24px,vertical-align: middlepada kelas.svg-email-protection, lalu memuat file SVG di isi halaman dengan tag `` - File SVG adalah dokumen `` dengan
viewBox="0 0 200 24", dan di dalamnya ditempatkan teks email serta tautanmailto:myemail@mydomain.tld- Di dalam
terdapatdan `` - `` menampilkan
myemail@mydomain.tld - Pada status
rect:hoverdana:focus, gaya warna latar, warna teks, ketebalan, garis bawah, dan bayangan berubah
- Di dalam
Aksesibilitas dan referensi
- Seluruh dokumen SVG menggunakan
aria-labelledbyyang merujuk ke, dandi dalam SVG memilikiaria-labeldengan ajakan bertindak yang sama - Saat fokus tab keyboard mencapai anchor di dalam SVG,
dansama-sama disorot untuk menampilkan status fokus - Materi terkait:
1 komentar
Komentar Hacker News
Saya agak ragu apakah memang begitu
Namun secara pribadi, sejak sekitar 2015 hal itu sama sekali tidak lagi membuat perbedaan, bahkan spam yang perlu difilter pun tidak bertambah
Sekarang perusahaan bisa menjual daftar pengguna, atau orang bisa membeli daftar email raksasa hasil pembobolan server, jadi menyapu web untuk mengumpulkan email hampir menjadi cara yang paling tidak efisien untuk mengirim spam
Kedua situs punya ribuan pengunjung, dan merupakan situs populer yang dirayapi mesin pencari serta bot AI
Alamat email yang saya pasang di situs web bahkan tidak masuk ke folder spam
Beberapa milis tampaknya membuat alamat Gmail dengan menebak seperti serangan kamus, memakai format FIRSTNAME.LASTNAME atau kombinasi 1–10 karakter
Meski begitu, spam yang masuk ke alamat domain@domain.com sangat sedikit, kira-kira satu email per tahun
Secara keseluruhan jumlah spam email juga jauh berkurang, dan spam yang beredar sekarang sepertinya campuran penipu 419 dan calon penipu yang tertipu membeli daftar email berumur 20 tahun
Saya tidak mengatakan ini masalah privasi atau keamanan yang serius, tetapi ini soal preferensi
Domain saya adalah .com yang sudah terdaftar 24 tahun, dan alamat emailnya dipasang apa adanya di tag H3 paling atas halaman pertama
Spam ke alamat ini bukan masalah. Termasuk folder junk, sekitar 15 per hari, dan berkat Purelymail semuanya baik-baik saja
Masalah sebenarnya adalah email transaksional yang tidak terkait transaksi, email promosi bergaya newsletter, dan jejaring sosial yang terus mengirim notifikasi karena saya tidak memakainya
Sudah sekitar 7 tahun sejak saya tidak memakai akunnya, seharusnya mereka sudah bisa menyadarinya
Di beberapa tempat hampir tidak ada spam, di tempat lain masuk puluhan per hari. SpamAssassin sangat baik melakukan caching spam
Berbeda dengan pernyataan bahwa “meskipun pengunjung mematikan JavaScript, alamat email yang ditampilkan di halaman tetap bisa digunakan”, pengaturan default NoScript di Firefox tidak merender tag tersebut dan menggantinya dengan placeholder, jadi teknik ini tidak bekerja di sini
https://imgur.com/2tCAgAf
Tidak ada alasan teknik ini sendiri tidak bisa dibuat aksesibel, tetapi contoh di tulisannya benar-benar buruk
Tulisan itu memberi label “Email us!” pada elemen svg dan a, sehingga alamat email sebenarnya disembunyikan dari screen reader
Penggunaan label aria seperti ini adalah praktik yang sangat buruk. Kecuali ada alasan yang sangat khusus, pengguna screen reader seharusnya mendapat pengalaman yang sama dengan orang lain, dan jika Anda merasa alasannya cukup kuat, biasanya kemungkinan besar Anda keliru
Cara yang benar adalah memasukkan alamat email sebenarnya ke dalam label
Jika pengguna mengatakan “Click myemail@mydomain.tld”, browser bisa mengekspos teks tautan sebagai “Email us”, sehingga tautannya mungkin tidak aktif
Namun saya tidak tahu apakah Dragon bisa mengaktifkan tautan di dalam SVG
Saya melakukannya seperti ini: reanospaml@maisjsl.com
Saya tetap menerima “spam”, tetapi karena berupa penawaran B2B yang sangat sesuai dengan topik situs, sepertinya dikumpulkan manual oleh manusia
Namun menjalankan headless browser untuk mengumpulkan email biayanya relatif besar, jadi spam itu mungkin bukan berasal dari situs tersebut
Seperti yang sudah dikatakan orang lain, “melindungi” email bukan hanya tidak ada gunanya, tetapi juga bisa benar-benar merugikan
Ada cukup banyak situs yang sebagian besar isinya tetap terbaca dengan baik tanpa JavaScript, tetapi string seperti “1920x1080@60Hz” justru ditampilkan secara harfiah sebagai “[email protected]”
Saya bertanya-tanya apakah hal seperti ini benar-benar ada gunanya. Ini eksperimen yang menarik, tetapi kalau tujuannya menghindari spammer, ini sepenuhnya buang-buang waktu
Ini seperti memublikasikan informasi ke seluruh dunia tetapi entah bagaimana berharap hanya “orang baik” yang bisa mengaksesnya
Kecuali Anda mengganti alamat email setidaknya setiap bulan, begitu seseorang meneruskan kontak itu ke orang lain, memasukkannya ke database/CRM, atau satu layanan saja diretas, alamat itu akan masuk daftar dan akhirnya menyebar ke spammer di seluruh dunia
Jika Anda terus memakai email itu, peluang hal ini terjadi pada dasarnya bisa dianggap mendekati 100%
Kalau menyembunyikan email dari scraper benar-benar efektif, spam tidak akan ada. Saya tidak pernah memublikasikan kontak pribadi saya di mana pun, tetapi tetap menerima puluhan spam per minggu; semuanya tersaring sebagai spam, jadi bukan masalah besar
Teman saya benar-benar jago, dan ia membuat semacam gambar responsif dengan SVG yang berisi JavaScript
Gambarnya beradaptasi secara terprogram sesuai ukuran, dan itu cukup menarik
Fakta bahwa JavaScript bisa dimasukkan ke dalam SVG sendiri terasa masih kurang dimanfaatkan sekaligus agak berbahaya
Saya engineer backend, jadi secara teknis ini cukup jauh dari wilayah saya, tetapi terlihat sangat keren
Saya sudah menyerah dengan cara seperti ini. Filter spam sekarang cukup bagus, sehingga meskipun alamat email dipublikasikan tanpa obfuscation, spam tampaknya tidak bertambah
Sumber spam lain, seperti perusahaan buruk yang memiliki email saya karena alasan sah lalu menjualnya ke pihak ketiga, adalah masalah terpisah
Umumnya spam yang masuk ke inbox kurang dari 1 per hari, dan itu masih bisa diterima
Tentu ini bisa berbeda tergantung penyedia email dan filter spam, jadi tiap orang mungkin berbeda, tetapi bagi saya itu bukan masalah
Email itu tetap ada sebagai teks polos di dalam dokumen XML yang dirujuk dari source halaman
document.querySelectorAll('a'), hasilnya berbeda. Banyak teknik scraping memakai pendekatan seperti ini, jadi sebagai garis pertahanan pertama masih lumayanNamun ada headless browser untuk scraping, dan jika di atas halaman ia melakukan
fetchke URL saat ini lalu menerima teks polos dan mencari email dengan regex, alamatnya bisa didapat. Saya akui ini pendekatan yang cukup aneh[0]: fetch('./').then((res) => res.text()).then((text) => console.log(text))
Namun dalam lingkungan perlindungan spam modern, saya tidak yakin seberapa efektif ini sebenarnya