E-posta adresini SVG ile koruma yöntemi, JavaScript yerine kullanım
(rouninmedia.github.io)- Herkese açık e-posta adresini spam botlarının toplamasından gizlerken ziyaretçilerin doğrudan iletişime geçebilmesini sağlamak için, SVG içine e-posta metni ve
mailto:bağlantısı yerleştiren bir yöntem kullanılıyor - JavaScript tabanlı koruma daha gelişmiş olabilir, ancak iletişim işlevinin kendisinin JS bağımlılığına sahip olması yük oluşturuyor
- Bu yaklaşım, harici bir SVG belgesini HTML'e
ile ekliyor ve gerçek bağlantıyı HTML yerine SVG içindekiöğesine koyuyor - SVG, bir görsel gibi içeriği gizleme etkisi sunarken `` öğesini kullandığı için ziyaretçi e-posta adresini kopyalayabiliyor
- Gelişmiş spam botlarını durduran kusursuz bir çözüm olmasa da, basit e-posta toplama betiklerine maruz kalma riskini azaltmada faydalı
SVG ile e-posta adresini gizleme yöntemi
- Herkese açık e-posta adresleri, e-posta toplayan spam botlarına kolayca maruz kalabildiği için koruma gerekir
- Yaygın koruma teknikleri HTML, CSS ve JavaScript kombinasyonu kullanır; ancak JavaScript kullanıldığında iletişim işlevi sayfanın zorunlu çalışma ortamına bağlanır
- SVG yöntemi, hiç JavaScript kullanmadan e-posta gösterimini ve bağlantı işlevini gerçekleştirir
- JavaScript kapalı olsa bile ziyaretçiler sayfada gösterilen e-posta adresini kullanabilir ve adres, spam botlarına düz HTML metnine kıyasla daha dolaylı biçimde görünür
- Diğer frontend tabanlı koruma tekniklerinde olduğu gibi, herkese açık e-posta adresini inatçı ve gelişmiş spam botlarına karşı tamamen koruyamaz
- Canlı demo: SVG-based Email Protection
HTML ve SVG uygulaması
- HTML belgesi, harici SVG dosyasını `` ile ekler
- Aynı SVG grafik belgesi HTML içine bir veya birden fazla kez eklenebilir
- Örnek HTML,
.svg-email-protectionsınıfınawidth: 180px,height: 24px,vertical-align: middlestillerini atar ve gövdede SVG dosyasını `` ile yükler - SVG dosyası,
viewBox="0 0 200 24"olan bir `` belgesidir ve içinde e-posta metni ilemailto:myemail@mydomain.tldbağlantısını barındırıriçindeve `` bulunur- `` üzerinde
myemail@mydomain.tldgörüntülenir rect:hovervea:focusdurumlarında arka plan rengi, metin rengi, kalınlık, alt çizgi ve gölge stilleri değişir
Erişilebilirlik ve referanslar
- SVG belgesinin tamamı,
öğesini işaret eden `aria-labelledby` kullanır ve SVG içindekiöğesinde aynı harekete çağrıyı içeren biraria-labelbulunur - Klavye ile sekme odağı SVG içindeki bağlantıya ulaştığında,
vebirlikte vurgulanarak odak durumu gösterilir - İlgili kaynaklar:
1 yorum
Hacker News yorumları
Gerçekten öyle mi emin değilim
Ama kişisel olarak bende bunun farkı yaklaşık 2015'ten sonra tamamen kayboldu; filtrelenecek spam bile artmadı
Artık şirketler kullanıcı listelerini satabiliyor ya da sunucu ihlallerinden çıkmış devasa e-posta listeleri satın alınabiliyor; bu yüzden web'i tarayıp e-posta toplamak spam göndermenin neredeyse en verimsiz yolu
Her iki site de binlerce ziyaretçisi olan ve arama motorlarıyla yapay zeka botlarının kazıdığı popüler siteler
Web sitesine koyduğum e-posta adreslerine ise spam klasörüne gidecek kadar bile gelmiyor
Bazı posta listeleri sanki FIRSTNAME.LASTNAME biçimindeki ya da 1~10 karakter kombinasyonlu Gmail adreslerini sözlük saldırısı yapar gibi tahmin ederek üretiyor gibi görünüyor
Yine de domain@domain.com adresine gelen spam yılda bir mesaj kadar, yani çok az
Genel olarak e-posta spam hacmi de ciddi biçimde azaldı; şimdi gönderilen spam'ler daha çok 419 dolandırıcılarıyla 20 yıllık e-posta listeleri satın alıp kandırılmış hevesli dolandırıcıların karışımı gibi
Bunu ciddi bir mahremiyet ya da güvenlik sorunu olarak gördüğümden değil, sadece bir tercih meselesi
Alan adım 24 yıldır kayıtlı bir .com ve e-posta adresi ana sayfanın en üstünde H3 etiketinde açıkça duruyor
Bu adresin aldığı spam sorun değil. Purelymail sayesinde junk klasörü dahil günde yaklaşık 15 tane geliyor ve idare ediliyor
Asıl sorun, işle ilgisiz işlemsel e-postalar, bülten tarzı tanıtım mailleri ve kullanmadığım halde sürekli bildirim yollayan sosyal ağlar
Hesabı yaklaşık 7 yıldır kullanmıyorum; artık durumu anlamış olmaları gerekirdi
Bazılarında neredeyse hiç spam yok, bazılarında ise günde onlarca geliyor. SpamAssassin spam'i yakalamakta çok iyi iş çıkarıyor
“Ziyaretçi JavaScript'i kapatsa bile sayfada görünen e-posta adresini kullanmaya devam edebilir” denmiş ama Firefox'taki NoScript varsayılan ayarlarla etiketi render etmeyip yer tutucuya çevirdiği için bu teknik burada çalışmıyor
https://imgur.com/2tCAgAf
Tekniğin kendisinin erişilebilir olmaması için bir neden yok ama yazıdaki örnek gerçekten kötü
Yazıda svg ve a öğesinin etiketi “Email us!” olarak verilmiş; böyle olunca gerçek e-posta adresi ekran okuyuculardan gizlenmiş oluyor
Aria etiketlerinin bu şekilde kullanılması çok kötü bir pratik. Çok özel bir sebep olmadıkça ekran okuyucu kullanıcılarının da diğer insanlarla aynı deneyimi yaşaması gerekir; bu sebebin yeterince güçlü olduğunu düşünüyorsanız da büyük ihtimalle yanılıyorsunuzdur
Doğru yöntem, etikete gerçek e-posta adresini koymak
Kullanıcı “Click myemail@mydomain.tld” dese bile tarayıcı bağlantı metni olarak “Email us” gösterdiği için link etkinleşmeyebilir
Yine de Dragon'un SVG içindeki bağlantıyı etkinleştirip etkinleştiremeyeceğini bilmiyorum
Ben şöyle yapıyorum: reanospaml@maisjsl.com
Yine de “spam” alıyorum ama bunlar sitenin konusuna tam uyan B2B teklifleri olduğu için muhtemelen bir insan tarafından elle toplanmış
Yine de e-posta toplamak için headless browser çalıştırmanın maliyeti nispeten yüksek; dolayısıyla o spam siteden gelmiyor da olabilir
Başkalarının da dediği gibi e-postayı “korumak” sadece anlamsız değil, fiilen zararlı da
JavaScript olmadan da içeriğin çoğu gayet okunuyor ama epey sitede “1920x1080@60Hz” gibi dizeler kelimenin tam anlamıyla “[email protected]” diye gösteriliyor
Bunun gerçekten bir anlamı var mı emin değilim. Eğlenceli bir deney olabilir ama amaç spam'cilerden kaçmaksa tam bir zaman kaybı
Bilgiyi bütün dünyaya açıkça yayıp bir şekilde yalnızca “iyi insanların” erişebilmesini beklemek gibi bir şey
E-posta adresini en az ayda bir değiştirmiyorsanız, biri iletişim bilginizi başkasına verir, bir veritabanına/CRM'e ekler ya da bir hizmet ihlal edilir; sonuçta o adres bir listeye girer ve sonunda dünyanın dört bir yanındaki spam'cilere yayılır
O e-postayı düzenli kullanıyorsanız bunun olma ihtimali pratikte %100'e yakındır
Kazıyıcılardan e-postayı gizlemek gerçekten işe yarasaydı spam diye bir şey olmazdı. Kişisel iletişim adresimi hiçbir yerde açık etmemiş olmama rağmen haftada onlarca spam alıyorum ama hepsi spam olarak filtrelendiği için büyük bir sorun olmuyor
Bir arkadaşım gerçekten çok iyi; JavaScript içeren SVG ile adeta duyarlı görseller yapıyor
Boyuta göre programatik olarak uyarlanıyor, oldukça ilginç
SVG içine JavaScript gömülebilmesi gerçeğinin kendisi hâlâ yeterince kullanılmamış ama bir yandan da biraz tehlikeli hissettiriyor
Backend mühendisi olduğum için teknik olarak alanımdan epey uzak ama gerçekten çok havalı görünüyor
Ben bu tür yöntemleri bıraktım. Günümüzde spam filtreleri yeterince iyi, o yüzden e-posta adresini karartmadan yayınlamak spam'i artırıyor gibi görünmüyor
Meşru sebeplerle e-postama sahip olan berbat şirketlerin bunu üçüncü taraflara satması gibi diğer spam kaynakları ayrı konu
Genel olarak gelen kutuma düşen spam günde 1'den az ve bu kadarı kabul edilebilir
Tabii bu e-posta sağlayıcısına ve spam filtresine göre değişebilir; kişiden kişiye farklıdır ama benim için sorun olmadı
E-posta hâlâ sayfa kaynağında referans verilen XML belgesinin içinde düz metin olarak duruyor
document.querySelectorAll('a')gibi bir yöntemle bakınca durum farklı. Birçok scraping tekniği bu yaklaşımı kullandığı için ilk savunma hattı olarak fena değilAma scraping için headless browser var; ayrıca sayfa üzerinde mevcut URL'yi doğrudan
fetchedip düz metni alarak regex ile e-postayı bulmak da mümkün. Kabul ediyorum, oldukça tuhaf bir yaklaşım[0]: fetch('./').then((res) => res.text()).then((text) => console.log(text))
Ama modern spam koruma ortamında bunun gerçekte ne kadar etkili olduğu konusunda emin değilim