Bir web sitesindeki e-posta adresini gizlemenin en iyi yolu?


136

Son birkaç günü kişisel web sitemi güncellemek için çalıştım. Kişisel web sitemin URL'si (benim adım). (Soyadım) .com, soyadım oldukça sıradışı ve alan adını alabilecek kadar şanslıydım. E-posta adresim (ilk adım) @ (soyadım) .com. Gerçekten, tahmin etmeye geldiğinde, çok zor değil.

Her neyse, bir mailto: linkini web siteme entegre etmek istiyorum, böylece insanlar benimle iletişime geçebilir. Ve, e-posta adresimin tahmin edilmesi çok zor olmamasına rağmen, sadece e-posta adres kalıpları için web sitelerini tarayan ve veritabanlarına ekleyen spam botları tarafından toplanmasını tercih etmem.

E-posta adresimi, tercihen bağlantı biçiminde gizlemenin en iyi yolu nedir? Bildiğim yöntemler şunlardır:

<a href="mailto:x@y.com">e-mail me</a>

Çalışıyor, ancak aynı zamanda web sitem Google'a ulaşır ulaşmaz, spam botları e-posta adresimi kolayca seçtiği için spam yoluyla dolaşacağım anlamına da geliyor.

<img src="images/e-mail.png" />

Bu daha az arzu edilir, çünkü ziyaretçiler bana bir e-posta göndermek için tıklayamazlar, aynı zamanda daha akıllı spam botlar muhtemelen resmin içerdiği karakterleri tespit edebilir.

Muhtemelen mükemmel bir çözüm olmadığını biliyorum, ama herkesin en iyi olduğunu düşündüğünü merak ediyordum. Web sitem zaten tonlarca kullandığından, gerekirse gerekirse JavaScript kullanmaya hazırım.


10
Mesajı GMail hesabınıza yönlendirin. ;-)
Dave Jarvis

1
Süper kullanıcı sorusuna
jacktrades

Bu gönderi buraya bağlanmalıdır.
Clément

Yanıtlar:


106

Karakterleri HTML objeleri olarak kodluyorum ( böyle bir şey ). JS'nin etkinleştirilmesini gerektirmez ve spam'ların çoğunu durdurmuş gibi görünüyor. Akıllı bir bot hala hasat edebilir, ancak herhangi bir sorun yaşamadım.


6
Bu, en basit spambot hasatını durdurur (regex, herhangi bir metni ve e-posta adresini arar) ve dezavantajı yoktur: son kullanıcı için href = mailto: xxx @ yy bağlantısı kadar uygundur.
Stephen C. Steel

5
Paletli / biçerdöverlerin çoğu (en çok?) İnanılmaz derecede aptal olduğu için bu oldukça iyi çalışıyor.
Jacco

43
2008'den bu ampirik çalışmaya göre , URL kodlaması bir sonraki-en az etkili oldu. Sadece düz metin daha kötüydü.
Fuhrmanator

16
Bu geç olduğunu biliyorum, ama burada öneri URL kodlama farklı HTML varlıkları kullanmak olduğunu belirtmek gerekir. Bu çalışmaya göre, @ ve dönemler için varlıkları kullanmak ikinci en etkili yöntemdi (en etkili olanı, ilk önce hepsi spam mesajlarla sonuçlanan üç yöntemdi). Bunun yaklaşık 6 yıl sonra hala devam edip etmediğini görmek ilginç olurdu.
Bailey Parker

12
E-postanızı korumak için, bağlandığınız sitede rastgele, gölgeli görünen bir forma girmeniz ironik buluyorum. Bal mumu, kimse var mı? :)
srobinson

84

Şahsen, e-posta adresimi gizlemekten vazgeçtim. Gizleme konusunda endişelenmekten daha iyi spam filtreleme çözümlerine bakmayı daha kolay buluyorum. Adresinizi gizlemenin en iyi yolunu bulmak için günler geçirebilirsiniz ve sonra tek yapmanız gereken, adresinizi bir spam göndericiye satmak için tek bir kişidir ve tüm bu işler işe yaramazdı.


