Cara terbaik untuk mengaburkan alamat email di situs web?

141

Saya telah menghabiskan beberapa hari terakhir bekerja untuk memperbarui situs web pribadi saya. URL dari situs pribadi saya adalah (nama depan saya). (Nama belakang saya) .com, karena nama belakang saya agak tidak biasa, dan saya cukup beruntung untuk mengambil nama domain tersebut. Alamat email saya adalah (nama depan saya) @ (nama belakang saya) .com. Jadi sungguh, ketika harus menebaknya, itu tidak terlalu sulit.

Bagaimanapun, saya ingin mengintegrasikan tautan mailto: ke situs web saya, sehingga orang dapat menghubungi saya. Dan, meskipun alamat email saya tidak terlalu sulit ditebak, saya lebih suka tidak diambil oleh bot spam yang hanya merayapi situs web untuk pola alamat email dan menambahkannya ke database mereka.

Apa cara terbaik bagi saya untuk mengaburkan alamat email saya, sebaiknya dalam bentuk tautan? Metode yang saya ketahui adalah:

<a href="mailto:[email protected]">e-mail me</a>

Ini berfungsi, tetapi itu juga berarti bahwa begitu situs web saya mengenai Google, saya akan melewati spam karena bot spam dengan mudah menemukan alamat email saya.

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

Ini kurang diminati, karena pengunjung tidak hanya tidak dapat mengkliknya untuk mengirimi saya email, tetapi bot spam yang lebih cerdas mungkin akan dapat mendeteksi karakter yang terkandung dalam gambar.

Saya tahu bahwa mungkin tidak ada solusi yang tepat, tetapi saya hanya ingin tahu apa yang menurut semua orang terbaik. Saya pasti bersedia menggunakan JavaScript jika perlu, karena situs web saya sudah memanfaatkan banyak sekali.

Adam Rezich
sumber
10
Teruskan pesan ke akun GMail Anda. ;-)
Dave Jarvis
1
Lihat pertanyaan
jacktrades
Posting ini harus ditautkan di sini.
Clément

Jawaban:

108

Saya menyandikan karakter sebagai entitas HTML ( seperti ini ). JS tidak perlu diaktifkan dan sepertinya telah menghentikan sebagian besar spam. Saya kira bot pintar mungkin masih memanennya, tetapi saya tidak punya masalah.

chroder
sumber
6
Ini menghentikan jenis pengambilan spambot yang paling sederhana (regex mencari teks apa pun yang menyerupai dan alamat email), dan tidak memiliki sisi negatif: ini sama nyamannya bagi pengguna akhir seperti tautan href = mailto: xxx @ yy yang menjelaskan.
Stephen C. Steel
5
Ini bekerja cukup baik karena banyak (kebanyakan?) Dari crawler / pemanen sangat bodoh.
Jacco
43
Menurut studi empiris dari tahun 2008 ini , penyandian URL adalah yang paling efektif. Hanya teks biasa yang lebih buruk.
Fuhrmanator
17
Saya tahu ini terlambat, tetapi perlu disebutkan bahwa saran di sini adalah menggunakan entitas HTML, yang berbeda dari pengkodean URL. Menurut penelitian tersebut, menggunakan entitas untuk @ dan periode adalah metode paling efektif kedua (yang paling efektif adalah tiga metode terikat pertama yang semuanya menghasilkan 0 pesan spam). Menarik untuk melihat apakah ini masih berlaku hampir 6 tahun kemudian.
Bailey Parker
12
Saya merasa ironis bahwa untuk melindungi email Anda, Anda harus memasukkannya ke dalam bentuk acak yang tampak teduh di situs yang Anda tautkan. Honeypotting, siapa saja? :)
srobinson
84

Secara pribadi, saya sudah menyerah untuk menyembunyikan alamat email saya. Saya merasa lebih mudah untuk mencari solusi pemfilteran spam yang lebih baik daripada khawatir tentang pengaburan. Anda bisa menghabiskan waktu berhari-hari untuk mencoba menemukan cara terbaik untuk mengaburkan alamat Anda, dan yang diperlukan hanyalah satu orang untuk menjual alamat Anda ke spammer dan semua pekerjaan itu tidak berguna.

