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:x@y.com">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.


10
Teruskan pesan ke akun GMail Anda. ;-)
Dave Jarvis


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.


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.


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.


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. :)


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@example.com')
< "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@example.com") ?>')">E-Mail</a>

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

<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

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.


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.


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.


8

milik saya sebenarnya sederhana:

<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>');
    });

10
pria malang yang memiliki hello@gmail.com :)
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/


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.


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:addr@site.tldbukan addr@site.tlddan 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:foo@bar.com(catatan saya menipu maksud asli situs web Jottings dengan memasukkan string mailto:foo@bar.comalih-alih foo@bar.com) 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: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>

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

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.


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.


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


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.


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)


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     => 'info@domain.ltd'
    ));
}

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!


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.


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.


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.


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

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 admin@localhost.localdomain 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 = "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>

Semoga kode itu bersama Anda.


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.


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("hello@example.com")
<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>`;

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("barnstable@example.com")

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 barnstable@example.com dikodekan ke Entitas HTML (diapit oleh tanda kutip tunggal).


-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);
 }

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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.