Spam filtrelemeniz ne kadar iyi olursa olsun, yanlış negatifler olacaktır (bunlardan geçen postalar olmamalıdır). Nihayetinde e-posta adresiyle yaşamak zorundasınız, ancak bu tür gereksiz maruz kalmaların istenmeyen postaların tekrarını artıracağı görülüyor.
Brad Barker

8
@Brad benim tecrübelerime göre bu böyle değildi. Etki alanlarım için Google tarafından barındırılan posta kullanıyorum ve e-posta adresimi bulmak son derece kolay. 14 aydan daha uzun bir süre önce kullanmaya başladığımdan beri 0 yanlış negatif ve 1 yanlış pozitif aldım. Spam klasörümde günde birkaç yüz spam alıyorum.
Rex M

8
Er, şunu eklemeliyim: spam, çocuklarınızı yiyecek bir öcü değil. Tek bir spam e-posta almak dünyanın sonu değildir. "Spam bildir" i tıklayın ve devam edin.
eyelidlessness

1
@Brad: Gerekmiyorsa, adresinizi hiç vermeyin. Adresinizi belirtmeniz gerekiyorsa spam için hazır olun. Bir spambotun bunu yapmasını da kolaylaştırmadan bir insanın size e-posta göndermesini kolaylaştıramazsınız.
Chuck

1
Sadece e-postamı da rahatsız etmeden yayınlıyorum. Gmail kullanıyorum ve spam filtresi oldukça iyi çalışıyor gibi görünüyor.
Asmor

68

Geçerli kabul edilen çözüm, kullanıcıların size e-posta göndermesine olanak tanıyan bir iletişim formu oluşturmaktır. Bundan çok fazla spam alırsanız (sitemde yok), o zaman iyi önlem almak için bir captcha ekleyebilirsiniz ve o noktada "düşük asılı meyveden" çok uzak olacaksınız.

Mesele şu ki, bir kullanıcının e-posta istemcisini Kime: alanında adresinizle açmak için tıklayabileceği bir bağlantı sağlıyorsanız, bilgisayar e-posta adresini sayfadan deşifre edebilir ve böylece bir spam bot.


2
Yani, e-postayı gönderecek mantık, adresin hiçbir zaman herkese açık hale getirilmemesi için gizli sunucu tarafı kodunda yazılmalıdır.
JoshJordan

8
Bu iyi bir çözüm olsa da, teknik olarak, birçok kullanıcı için uygun olmayan bir çözümdür. Sadece söylüyorum'.
eyelidlessness

Kesinlikle haklısın, ama nedenini hiç anlamadım. En azından bir e-posta istemcisinde olduğu gibi, web formundan en fazla bir tık uzaktasınız . Zorluk katan tek şey isteğe bağlı captcha. Bir kullanıcı sizinle iletişim kuramazsa, mesajı önemli miydi?
JoshJordan

15
Size mesajı CC gönderme seçeneği olduğunda her zaman hoşuma gider. İletişim formları hakkında beni rahatsız eden tek şey, kendi e-posta sistemimde hiçbir kayıt bırakmamasıdır. (Her ne kadar herhangi bir e-posta adresinin CC olduğu bir form kendi sorun kümesini oluşturabilir.)
Sam Hasler

6
Ayrıca, e-posta formunun gerçekten işe yaradığına dair bir gösterge de yoktur. Sessizce kırılmış çok fazla şey gördüm. En azından gerçek e-postalar geri dönüyor.
Brian Carper

44

Bunun kişisel web siteniz için olduğunu söylemiştiniz. Kişisel sitemde (örneğin, bobsomers.com) Sadece şunu söyleyen bir paragrafım var:

Yeni site bitmeden benimle iletişime geçmenin en iyi yolu bana bir e-posta göndermektir. E-posta adresim bu web sitesindeki ilk adım. Bunu bu ipucundan anlayamıyorsanız, e-posta adresimi bulmaktan daha zor bir iş olabilir.

İnsanlar her zaman meşru e-posta aldıkça bunu gayet iyi anlayabiliyor gibi görünüyor. Bazen en iyi çözümler herhangi bir kod yazmayı gerektirmez. :)


7
Bu yöntem aynı zamanda
IQ'ları

36