Chad Birch
sumber
Tidak peduli seberapa bagus pemfilteran spam Anda, akan ada negatif palsu (email yang lolos tetapi seharusnya tidak). Pada akhirnya Anda harus hidup dengan alamat email, tetapi sepertinya eksposur yang tidak perlu seperti ini akan meningkatkan kambuhnya spam.
Brad Barker
8
@Brad menurut pengalaman saya, hal ini tidak terjadi. Saya menggunakan email yang diinangi Google untuk domain saya dan alamat email saya sangat mudah ditemukan. Saya memiliki 0 negatif palsu dan 1 positif palsu sejak saya mulai menggunakannya lebih dari 14 bulan yang lalu. Saya mendapatkan beberapa ratus spam setiap hari di folder spam saya.
Rex M
8
Eh, saya harus menambahkan: spam bukanlah hantu yang akan memakan anak-anak Anda. Mendapatkan email spam yang aneh bukanlah akhir dari dunia. Klik "laporkan spam" dan lanjutkan.
Kelopak mata
1
@Brad: Jika tidak perlu, jangan berikan alamat Anda sama sekali. Jika perlu memberikan alamat Anda, bersiaplah untuk spam. Anda tidak dapat memudahkan manusia untuk mengirimi Anda email tanpa juga memudahkan spambot untuk melakukannya.
Chuck
1
Saya baru saja memposting email saya tanpa disamarkan juga. Saya menggunakan gmail, dan filter spam tampaknya bekerja dengan sangat baik.
Asmor
68

Solusi yang diterima saat ini adalah membuat formulir kontak yang memungkinkan pengguna mengirimi Anda email. Jika Anda menerima banyak spam dari itu (saya tidak ada di situs saya), maka Anda dapat menambahkan captcha untuk ukuran yang baik, dan Anda akan jauh dari "buah gantung rendah" pada saat itu.

Faktanya adalah bahwa jika Anda menyediakan tautan yang dapat diklik pengguna untuk membuka klien email mereka dengan alamat Anda di bidang Kepada :, maka komputer dapat menguraikan alamat email dari laman dan begitu juga bot spam.

JoshJordan
sumber
2
Artinya, logika untuk mengirim email harus ditulis dalam kode sisi server yang tersembunyi sehingga alamat tersebut tidak pernah dipublikasikan.
JoshJordan
8
Meskipun ini solusi yang bagus, secara teknis, ini adalah solusi yang menarik bagi banyak pengguna. Katakan saja.
Kelopak mata
Anda memang benar, tapi saya tidak pernah mengerti mengapa. Paling banyak, Anda hanya berjarak satu klik dari formulir web, sama seperti minimal Anda menggunakan klien email. Satu-satunya hal yang menambah kesulitan adalah captcha opsional. Jika pengguna tidak dapat melakukannya untuk menghubungi Anda, apakah pesan mereka penting?
JoshJordan
15
Saya selalu suka jika ada opsi untuk mengirimkan pesan kepada Anda. Satu hal yang mengganggu saya tentang formulir kontak adalah tidak ada catatan di sistem email saya sendiri. (Meskipun bentuk CC yang dapat membuat alamat email mana pun dapat membuat kumpulan masalahnya sendiri.)
Sam Hasler
6
Juga tidak ada indikasi bahwa formulir email benar-benar berfungsi. Saya telah melihat terlalu banyak yang rusak diam-diam. Setidaknya, email nyata terpental.
Brian Carper
44

Anda menyebutkan ini untuk situs pribadi Anda. Di situs pribadi saya (misalnya, bobsomers.com) saya hanya memiliki paragraf yang mengatakan ini:

Cara terbaik untuk menghubungi saya sebelum situs baru dibuka adalah dengan mengirimi saya email. Alamat email saya adalah nama depan saya di situs web ini. Jika Anda tidak dapat mengetahuinya dari petunjuk itu, Anda mungkin merasa email lebih menantang daripada mencari tahu alamat saya.

Orang-orang tampaknya dapat mengetahuinya dengan baik, karena saya mendapatkan email yang sah setiap saat. Terkadang solusi terbaik tidak memerlukan penulisan kode apa pun. :)

Bob Somers
sumber
8
Metode ini juga menyaring orang-orang dengan IQ lebih rendah dari tingkat tertentu: D
papa zulu
18

Cara ringan untuk mengaburkan hrefjangkar adalah dengan menyandikannya dengan base64:

> btoa('mailto:[email protected]')
< "bWFpbHRvOmVtYWlsQGV4YW1wbGUuY29t"

Dan kemudian memasukkannya dengan hardcode:

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

Atau secara dinamis sisi server misalnya di PHP:

<a href="javascript:window.location.href=atob('<?= base64_encode("mailto:[email protected]") ?>')">E-Mail</a>

Dalam kombinasi dengan pengembalian string, ini bisa sangat menghemat spam:

<a href="javascript:window.location.href=atob('<?= base64_encode("mailto:[email protected]") ?>')" style="unicode-bidi: bidi-override; direction: rtl;"><?= strrev("[email protected]") ?></a>
Fabio Poloni
sumber
14

Ternyata menggunakan CSS untuk mengubah arah teks Anda bekerja dengan cukup baik. Tautan itu juga memiliki pengujian dari banyak metode kebingungan lainnya.

Apapun yang Anda gunakan pasti akan kalah. Tujuan utama Anda adalah untuk tidak mengganggu pengguna Anda.

Brian Carper
sumber
4
Ini mungkin salin dan tempel barang? IIRC
alex
7
Jika alamat tersebut disalin-tempel, alamat tersebut akan muncul di belakang. Ini bisa jadi tidak menyenangkan bagi pengguna, jika Anda ingin semudah mungkin menghubungi Anda.
Christian Davén
11

Jangan gunakan teknik kebingungan apa pun di sini karena ini mungkin tempat pertama para pemanen email akan mencari tahu bagaimana orang-orang mengaburkan email. Jika Anda ingin alamat email Anda terlihat di situs, jangan hanya menyalin kata demi kata metode orang lain; mengaburkannya dengan cara unik yang belum pernah digunakan situs lain sehingga metode Anda tidak akan diketahui pemanen sebelum mereka mengunjungi situs Anda.

Sam Hasler
sumber
8
Sangat rekursif.
Paul Tomblin
Unniloct: Jawaban Sam Hasler berlaku terlepas dari apa jawaban teratasnya. Dengan menggunakan teknik kebingungan paling populer, Anda akan mendapatkan target panen yang paling mungkin.
Kelopak mata
Kecuali jika jawaban teratas adalah tidak benar-benar menggunakan kebingungan :)
JoshJordan
@JoshJordan: setuju, saya benar-benar memilih jawaban Anda. Maksud saya adalah bahwa teknik kebingungan populer pada akhirnya akan diketahui oleh spammer dan mereka akan menulis kode untuk menyederhanakannya.
Sam Hasler
2
Saat ini halaman ini adalah hasil ke-28 yang dikembalikan oleh google untuk [alamat email yang tidak jelas], meskipun saya berharap itu akan meningkat lebih tinggi pada akhirnya.
Sam Hasler
8

Anda dapat melakukan seperti yang dilakukan Google di Google Code (dan Grup). Tampilkan par tof email, dan bagian yang dapat diklik ("..."). Mengklik yang menunjukkan Anda ingin mengetahui email tersebut, dan Anda diminta untuk mengisi captcha. Setelah itu email (dan lainnya?) Terlihat oleh Anda.

Ross
sumber
8

milik saya sebenarnya sederhana:

<h3 id="email">[email protected]</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>');
    });
keithics
sumber
10
pria malang yang memiliki [email protected] :)
duedl0r
2
Tidak ada email di Gmail dengan 5 karakter.
Paulo Ney
6

Saya menggunakan obfuscation JavaScript, lihat yang ini sebagai contoh:

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