reCAPTCHA basit bir e-posta gizleme hizmeti sunar . Bir hesap oluşturmanıza gerek yoktur ve hemen kullanmaya başlayabilirsiniz. Hizmeti bir bağlantı veya bir açılır pencere olarak kullanabilirsiniz.

Captcha çözüldükten sonra, e-posta adresiniz bir href / mailto olarak görünür, böylece e-posta istemcilerini tarayıcılarıyla çalışacak şekilde yapılandırmış olan kullanıcılar tarafından tıklanabilir / izlenebilir.


bu harika ve zamanın% 99,9'unda çalışacak. Bağlantı için teşekkürler. Bot bir tarayıcıyı otomatikleştirirken başarısız olur.
IEnumerator

9
Web kullanıcılarının çoğunluğunun sadece birisine e-posta göndermek için bir captcha çözme çabasına gireceğini düşünmüyorum.
AndyM

7
Bu konuda Andy ile beraberim. CAPTCHA bir ağrıdır ve reCAPTCHA genellikle okunması çok zor olduğundan ortalamadan daha büyük bir ağrıdır. Size e-posta gönderen kullanıcılar bir dönüşüm noktasıysa (örneğin, müşterilerin hizmetler hakkında bilgi istemesine, sipariş vermesine veya teklif sormasına olanak tanır), gerçekten bunu mümkün olduğunca kolaylaştırmak istersiniz.
Sylverdrag

8
Hizmet artık mevcut değil.
sorin

Google Mailhide 31 Mart 2018 tarihinden bu yana durduruldu.
sean

18

Bir hrefankrajı gizlemenin hafif bir yolu base64 kodlamaktır:

> btoa('mailto:email@example.com')
< "bWFpbHRvOmVtYWlsQGV4YW1wbGUuY29t"

Ve sonra sabit kodlu ekleyin:

<a href="javascript:window.location.href=atob('bWFpbHRvOmVtYWlsQGV4YW1wbGUuY29t')">E-Mail</a>

Veya dinamik olarak sunucu tarafı, örneğin PHP'de:

<a href="javascript:window.location.href=atob('<?= base64_encode("mailto:email@example.com") ?>')">E-Mail</a>

String reversion ile birlikte oldukça spam tasarruflu olabilir:

<a href="javascript:window.location.href=atob('<?= base64_encode("mailto:email@example.com") ?>')" style="unicode-bidi: bidi-override; direction: rtl;"><?= strrev("email@example.com") ?></a>

14

Görünüşe göre metninizin yönünü değiştirmek için CSS kullanmak oldukça iyi çalışıyor. Bu bağlantının bir sürü başka gizleme yöntemi testi de var.

Kullandığın her şey kaçınılmaz olarak yenilecek. Birincil amacınız, halkı kullanıcılarınızdan rahatsız etmekten kaçınmak olmalıdır.


4
Bu belki kopyala ve yapıştır yap? IIRC
alex

7
Adres kopyalandığında, geriye doğru görünecektir. Bu, sizinle iletişim kurmanın mümkün olduğunca kolay olmasını istiyorsanız, kullanıcılar için rahatsız edici olabilir.
Christian Davén

10

Burada herhangi bir gizleme tekniği kullanmayın, çünkü muhtemelen e-posta biçerdöverleri insanların e-postaları nasıl gizlediğini bulmak için ilk aradıkları yerdir. E-posta adresinizin sitede görünür olması gerekiyorsa, yalnızca başka birinin yöntemini aynen kopyalamakla kalmaz; yönteminizin sitenizi ziyaret etmeden önce biçerdöverler tarafından bilinmemesi için başka hiçbir sitenin kullanmadığı benzersiz bir şekilde gizleyin.


8
Ne kadar özyineli.
Paul Tomblin

Unniloct: Sam Hasler'in anwswer en iyi cevabı ne olursa olsun geçerlidir. En popüler gizleme tekniğine giderek, en olası hasat hedefine gidiyorsunuz.
eyelidlessness

En iyi cevap aslında şaşkınlık kullanmak değil sürece :)
JoshJordan

@JoshJordan: kabul etti, aslında cevabına oy verdim. Demek istediğim, herhangi bir popüler gizleme tekniğinin sonunda spam gönderenler tarafından fark edileceği ve deobfuscate etmek için kod yazacaklarıydı.
Sam Hasler