Codebrain
sumber
2
-1: Sudahkah Anda melihat kode yang dihasilkannya? Ini sebenarnya tidak mengaburkan alamat email Anda jika Anda memasukkannya ke dalam "teks tautan", dan memungkiri tujuannya dengan "mailto:". Lebih buruk lagi, ini adalah solusi yang membutuhkan Javascript, yang seharusnya tidak diandalkan untuk konten dasar.
Kelopak mata
6

Satu situs web yang saya kelola menggunakan cara JavaScript yang agak sederhana (mudah-mudahan) mencegah spambots keluar.

Tautan email memanggil fungsi JS:

function sendEmail (nama, domain) {
    location.href = 'mailto:' + name + '@' + domain;
}

Untuk memastikan hanya pengguna yang mengaktifkan JS yang dapat melihat tautan, tulis dengan ini:

function writeEmailLink (realName, name, domain) {
    document.write ('<a href = "javascript: sendEmail (\' '
      + nama + '\', \ '' + domain + '\') "> ');
    document.write (realName);
    document.write ('</a>');
}   

Penggunaan satu fungsi JS untuk menulis tautan yang memanggil yang lain berarti ada dua lapisan perlindungan.

Stewart
sumber
5

Seperti yang dikatakan poster di atas, saya juga menggunakan obfuscation JavaScript dari situs web jottings .

Halaman web menghasilkan beberapa JavaScript yang dapat ditingkatkan. The mailto:teks string di jelas dan diidentifikasi oleh robot (yang bisa melihat ini dan unobfuscate string ini), tetapi jika salah satu masuk ke dalam jottings.com halaman web alamat email dari bentuk mailto:[email protected]bukan [email protected]dan kemudian menghapus teksmailto:dari JavaScript yang dihasilkan, seseorang tiba-tiba memiliki beberapa JavaScript yang tampaknya tidak ada hubungannya dengan email sama sekali - hanya JavaScript acak yang webnya penuh. Seseorang dapat meningkatkan ini lebih jauh dengan menghilangkan teks tautan - Saya mengganti milik saya dengan gambar alamat email saya yang dalam font yang cukup tidak jelas. Kemudian untuk berjaga-jaga jika metode ini di jottings.com menjadi populer, saya mengacak nama variabel di output JavaScript untuk menyulitkan robot untuk melihat contoh dari jottings yang dihasilkan kode JavaScript.

Jelas beberapa perbaikan ini dapat dibangun ke dalam mekanisme pencatatan itu sendiri, dan karena kodenya tersedia secara terbuka, ini akan relatif mudah.

Sebuah contoh mungkin membuat ini sedikit lebih jelas. Saya menggunakan Obfuscator Jottings pada tautan di atas untuk mengaburkan mailto:[email protected](catatan saya menipu maksud asli situs web Jottings dengan memasukkan string mailto:[email protected]alih-alih [email protected]) dengan teks "Send Me Email", yang diubah menjadi Javascript ini:

<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:[email protected]"
  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>

Setelah saya mendapatkannya kembali, saya menempelkannya ke editor dan:

  1. Hapus mailto:
  2. ganti teks tautan dengan penunjuk ke gambar alamat email saya
  3. ganti nama semua variabel
  4. ganti bagian "noscript" dengan tautan lain ke gambar alamat email

Saya berakhir dengan ini:

<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:[email protected]"
  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>
Al Whaley
sumber
3

Saya tidak seberapa baik ini akan berhasil. Tidak bisakah Anda meninggalkan alamat email Anda dan membuatnya dimuat menggunakan panggilan AJAX setelah halaman selesai dimuat. Tidak yakin apakah bot spam dapat mengambil HTML yang telah diubah atau apakah mereka cukup pintar untuk mendengarkan lalu lintas HTTP lain untuk mencoba dan memilih alamat email atau apakah mereka hanya memindai halaman seperti yang diterima pertama kali.

uriDium
sumber
Waktu yang dihabiskan untuk menerapkan implementasi pemuatan email AJAX: 3 hari. Waktu yang dihemat dalam spam tidak perlu Anda hapus: 17 menit.
2

Seorang pria menguji sembilan cara berbeda dalam menampilkan alamat email di halaman dan kemudian mempublikasikan hasilnya di blognya.