2
Şu anda bu sayfa google tarafından [gizli e-posta adresi] için döndürülen 28. sonuç olsa da, sonunda daha da yükselmesini bekliyorum.
Sam Hasler

8

Google'ın Google Kodunda (ve Gruplarda) yaptığı gibi yapabilirsiniz. E-postanın bir par öğesini ve tıklanabilir bir bölümü ("...") görüntüleyin. Bunu tıkladığınızda e-postayı bilmek istediğiniz belirtilir ve sizden bir captcha doldurmanız istenir. Daha sonra e-posta (ve diğerleri?) Size görünür.


8

benimki aslında basit:

<h3 id="email">hello@gmail.com</h3><!-- add a fake email -->


    $(document).ready(function(){
//my email in reverse :)
            var s = 'moc.elibomajninbew@htiek';
            var e = s.split("").reverse().join("");
            $('#email').html('<a href="mailto:'+e+'">'+e+'</a>');
    });

9
hello@gmail.com sahibi zavallı adam :)
duedl0r

2
Gmail'de 5 karakterli e-posta yok.
Paulo Ney

6

JavaScript gizleme kullanıyorum, buna bir göz atın:

http://www.jottings.com/obfuscator/


2
-1: Ürettiği koda baktınız mı? E-posta adresinizi "bağlantı metni" ne eklerseniz aslında gizlemez ve amacına "mailto:" ile inanır. Daha da kötüsü, temel içerik için güvenilmemesi gereken Javascript gerektiren bir çözümdür.
eyelidlessness

6

Koruduğum bir web sitesi, spambotları uzak tutmanın (umarım) biraz basit bir JavaScript aracı kullanıyor.

E-posta bağlantıları bir JS işlevini çağırır:

işlev sendEmail (ad, etki alanı) {
    location.href = 'mailto:' + ad + '@' + alan adı;
}

Yalnızca JS etkin olan kullanıcıların bağlantıyı görebildiğinden emin olmak için, bunları şu şekilde yazın:

function writeEmailLink (gerçekAd, ad, etki alanı) {
    document.write ('<a href = "javascript: sendEmail (\' '
      + ad + '\', \ '' + alan adı + '\') "> ');
    (RealName) document.write;
    ( '</a>') document.write;
}   

Bir JS işlevinin başka bir çağıran bağlantıyı yazmak için kullanılması, iki koruma katmanı olduğu anlamına gelir.


4

Yukarıda bir poster olarak, ben de jottings web sitesinden JavaScript gizleme kullanın .

Web sayfası geliştirilebilecek bazı JavaScriptler oluşturur. mailto:Metin dizesi olduğunu açık ve (bu nokta ve bu dizeyi tekrar okunabilir hale olabilir), ama bir formun jottings.com web sayfası e-posta adresine içine girerse robotlar tarafından tanımlanabilen mailto:addr@site.tldyerine addr@site.tldo ve metni kaldırırmailto:oluşturulan JavaScript'ten, aniden e-posta ile hiçbir ilgisi yokmuş gibi görünen bazı JavaScript'ler vardır - sadece web'in dolu olduğu rastgele JavaScript. Bağlantı metninden kurtularak bunu daha da geliştirebilirim - benimkini, oldukça belirsiz bir yazı tipindeki e-posta adresimin bir görüntüsüyle değiştirdim. Daha sonra jottings.com'da bu yöntemin popüler hale gelmesi durumunda, bir robotun JavaScript kodları oluşturulan JavaScript kodunun bir örneğini tespit etmesini zorlaştırmak için JavaScript çıktısındaki değişken adlarını rastgele seçtim.

Açıkçası bu iyileştirmelerden bazıları, notların kendisindeki mekanizmanın içine yerleştirilebilir ve kod açıkça mevcut olduğundan, bu nispeten kolay olacaktır.

Bir örnek bunu biraz daha açık hale getirebilir. Yukarıdaki bağlantıda Jottings Obfuscator'ı kullanıyorum mailto:foo@bar.com(notları ben jottings web sitesinin orijinal niyetini mailto:foo@bar.comyerine dize girerek hile yapıyorum foo@bar.com) metin "Bana E-posta Gönder", hangi jottings bu Javascript döndü:

<script type="text/javascript" language="javascript">
<!--
// Email obfuscator script 2.1 by Tim Williams, University of Arizona
// Random encryption key feature by Andrew Moulden, Site Engineering Ltd
// This code is freeware provided these four comment lines remain intact
// A wizard to generate this code is at http://www.jottings.com/obfuscator/
{ coded = "3A1OTJ:rJJ@VAK.GJ3"
  key = "J0K94NR2SXLupIGqVwt8EZlhznemfaPjs7QvTB6iOyWYo3rAk5FHMdxCg1cDbU"
  shift=coded.length
  link=""
  for (i=0; i<coded.length; i++) {
    if (key.indexOf(coded.charAt(i))==-1) {
      ltr = coded.charAt(i)
      link += (ltr)
    }
    else { 
      ltr = (key.indexOf(coded.charAt(i))-shift+key.length) % key.length
      link += (key.charAt(ltr))
    }
  }
document.write("<a href='mailto:"+link+"'>Send Me Email</a>")
}
//-->
</script><noscript>Sorry, you need Javascript on to email me.</noscript>

Bunu geri aldıktan sonra, bir editöre yapıştırıyorum ve:

  1. kaldır mailto:
  2. bağlantı metnini e-posta adresimin resmine işaretçi ile değiştir
  3. tüm değişkenleri yeniden adlandır
  4. "noscript" bölümünü e-posta adresi resminin başka bir bağlantısıyla değiştirin

Ben sonuçta:

<script type="text/javascript" language="javascript">
<!--
// Email obfuscator script 2.1 by Tim Williams, University of Arizona
// Random encryption kkeoy feature by Andrew Moulden, Site Engineering Ltd
// This kudzu is freeware provided these four comment lines remain intact
// A wizard to generate this kudzu is at http://www.jottings.com/obfuscator/
{ kudzu = "3A1OTJ:rJJ@VAK.GJ3"
  kkeoy = "J0K94NR2SXLupIGqVwt8EZlhznemfaPjs7QvTB6iOyWYo3rAk5FHMdxCg1cDbU"
  shift=kudzu.length
  klonk=""
  for (variter=0; variter<kudzu.length; variter++) {
    if (kkeoy.indexOf(kudzu.charAt(variter))==-1) {
      lutu = kudzu.charAt(variter)
      klonk += (lutu)
    }
    else {
      lutu = (kkeoy.indexOf(kudzu.charAt(variter))-shift+kkeoy.length) % kkeoy.length
      klonk += (kkeoy.charAt(lutu))
    }
  }
document.write("<a href='"+klonk+"'><img src='contactaddressimage.png' alt='Send Me Email' border='0' height='62' width='240'></a>")
}
//-->
</script>
<noscript>
    <img src="contactaddressimage.png" border="0" height="62" width="240">
    <font face="Arial" size="3"><br>&nbsp;</font></p>
</noscript>

3

Bunun ne kadar iyi çalışacağını bilmiyorum. Sayfa yüklenmeyi bitirdiğinde, e-posta adresinizi dışarıda bırakıp AJAX çağrısı kullanarak yüklenmesini sağlayamadınız. Spam botların değiştirilen HTML'yi alıp alamayacaklarından veya e-posta adreslerini seçmek ve diğer HTTP trafiğini dinlemek için yeterince akıllı olup olmadıklarından veya sayfayı ilk kez aldıkları gibi tarayacaklarından emin değiller.


AJAX e-posta yükleme uygulamasını uygulamak için harcanan zaman: 3 gün. Silmeniz gerekmeyen spam olarak kaydedilen süre: 17 dakika.

2

Bir adam bir e-posta adresini bir sayfada sunmanın dokuz farklı yolunu test etti ve sonuçları blogunda yayınladı .

En iyi üç yolu:

  1. CSS ile kod yönünü değiştirme
  2. CSS ekran kullanma: yok
  3. ROT13 Şifrelemesi

Dikkat - bu iki yıl önce gönderildi. Spam botları daha akıllı olmuş olabilir.


1