Tiga cara terbaiknya adalah:

  1. Mengubah arah kode dengan CSS
  2. Menggunakan tampilan CSS: tidak ada
  3. Enkripsi ROT13

Peringatan - ini telah diposting dua tahun lalu. Bot spam mungkin semakin pintar.

Doug Harris
sumber
1

Jika Anda bekerja dengan PHP, Anda dapat mengambil skrip gratis yang melakukannya secara otomatis. Ini disebut "Private Daddy" dan kami menggunakannya untuk layanan streaming audio online kami sendiri. Hanya satu baris kode dan berhasil di luar kotak ... Anda dapat mengambilnya di sini

Reuven
sumber
Saya ingin tahu mengapa seseorang tidak menyukai ini. Akan sangat membantu jika dijelaskan.
Yannis Dran
1

Pendekatan lain bisa dengan menggunakan kerangka JavaScript dan mengikat data / model ke elemen HTML. Dalam kasus AngularJS, elemen HTML akan ditulis sebagai:

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

Pengikatan {{data}} interpolasi menggunakan variabel cakupan yang berisi nilai email sebenarnya. Selain itu, filter juga dapat digunakan yang menangani decoding email sebagai berikut:

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

Manfaatnya ada pada cara penulisan HTML. Sisi negatifnya adalah ia membutuhkan dukungan scripting yang beberapa mungkin tidak, tidak.

hanyalah pendekatan lain.

Ozkary
sumber
1

Menggunakan JQuery, tetapi dapat dengan mudah di-porting ke JS biasa jika diperlukan. Akan mengambil blok HTML berikut. Contoh yang saya berikan ini juga untuk tel:tautan untuk panggilan telepon.

<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>

dan mengubahnya menjadi tautan yang tepat menggunakan Javascript.

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

$ (ini) .html ($ (ini) .html ()
.replace ("...", "@"). ganti (/\.\.\./ g, ".")
.replace (/ One / g, "1")
.replace (/ Two / g, "2")
.replace (/ Three / g, "3")
.replace (/ Empat / g, "4")
.replace (/ Five / g, "5")
.replace (/ Enam / g, "6")
.replace (/ Seven / g, "7")
.replace (/ Delapan / g, "8")
.replace (/ Sembilan / g, "9")
.replace (/ Zero / g, "0"))

$ (this) .attr ("href", $ (this) .attr ("href")
.replace ("...", "@"). ganti (/\.\.\./ g, ".")
.replace (/ One / g, "1")
.replace (/ Two / g, "2")
.replace (/ Three / g, "3")
.replace (/ Empat / g, "4")
.replace (/ Five / g, "5")
.replace (/ Enam / g, "6")
.replace (/ Seven / g, "7")
.replace (/ Delapan / g, "8")
.replace (/ Sembilan / g, "9")
.replace (/ Zero / g, "0"))

})

Saya mendokumentasikannya lebih detail di sini https://trajano.net/2017/01/obfuscating-mailto-links/

Algoritme de / obfuscation cukup sederhana sehingga tidak terlalu berat untuk menulis (tidak perlu parsing base64)

Archimedes Trajano
sumber
1

Solusi panggilan Ajax

Yang terbaik adalah memiliki formulir di situs web dan tidak menunjukkan alamat email, karena semua robot semakin pintar dari hari ke hari, tetapi jika Anda perlu menunjukkan alamat email di situs web, jadi, Anda dapat membuatnya dengan panggilan ajax di Anda. server, dan tunjukkan saat diklik.

HTML

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

atau

<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     => '[email protected]'
    ));
}