PHP ile çalışıyorsanız, bunu otomatik olarak yapan ücretsiz bir komut dosyası alabilirsiniz. Buna "Özel Baba" deniyor ve bunu kendi çevrimiçi ses akışı hizmetimiz için kullanıyoruz. Sadece bir satır kod ve kutunun dışında çalışır ... buradan alabilirsiniz


Birinin bunu neden düşürdüğünü bilmek istiyorum. Açıklamak yardımcı olur.
Yannis Dran

1

Başka bir yaklaşım, bir JavaScript çerçevesi kullanmak ve verileri / modeli HTML öğelerine bağlamak olabilir. AngularJS durumunda, HTML öğeleri şu şekilde yazılır:

<a href="mailto:{{contactEmail}}"><span>{{contactEmail}}</span></a>

{{Data}} enterpolasyonu, gerçek e-posta değerini içeren bir kapsam değişkeni kullanır. Ayrıca, e-postanın kod çözme işlemini aşağıdaki gibi gerçekleştiren bir filtre de kullanılabilir:

<a href="mailto:{{contactEmail | decode}}"><span>{{contactEmail | decode}}</span></a>

Yararları HTML'nin yazılma biçimindedir. Dezavantajı, bazılarının hayır hayır olabileceği komut dosyası desteği gerektirmesidir.

sadece başka bir yaklaşım.


1

JQuery kullanarak, ancak gerekirse düz JS'ye kolayca taşınabilir. Aşağıdaki HTML bloğunu alacaktır. Verdiğim bu örnek aynı zamanda tel:telefon görüşmeleri için de geçerlidir.

<a class="obfuscate" 
 href="mailto:archie...trajano...net">
 archie...trajano...net
</a>
<a class="obfuscate"
 href="tel:+One FourOneSix-EightFiveSix-SixSixFiveFive">
 FourOneSix-EightFiveSix-SixSixFiveFive
</a>

ve Javascript kullanarak uygun bağlantılara dönüştürün.

$ (". obfuscate"). each (function () {

$ (This) .html ($ (this) .html ()
.replace ("...", "@"). değiştirin (/\.\.\./ g, ".")
.replace (/ One / g, "1")
. değiştirin (/ İki / g, "2").
. değiştirin (/ Üç / g, "3")
. değiştirin (/ Dört / g, "4").
.place (/ Five / g, "5")
. değiştirin (/ Altı / g, "6")
.place (/ Seven / g, "7")
. değiştirin (/ Sekiz / g, "8")
.replace (/ Dokuz / g, "9")
.replace (/ Zero / g, "0"))

$ (this) .attr ("href", $ (this) .attr ("href")
.replace ("...", "@"). değiştirin (/\.\.\./ g, ".")
.replace (/ One / g, "1")
. değiştirin (/ İki / g, "2").
. değiştirin (/ Üç / g, "3")
. değiştirin (/ Dört / g, "4").
.place (/ Five / g, "5")
. değiştirin (/ Altı / g, "6")
.place (/ Seven / g, "7")
. değiştirin (/ Sekiz / g, "8")
.replace (/ Dokuz / g, "9")
.replace (/ Zero / g, "0"))

})

Burada daha ayrıntılı olarak belgeledim. Https://trajano.net/2017/01/obfuscating-mailto-links/

De / obfuscation algoritması oldukça basittir, bu yüzden ya yazmak için çok da vergi vermez (base64 ayrıştırmaya gerek yoktur)


1

Ajax çağrı çözümü

En iyisi web sitesinde bir form olması ve e-posta adresini göstermemektir, çünkü tüm robotlar günden güne daha akıllıdır, ancak web sitesinde e-posta adresi göstermeniz gerekiyorsa, web sitenizde ajax çağrısı ile yapabilirsiniz. tıklayın ve tıklandığında gösterin.

HTML

<a class="obfmail" href="#" rel="info">click here to show email address</a>

veya

<a class="obfmail" href="#" rel="info">
    <img src="img/click-to-show-email.jpg">
</a>

jQuery

$(document).one'click', '.obfmail', function(e) {
    e.preventDefault();
    a = $(this);
    addr = a.attr('rel');
    $.ajax({
        data: { 
            email: addr
        },
        url : "/a/getemail",
        type: "POST",
        dataType: 'json',
        success: function(data) {
            a.html(data.addr);
            a.attr('href', 'mailto:' + data.addr);
        }
    });
});

PHP

if($_POST['email']) {
    ...
    return json_encode(array(
        code     => '200',
        response => 'success',
        addr     => 'info@domain.ltd'
    ));
}

Daha fazla güvenlik için, değiştirebilir .ontarafından .oneböyle $(document).one('click', '.obfmail', function(e) {sen ajax çağrısında veri geçtikleri bir jetonu oluşturulur veya PHP ile hatta işyerlerinde, böyle ajax işlevinin sadece bir aramayı kabul etmek:

html: <a class="obfmail" href="#" rel="info" token="w3487ghdr6rc">

jQuery:

...
addr = a.attr('rel');
tkn  = a.attr('token');
$.ajax({
    data: { 
        email: addr,
        token: tkn
    }, ...

.

Döndürülen e-posta adresini de kodlamak veya tersine çevirmek mümkündür.

.

Telefon numaraları için de iyi çalışıyor!


0

Dürüst olmak gerekirse, bir mailto'nun gerçekten kullanmak istediğiniz şey olup olmadığı sorusunu sorduysanız sorununuz tartışmalı olabilir. Örneğin, web postasını kullanan veya tarayıcılarında uygun posta istemcisi kurulumuna sahip olmayan birçok kişi bir mailto'dan yararlanamayacaktır. E-posta adresinizi, kullanıcılarınızın büyük bir bölümünde çalışmayacak bir işlev için açığa vuruyorsunuz.

Bunun yerine, e-posta adresinin gizlenmesi ve bir mailto'dan yararlanamayan zayıf özler için endişelenmenize gerek kalmaması için e-postayı sahne arkasında göndermek için bir form kullanmaktır.


0

Sitenizde "E-posta adresim (benim adım) @ (soyadım) .com." Olduğunu ve adınızın ve soyadınızın oldukça açık olduğunu söylüyorsanız, bu en iyi spam koruması gibi görünüyor alacaksın.


tam teşekküllü e-postalarda parantezlere gerçekten izin verilmiyor mu? bunun geçerli bir e-posta adresi olabileceği anlaşılıyor. : p
Kzqai

1
Bu, spam botlarının gelen kutunuzu kaçırmasının bir başka nedenidir. :-)
Dean J

0

Birisi Rails kullanıyorsa, actionview-encoded_mail_togem kullanabilirsiniz . ( https://github.com/reed/actionview-encoded_mail_to )

Birkaç seçenek vardır:

: encode - Bu anahtar "javascript" veya "hex" dizelerini kabul eder. "Javascript" iletildiğinde dinamik olarak mailto bağlantısı oluşturulur ve kodlanır, ardından sayfanın DOM'sinde değerlendirilir. Kullanıcının JavaScript'i devre dışı bırakılmışsa bu yöntem sayfadaki bağlantıyı göstermez. "Onaltılık" iletildiğinde, mailto bağlantısını çıkarmadan önce hex, email_address kodlanır.

: replace_at - Bağlantı adı belirtilmediğinde, bağlantı etiketi için e-posta_adresi kullanılır. @ İşaretini değer olarak verilen dize ile değiştirerek e-posta_adresini gizlemek için bu seçeneği kullanabilirsiniz.

: replace_dot - Bağlantı adı belirtilmediğinde, bağlantı etiketi için e-posta_adresi kullanılır. Bu seçeneği, yerine e-posta_adresini koymak için kullanabilirsiniz. değer olarak verilen dize ile e-postada.


0
<!-- Multi-Email Obfuscator  -->
<!-- step 1: &#064; = @  -->
<!-- step 2: a scrap element  -->
<!-- step 3: ROT13 encode for .com  -->
info<!-- step 1 -->&#064;<!-- step 2 --><b style="display:none">my</b>domain<!-- step 3 --><script>document.write(".pbz".replace(/[a-zA-Z]/g,function(c){return String.fromCharCode((c<="Z"?90:122)>=(c=c.charCodeAt(0)+13)?c:c-26);}));</script>


0

Bu çözüm hiçbir yerde belirtilmediği için benim için iyi çalışıyor:

Bunu yapıyorum:

  • sahte e-posta ile mailto bağlantısı oluşturun. Bariz sebeplerden dolayı admin@localhost.localdomain'i seviyorum: Spammer bu adresi işaretlemeden kullanırken kendi botnet'ini spam yapabilir.

  • gerçek e-posta adresini girin ve ilgisiz ancak katlanabilir gizli bir açıklığa veya istediğiniz herhangi bir öğeye koyun. Açıkçası e-postayı gizlemek ve biçerdöverden gizlemek. Proje yapınıza bağlı olarak, onu bir JS veya Oturum değişkenine koymak isteyebilirsiniz.

  • bir saniye sonra bu bağlantılar için bir tıklama işleyicisi oluşturun ve varsayılan e-posta adresini yanlış postato bağlantısına varsayılanları engellemeyen doğru e-posta adresini yazın. Tarayıcıların mailto bağlantılarını tıkladığını düşünmüyorum, ancak eğer isterse, bir saniye beklemeyecek, bir insan sayfa yükünden sonraki ilk saniyede bir bağlantıyı tıklamak için aşırı hızlı olmalı.

Artık tamamen işlevsel ancak gizlenmiş, bal küpü ve zamana göre ayarlanmış bir mailto bağlantınız var.

Çalışma örneği php dosyası:

<html>
<head>
<title>E-Mail Obfuscating</title>
</head>
<body>
<?php
$email = "example@email.org";
echo "<a class='emailLink' href='mailto:admin@localhost.localdomain' >Send me an e-mail!</a>"
    ."<span style='display:none' data-hash='" . base64_encode($email) . "' />";
?>
<script>
<!--
var emailLinks = document.getElementsByClassName("emailLink");
setTimeout(function() {
    for(var i=0; i <emailLinks.length; ++i){
        emailLinks[i].addEventListener("click", function(){
            let encodedEmail = this.nextSibling.getAttribute('data-hash');
            let decodedEmail = atob(encodedEmail);
            this.href = "mailto:" + decodedEmail;
            this.text = decodedEmail;
        });
    }
}, 1000);

-->
</script>
</body>
</html>

Kod seninle olsun.


0

Parola ile korunan bir dizini işaret eden "Bana ulaşın" bağlantısı oluşturursanız ne olur? Tabii ki, erişim için izin vermelisiniz.

"Bana ulaşın"> •••••••••••> contact / index.html

Kişi / index.html sayfasında erişildikten sonra, örneğin bir mailto olan e-posta ortaya çıkar.


-1

Sayfa yükleme e-posta çıktısı için bazı javascript oluşturmak için bir PHP işlevi kullanın. JS'yi çalışma zamanında oluşturmak için PHP'ye ihtiyacınız olmadığını , JS'yi yerel olarak bir kez oluşturabilir ve ardından sayfanıza statik JS ekleyebilirsiniz.

Belirli bir HTML'deki ($ işlenmişContent HTML'dir) e-posta adreslerini otomatik olarak gizlemek için aşağıdaki bu snippet ile bağlantılı işlevi de kullanabilirsiniz:

 $emailMatches = array();
 $matchCount = preg_match_all('/(?:[a-zA-Z0-9_\.\-])+\@(?:(?:[a-zA-Z0-9\-])+\.)+(?:[a-zA-Z0-9]{2,4})+/', $processedContent, $emailMatches);

 if($matchCount > 0) {
    $emailMatches = $emailMatches[0];

    foreach($emailMatches as $email) {
    $replacement = createJSMailLink($email);

    $processedContent = str_replace($email, createJSMailLink($email), $processedContent);
 }

createJSMailLink () nerede tanımladınız?
Stelian

-2

Kontrol bu out.

'Enkoder Formu', E-posta adresinizi şifreleyecek ve sonucu kendi kendini değerlendiren bir JavaScript'e dönüştürerek, açık adresleri arayan web'i tarayan E-posta toplama robotlarından gizleyecektir. Adresiniz web tarayıcıları tarafından doğru bir şekilde görüntülenecek, ancak E-posta toplama robotlarına neredeyse tanımlanamayacak.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.