Untuk keamanan yang lebih, Anda dapat mengubah .ondengan .oneseperti ini $(document).one('click', '.obfmail', function(e) {atau bahkan bekerja dengan PHP dihasilkan token yang Anda lulus menjadi data panggilan ajax, untuk hanya menerima satu panggilan dari fungsi ajax seperti ini:

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

jquery:

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

.

Dimungkinkan juga untuk menyandikan alamat email yang dikembalikan juga atau membalikkannya.

.

Bekerja dengan baik untuk nomor telepon juga!

Meloman
sumber
0

Sejujurnya, masalah Anda mungkin diperdebatkan jika Anda ditanyai apakah mailto benar-benar yang ingin Anda gunakan atau tidak. Banyak orang yang menggunakan email web, misalnya, atau tidak memiliki pengaturan klien email yang tepat di browser mereka tidak akan mendapatkan keuntungan dari mailto. Anda mengekspos alamat email Anda untuk suatu fungsi yang tidak akan berfungsi untuk sebagian besar pengguna Anda.

Yang bisa Anda lakukan adalah menggunakan formulir untuk mengirim email di belakang layar sehingga alamat email disembunyikan dan Anda tidak perlu khawatir tentang orang-orang miskin yang tidak akan mendapatkan keuntungan dari mailto.

Brad Barker
sumber
0

Jika Anda mengatakan di situs Anda bahwa "Alamat email saya adalah (nama depan saya) @ (nama belakang saya) .com.", Dan nama depan serta nama belakang Anda sangat jelas, tampaknya itu adalah perlindungan spam terbaik Anda akan mendapatkan.

Dean J
sumber
bukankah tanda kurung benar-benar diperbolehkan dalam email lengkap? sepertinya itu adalah alamat email yang valid. : p
Kzqai
1
Yang merupakan alasan lain bot spam akan kehilangan kotak masuk Anda. :-)
Dean J
0

Jika ada yang menggunakan Rails, mereka dapat menggunakan actionview-encoded_mail_topermata itu. ( https://github.com/reed/actionview-encoded_mail_to )

Ada beberapa pilihan:

: encode - Kunci ini akan menerima string "javascript" atau "hex". Meneruskan "javascript" akan membuat dan menyandikan link mailto secara dinamis, lalu mengevaluasinya ke DOM halaman. Metode ini tidak akan menampilkan link di halaman jika JavaScript dinonaktifkan oleh pengguna. Meneruskan "hex" akan mengkodekan alamat email sebelum mengeluarkan tautan mailto.

: replace_at - Jika nama link tidak diberikan, email_address digunakan untuk label link. Anda dapat menggunakan opsi ini untuk mengaburkan alamat_email dengan mengganti tanda @ dengan string yang diberikan sebagai nilainya.

: replace_dot - Jika nama link tidak diberikan, email_address digunakan untuk label link. Anda dapat menggunakan opsi ini untuk mengaburkan alamat_email dengan mengganti. di email dengan string yang diberikan sebagai nilainya.

chug2k.dll
sumber
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>
PHC
sumber
0

Karena solusi ini tidak disebutkan di mana pun, tetapi berfungsi dengan baik untuk saya:

Saya melakukan ini:

  • buat tautan mailto dengan email palsu. Saya suka [email protected] karena alasan yang jelas: Spammer mungkin mengirim spam ke botnetnya sendiri saat menggunakan alamat ini tidak dicentang.

  • cypher alamat email asli dan letakkan di rentang tersembunyi yang tidak terkait tetapi dapat ditemukan atau elemen apa pun yang Anda suka. Jelas untuk mengaburkan email dan menyembunyikannya dari pemanen. Bergantung pada struktur proyek Anda, Anda bahkan mungkin ingin memasukkannya ke dalam variabel JS atau Sesi.

  • buat penangan klik untuk tautan ini setelah beberapa saat yang mendekripsikan dan menulis alamat email yang benar ke tautan mailto palsu yang tidak mencegah default. Menurut saya perayap tidak mengeklik tautan mailto, tetapi jika mereka mau, mereka mungkin tidak akan menunggu sedetik pun, sementara manusia harus sangat cepat mengeklik tautan di detik pertama setelah pemuatan halaman.

Sekarang Anda memiliki tautan mailto yang berfungsi penuh tetapi dikaburkan, disederhanakan, dan diamankan dengan waktu.

Contoh kerja file php:

<html>
<head>
<title>E-Mail Obfuscating</title>
</head>
<body>
<?php
$email = "[email protected]";
echo "<a class='emailLink' href='mailto:[email protected]' >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>

Semoga kode itu bersama Anda.

mondjunge.dll
sumber
0

Bagaimana jika membuat tautan "Hubungi saya" yang mengarah ke direktori yang dilindungi kata sandi? Tentu saja, Anda harus memberikan izin untuk mengakses.

"Hubungi saya"> •••••••••••> contact / index.html

Setelah diakses, halaman contact / index.html menampilkan email tersebut, misalnya mailto.

Pascal Myrta
sumber
0

Solusi saya adalah mengatur ulang karakter menggunakan css dan mengganti elemen pada hover. Tidak ada perubahan yang terlihat oleh pengguna.

const obscureHoverReverseMailTo = input => `<span style="display: inline-flex; color: rgb(0, 0, 238); cursor: pointer; text-decoration: underline;" onmouseover="const newContent = [...this.children].sort((a, b) => a.style.order - b.style.order).map(el => el.innerText).join('');this.outerHTML = \`<a href='mailto: \${newContent}'>\${newContent}</a>\`">${input.split("").map((char, index) => `<span style="order: ${index}">${char}</span>`).sort(() => 0.5 - Math.random()).join("")}</span>`;

const obscureHoverReverseMailTo = input => `<span style="display: inline-flex; color: rgb(0, 0, 238); cursor: pointer; text-decoration: underline;" onmouseover="const newContent = [...this.children].sort((a, b) => a.style.order - b.style.order).map(el => el.innerText).join('');this.outerHTML = \`<a href='mailto: \${newContent}'>\${newContent}</a>\`">${input.split("").map((char, index) => `<span style="order: ${index}">${char}</span>`).sort(() => 0.5 - Math.random()).join("")}</span>`;

document.getElementById("testRoot").innerHTML = obscureHoverReverseMailTo("[email protected]")
<div id="testRoot"></div>

<input type="text" onkeyup="document.getElementById('testOut').innerHTML = obscureHoverReverseMailTo(this.value)">
<div id="testOut"></div>

inilah fungsinya jika Anda memiliki sesuatu yang disembunyikan:

const obscureHoverReverse = input => `<span style="display: inline-flex" onmouseover="this.outerHTML = [...this.children].sort((a, b) => a.style.order - b.style.order).map(el => el.innerText).join('')">${input.split("").map((char, index) => `<span style="order: ${index}">${char}</span>`).sort(() => 0.5 - Math.random()).join("")}</span>`;
Teiem
sumber
0

Saya setuju dengan @srobinson karena menggunakan formulir online untuk pengkodean ke entitas html tampaknya sedikit teduh. Beberapa baris python akan melakukannya untuk Anda:

def htmlEntities( string ):
    return ''.join(['&#{0};'.format(ord(char)) for char in string])

htmlEntities("[email protected]")

pengembalian di atas:

'&#98;&#97;&#114;&#110;&#115;&#116;&#97;&#98;&#108;&#101;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#99;&#111;&#109;'

Yang [email protected] dikodekan ke Entitas HTML (diapit oleh tanda kutip tunggal).

DRAD
sumber
-1

Saya menggunakan fungsi PHP untuk menghasilkan beberapa javascript untuk menampilkan email saat pemuatan halaman. Perhatikan bahwa Anda tidak memerlukan PHP untuk menghasilkan JS saat runtime, Anda dapat membuat JS satu kali secara lokal dan kemudian menyertakan JS statis di halaman Anda.

Anda juga dapat menggunakan fungsi tertaut dengan cuplikan di bawah ini untuk secara otomatis mengaburkan alamat email di beberapa HTML tertentu (di mana $ processingContent adalah HTML):

 $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);
 }
iloveitaly
sumber
di mana Anda mendefinisikan createJSMailLink ()?
Stelian
-2

Lihat ini .

'Formulir Enkoder' akan mengenkripsi alamat Email Anda dan mengubah hasilnya menjadi JavaScript yang mengevaluasi sendiri, menyembunyikannya dari robot pemanen Email yang merayapi web untuk mencari alamat yang terbuka. Alamat Anda akan ditampilkan dengan benar oleh browser web, tetapi secara virtual tidak dapat diuraikan oleh robot pemanen Email.

Zaki
sumber