Cách tốt nhất để làm xáo trộn một địa chỉ email trên một trang web?


136

Tôi đã dành vài ngày qua để cập nhật trang web cá nhân của mình. URL của trang web cá nhân của tôi là (tên của tôi). (Họ của tôi) .com, vì họ của tôi khá bất thường và tôi đã may mắn nhận được tên miền. Địa chỉ email của tôi là (tên của tôi) @ (tên cuối cùng của tôi) .com. Vì vậy, thực sự, khi đoán ra nó, nó không khó lắm.

Dù sao, tôi muốn tích hợp một liên kết mailto: vào trang web của tôi để mọi người có thể liên hệ với tôi. Và, mặc dù địa chỉ email của tôi không quá khó đoán, tôi không muốn bị thu thập bởi các bot spam chỉ thu thập dữ liệu trang web cho các mẫu địa chỉ email và thêm chúng vào cơ sở dữ liệu của họ.

Cách tốt nhất để tôi làm xáo trộn địa chỉ e-mail của tôi, tốt nhất là ở dạng liên kết là gì? Các phương pháp tôi biết là:

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

Nó hoạt động, nhưng điều đó cũng có nghĩa là ngay khi trang web của tôi truy cập Google, tôi sẽ lướt qua thư rác vì các bot spam dễ dàng chọn địa chỉ email của tôi.

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

Điều này ít được mong muốn hơn, bởi vì không chỉ khách truy cập không thể nhấp vào nó để gửi email cho tôi, mà các bot spam thông minh hơn có thể sẽ có thể phát hiện các ký tự mà hình ảnh chứa.

Tôi biết rằng có lẽ không có giải pháp hoàn hảo, nhưng tôi chỉ tự hỏi những gì mọi người nghĩ là tốt nhất. Tôi chắc chắn sẵn sàng sử dụng JavaScript nếu cần thiết, vì trang web của tôi đã sử dụng hàng tấn nó.


10
Chuyển tiếp tin nhắn đến tài khoản GMail của bạn. ;-)
Dave Jarvis


Bài đăng này nên được liên kết ở đây.
Clément

Câu trả lời:


106

Tôi mã hóa các ký tự dưới dạng các thực thể HTML (đại loại như thế này ). Nó không yêu cầu phải kích hoạt JS và dường như đã dừng hầu hết các thư rác. Tôi cho rằng một bot thông minh vẫn có thể thu hoạch nó, nhưng tôi không có vấn đề gì.


6
Điều này dừng loại thu hoạch spambot đơn giản nhất (regex tìm kiếm bất kỳ văn bản nào giống với địa chỉ e-mail) và không có nhược điểm: nó thuận tiện cho người dùng cuối như liên kết explict href = mailto: xxx @ yy.
Stephen C. Steel

5
Điều này hoạt động khá tốt bởi vì nhiều (hầu hết?) Của các trình thu thập / thu hoạch là vô cùng ngu ngốc.
Jacco

43
Theo nghiên cứu thực nghiệm này từ năm 2008 , mã hóa URL là cách tiếp theo ít hiệu quả nhất. Chỉ có văn bản đơn giản là tồi tệ hơn.
Fuhrmanator

16
Tôi biết điều này là muộn, nhưng đáng để chỉ ra rằng đề xuất ở đây là sử dụng các thực thể HTML, khác với mã hóa URL. Theo nghiên cứu đó, sử dụng các thực thể cho @ và period là phương pháp hiệu quả thứ hai (hiệu quả nhất là ba phương thức được buộc đầu tiên mà tất cả đều dẫn đến 0 tin nhắn rác). Sẽ rất thú vị để xem nếu điều này vẫn còn giữ gần 6 năm sau.
Bailey Parker

12
Tôi thấy thật trớ trêu rằng để bảo vệ email của bạn, bạn phải nhập nó vào một hình thức ngẫu nhiên, mờ ám tại trang web mà bạn liên kết đến. Có ai không? :)
srobinson

84

Cá nhân, tôi đã từ bỏ việc giấu địa chỉ email của mình. Tôi thấy việc xem xét các giải pháp lọc thư rác tốt hơn là lo lắng về việc che giấu. Bạn có thể mất nhiều ngày cố gắng tìm cách tốt nhất để làm xáo trộn địa chỉ của bạn, và sau đó tất cả chỉ cần một người bán địa chỉ của bạn cho một người gửi thư rác và tất cả công việc đó đều vô ích.


Cho dù việc lọc thư rác của bạn tốt đến đâu thì cũng sẽ có những tiêu cực sai (thư không được thông qua đó). Cuối cùng, bạn phải sống với địa chỉ email, nhưng có vẻ như loại tiếp xúc không cần thiết này sẽ làm tăng sự tái phát của thư rác.
Brad Barker

8
@Brad theo kinh nghiệm của tôi điều này đã không xảy ra. Tôi sử dụng thư được lưu trữ trên Google cho tên miền của mình và địa chỉ email của tôi cực kỳ dễ tìm. Tôi đã có 0 âm tính giả và 1 dương tính giả kể từ khi tôi bắt đầu sử dụng nó hơn 14 tháng trước. Tôi nhận được hàng trăm thư rác mỗi ngày trong thư mục thư rác của mình.
Rex M

8
Er, tôi nên thêm: thư rác không phải là một boogeyman sẽ ăn thịt con bạn. Nhận một email spam kỳ lạ không phải là kết thúc của thế giới. Nhấp vào "báo cáo thư rác" và di chuyển trên.
mí mắt

1
@Brad: Nếu không cần thiết, đừng đưa ra địa chỉ của bạn. Nếu cần phải cung cấp địa chỉ của bạn, hãy sẵn sàng cho thư rác. Bạn không thể làm cho con người dễ dàng gửi email cho bạn mà không làm cho một spambot dễ dàng làm điều đó.
Chuck

1
Tôi chỉ gửi email của tôi không bị ảnh hưởng là tốt. Tôi sử dụng gmail và bộ lọc thư rác dường như hoạt động rất tốt.
Asmor

68

Giải pháp được chấp nhận hiện tại là tạo một biểu mẫu liên hệ cho phép người dùng gửi email cho bạn. Nếu bạn nhận được rất nhiều thư rác từ đó (tôi không có trên trang web của tôi), thì bạn có thể thêm một hình ảnh xác thực cho biện pháp tốt và bạn sẽ cách xa "trái cây treo thấp" vào thời điểm đó.

Thực tế của vấn đề là nếu bạn đang cung cấp một liên kết mà người dùng có thể nhấp vào để bật mở ứng dụng email của họ với địa chỉ của bạn trong trường To: thì máy tính có thể giải mã địa chỉ email từ trang và do đó có thể một bot spam.


2
Điều đó có nghĩa là, logic để gửi email phải được viết bằng mã phía máy chủ ẩn để địa chỉ không bao giờ được công khai.
JoshJordan

8
Mặc dù đây là một giải pháp tốt, về mặt kỹ thuật, đó là một giải pháp dành cho nhiều người dùng. Chỉ cần nói.
mí mắt

Bạn hoàn toàn đúng, nhưng tôi chưa bao giờ hiểu tại sao. Nhiều nhất, bạn chỉ cần một cú nhấp chuột từ mẫu web, giống như bạn sẽ ở mức tối thiểu với một ứng dụng email. Điều duy nhất làm tăng thêm khó khăn là captcha tùy chọn. Nếu người dùng không thể thông qua đó để liên lạc với bạn, tin nhắn của họ có quan trọng không?
JoshJordan

15
Tôi luôn thích nó khi có tùy chọn gửi CC cho bạn tin nhắn. Một điều làm phiền tôi về các hình thức liên lạc là nó không để lại bản ghi trong hệ thống email của riêng tôi. (Mặc dù một hình thức mà CC bất kỳ địa chỉ email có thể tạo ra nó là thiết lập riêng của các vấn đề.)
Sam Hasler

6
Cũng không có dấu hiệu nào cho thấy mẫu email thực sự hoạt động. Tôi đã thấy quá nhiều thứ bị âm thầm phá vỡ. Email thực sự bị trả lại, ít nhất.
Brian Carper

44

Bạn đã đề cập điều này là cho trang web cá nhân của bạn. Trên trang cá nhân của tôi (ví dụ: bobsomers.com) tôi chỉ có một đoạn có nội dung này:

Cách tốt nhất để liên lạc với tôi trước khi trang web mới hoạt động là gửi email cho tôi. Địa chỉ email của tôi là tên đầu tiên của tôi tại trang web này. Nếu bạn không thể tìm ra nó từ gợi ý đó, tốt, bạn có thể thấy email có nhiều thách thức hơn là tìm ra địa chỉ của tôi.

Mọi người dường như có thể tìm ra điều đó tốt, vì tôi nhận được email hợp pháp mọi lúc. Đôi khi các giải pháp tốt nhất không yêu cầu viết bất kỳ mã nào. :)


7
Phương pháp này cũng lọc ra những người có IQ thấp hơn một mức nhất định: D
papa zulu

36

reCAPTCHA cung cấp dịch vụ giấu email đơn giản . Bạn không cần thiết lập tài khoản và có thể bắt đầu sử dụng ngay lập tức. Bạn có thể sử dụng dịch vụ như một liên kết hoặc như một cửa sổ bật lên.

Sau khi captcha được giải quyết, địa chỉ email của bạn xuất hiện dưới dạng href / mailto, do đó người dùng đã định cấu hình ứng dụng email của họ để làm việc với trình duyệt của họ.


Điều này thật tuyệt và sẽ hoạt động 99,9% thời gian. Cảm ơn các liên kết đến. Nó sẽ thất bại khi bot đang tự động hóa một trình duyệt.
IEnumerator

9
Tôi không nghĩ rằng phần lớn người dùng web sẽ nỗ lực giải quyết một hình ảnh xác thực chỉ để gửi email cho ai đó.
AndyM

7
Tôi với Andy về điều này. CAPTCHA là một nỗi đau và reCAPTCHA là một nỗi đau thậm chí còn lớn hơn mức trung bình vì chúng thường quá khó đọc. Nếu mọi người gửi email cho bạn là một điểm chuyển đổi (ví dụ: cho phép khách hàng hỏi về dịch vụ, đặt hàng hoặc hỏi báo giá), bạn thực sự muốn làm cho họ dễ dàng nhất có thể để họ làm như vậy.
Sylverdrag

8
Dịch vụ này không còn tồn tại nữa.
sorin

Google Mail leather đã ngừng hoạt động kể từ ngày 31 tháng 3 năm 2018.
sean

18

Một cách nhẹ nhàng để làm xáo trộn mỏ hrefneo là mã hóa cơ sở64:

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

Và sau đó bao gồm nó được mã hóa cứng:

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

Hoặc phía máy chủ động, ví dụ như trong PHP:

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

Kết hợp với đảo ngược chuỗi, nó có thể là thư rác khá tiết kiệm:

<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

Rõ ràng là sử dụng CSS để thay đổi hướng văn bản của bạn hoạt động khá tốt. Liên kết đó có một thử nghiệm của một loạt các phương pháp obfuscation khác là tốt.

Bất cứ điều gì bạn sử dụng chắc chắn sẽ bị đánh bại. Mục đích chính của bạn là để tránh làm phiền người dùng.


4
Những thứ này sao chép và dán có thể? IIRC
alex

7
Khi địa chỉ được sao chép, nó sẽ hiển thị ngược. Điều này có thể gây khó chịu cho người dùng, nếu bạn muốn việc liên lạc với bạn dễ dàng nhất có thể.
Christian Davén

10

Đừng sử dụng bất kỳ kỹ thuật che giấu nào ở đây vì có lẽ đây là nơi đầu tiên những người thu thập email sẽ tìm hiểu xem mọi người đang làm phiền các email như thế nào. Nếu bạn phải hiển thị địa chỉ email của mình trên trang web, đừng sao chép nguyên văn phương thức của người khác; làm xáo trộn nó theo một cách duy nhất mà không có trang web nào khác đã sử dụng để phương thức của bạn sẽ không được biết đến bởi những người thu hoạch trước khi họ truy cập trang web của bạn.


8
Làm thế nào rất đệ quy.
Paul Tomblin

Unniloct: Anwswer của Sam Hasler áp dụng bất kể câu trả lời hàng đầu là gì. Bằng cách sử dụng kỹ thuật obfuscation phổ biến nhất, bạn sẽ đạt được mục tiêu thu hoạch cao nhất.
mí mắt

Trừ khi câu trả lời hàng đầu là không thực sự sử dụng obfuscation :)
JoshJordan

@JoshJordan: đồng ý, tôi thực sự đã bỏ phiếu cho câu trả lời của bạn. Quan điểm của tôi là bất kỳ kỹ thuật obfuscation phổ biến nào cuối cùng sẽ được chú ý bởi những kẻ gửi thư rác và họ sẽ viết mã để khử rung nó.
Sam Hasler

2
Hiện tại trang này là kết quả thứ 28 được google trả về cho [địa chỉ email ẩn giấu], mặc dù tôi hy vọng nó sẽ tăng cao hơn cuối cùng.
Sam Hasler

8

Bạn có thể làm như Google làm trên Google Code (và Groups). Hiển thị một parof của email và một phần có thể nhấp ("..."). Nhấp vào đó cho biết bạn muốn biết email và bạn được yêu cầu điền hình ảnh xác thực. Sau đó, email (và những người khác?) Hiển thị cho bạn.


8

Của tôi thực sự đơn giản:

<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
anh chàng tội nghiệp sở hữu hello @ gmail :)
duedl0r

2
Không có email trên Gmail với 5 ký tự.
Paulo Ney

6

Tôi sử dụng JavaScript obfuscation, hãy xem cái này chẳng hạn:

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


2
-1: Bạn đã xem mã mà nó tạo ra chưa? Nó không thực sự làm xáo trộn địa chỉ email của bạn nếu bạn đưa nó vào "văn bản liên kết" và tin vào mục đích của nó với "mailto:". Tồi tệ hơn, đó là một giải pháp yêu cầu Javascript, không nên dựa vào nội dung cơ bản.
mí mắt

6

Một trang web tôi duy trì sử dụng một phương tiện JavaScript hơi đơn giản (hy vọng) giữ cho spam.

Liên kết email gọi hàm JS:

chức năng sendEmail (tên, tên miền) {
    location.href = 'mailto:' + name + '@' + tên miền;
}

Để đảm bảo chỉ những người dùng đã kích hoạt JS mới có thể thấy liên kết, hãy viết chúng ra bằng:

hàm writeEmailLink (realName, name, domain) {
    document.write ('<a href = "javascript: sendEmail (\' '
      + tên + '\', \ '' + tên miền + '\') "> ');
    document.write (tên thật);
    document.write ('</a>');
}   

Việc sử dụng một hàm JS để viết ra một liên kết gọi một liên kết khác có nghĩa là có hai lớp bảo vệ.


4

Như một poster ở trên đã nói, tôi cũng sử dụng JavaScript obfuscation từ trang web jottings .

Trang web tạo ra một số JavaScript có thể được cải thiện. Chuỗi mailto:văn bản rõ ràng và có thể nhận dạng được bởi các robot (có thể phát hiện ra điều này và không kích hoạt chuỗi này), nhưng nếu một người truy cập vào trang web jottings.com, một địa chỉ email có dạng mailto:addr@site.tldthay vìaddr@site.tld sau đó xóa văn bảnmailto:từ JavaScript được tạo ra, người ta đột nhiên có một số JavaScript trông không giống bất kỳ thứ gì liên quan đến email - chỉ là JavaScript ngẫu nhiên mà web đã đầy. Người ta có thể cải thiện điều này hơn nữa bằng cách loại bỏ văn bản liên kết - Tôi đã thay thế tôi bằng một hình ảnh của địa chỉ email của tôi ở một phông chữ khá tối nghĩa. Sau đó, chỉ trong trường hợp phương thức này trên jottings.com trở nên phổ biến, tôi đã chọn ngẫu nhiên các tên biến trong JavaScript đầu ra để làm cho robot khó phát hiện ra một ví dụ về mã JavaScript được tạo ra.

Rõ ràng một số trong những cải tiến này có thể được tích hợp vào cơ chế trên chính jottings, và vì mã có sẵn công khai nên điều này sẽ tương đối dễ dàng.

Một ví dụ có thể làm cho điều này rõ ràng hơn một chút. Tôi đã sử dụng Jottings Obfuscator tại liên kết ở trên để che khuất mailto:foo@bar.com(lưu ý tôi đang gian lận về mục đích ban đầu của trang web jottings bằng cách nhập chuỗi mailto:foo@bar.comthay vì foo@bar.com) với văn bản "Gửi cho tôi email", mà jottings đã chuyển thành Javascript này:

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

Sau khi tôi lấy lại được, tôi dán nó vào một trình soạn thảo và:

  1. gỡ bỏ mailto:
  2. thay thế văn bản liên kết bằng con trỏ đến một hình ảnh của địa chỉ email của tôi
  3. đổi tên tất cả các biến
  4. thay thế phần "noscript" bằng một liên kết khác đến hình ảnh địa chỉ email

Tôi kết thúc với điều này:

<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

Tôi không làm việc này tốt như thế nào. Bạn không thể bỏ địa chỉ email của mình ra và tải nó bằng cách sử dụng cuộc gọi AJAX sau khi trang tải xong. Không chắc chắn liệu các bot spam có thể nhận HTML đã thay đổi hay không, nếu chúng đủ thông minh để nghe lưu lượng HTTP khác để thử và chọn địa chỉ email hoặc nếu chúng chỉ quét trang khi nhận được lần đầu tiên.


Thời gian thực hiện triển khai tải email AJAX: 3 ngày. Thời gian lưu trong thư rác bạn không phải xóa: 17 phút.

2

Một anh chàng đã thử nghiệm chín cách khác nhau để trình bày một địa chỉ email trên một trang và sau đó công bố kết quả trên blog của mình.

Ba cách tốt nhất của anh là:

  1. Thay đổi hướng mã bằng CSS
  2. Sử dụng hiển thị CSS: không có
  3. Mã hóa ROT13

Hãy cẩn thận - điều này đã được đăng hai năm trước. Các bot spam có thể đã trở nên thông minh hơn.


1

Nếu bạn làm việc với PHP, bạn có thể lấy một tập lệnh miễn phí tự động thực hiện. Nó được gọi là "Private Daddy" và chúng tôi sử dụng nó cho dịch vụ truyền phát âm thanh trực tuyến của riêng mình. Chỉ cần một dòng mã và nó hoạt động ngay lập tức ... bạn có thể lấy nó ở đây


Tôi muốn biết lý do tại sao một người nào đó đánh giá thấp điều này. Nó sẽ hữu ích để giải thích.
Yannis Dran

1

Một cách tiếp cận khác có thể là bằng cách sử dụng khung JavaScript và ràng buộc dữ liệu / mô hình với các thành phần HTML. Trong trường hợp của AngularJS, các phần tử HTML sẽ được viết là:

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

Liên kết {{data}} sử dụng một biến phạm vi có chứa giá trị email thực tế. Ngoài ra, một bộ lọc cũng có thể được sử dụng để xử lý việc giải mã email như sau:

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

Những lợi ích là trong cách viết HTML. Nhược điểm là nó yêu cầu hỗ trợ kịch bản mà một số cho có thể là không.

chỉ là một cách tiếp cận khác.


1

Sử dụng JQuery, nhưng có thể dễ dàng được chuyển sang JS đơn giản nếu cần. Sẽ lấy khối HTML sau. Ví dụ này tôi cung cấp cũng dành cho tel:các liên kết cho các cuộc gọi điện thoại.

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

và chuyển đổi nó thành các liên kết thích hợp bằng Javascript.

$ (". obfuscate"). mỗi (hàm () {

$ (này) .html ($ (này) .html ()
.replace ("...", "@"). thay thế (/\.\.\./ g, ".")
.replace (/ Một / g, "1")
.replace (/ Hai / g, "2")
.replace (/ Ba / g, "3")
.replace (/ Bốn / g, "4")
.replace (/ Năm / g, "5")
.replace (/ Sáu / g, "6")
.replace (/ Bảy / g, "7")
.replace (/ Tám / g, "8")
.replace (/ Chín / g, "9")
.replace (/ Không / g, "0"))

$ (này) .attr ("href", $ (này) .attr ("href")
.replace ("...", "@"). thay thế (/\.\.\./ g, ".")
.replace (/ Một / g, "1")
.replace (/ Hai / g, "2")
.replace (/ Ba / g, "3")
.replace (/ Bốn / g, "4")
.replace (/ Năm / g, "5")
.replace (/ Sáu / g, "6")
.replace (/ Bảy / g, "7")
.replace (/ Tám / g, "8")
.replace (/ Chín / g, "9")
.replace (/ Không / g, "0"))

})

Tôi đã ghi lại nó chi tiết hơn tại đây https://trajano.net/2017/01/obfuscating-mailto-links/

Thuật toán de / obfuscation khá đơn giản vì vậy nó không quá thuế để viết (không cần phân tích cú pháp base64)


1

Giải pháp cuộc gọi Ajax

Tốt nhất là có một biểu mẫu trên trang web và không hiển thị địa chỉ email, bởi vì tất cả các robot đều thông minh hơn ngày này qua ngày khác, nhưng nếu bạn cần hiển thị địa chỉ email trên trang web, vì vậy, bạn có thể thực hiện bằng cuộc gọi ajax trên máy chủ, và hiển thị nó khi nhấp chuột.

HTML

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

hoặc là

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

Để bảo mật hơn, bạn có thể thay đổi .onbằng cách .onenày $(document).one('click', '.obfmail', function(e) {hoặc thậm chí hoạt động với mã thông báo được tạo bởi PHP mà bạn chuyển vào dữ liệu trong cuộc gọi ajax, để chỉ chấp nhận một cuộc gọi của hàm ajax như thế này:

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

jquery:

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

.

Có thể mã hóa địa chỉ email trả lại quá hoặc đảo ngược nó.

.

Làm việc tốt cho số điện thoại quá!


0

Thành thật mà nói, vấn đề của bạn có thể là vấn đề nếu bạn hỏi câu hỏi liệu mailto có thực sự là thứ bạn muốn sử dụng hay không. Ví dụ, nhiều người sử dụng thư trên web hoặc không có thiết lập ứng dụng thư khách thích hợp trong trình duyệt của họ sẽ không được hưởng lợi từ thư đến. Bạn đang tiết lộ địa chỉ email của mình cho một chức năng sẽ không hoạt động đối với một phần lớn người dùng của bạn.

Thay vào đó, những gì bạn có thể làm là sử dụng một hình thức để gửi e-mail đằng sau hậu trường để địa chỉ e-mail bị ẩn và bạn không phải lo lắng về những người nghèo không được hưởng lợi từ một mailto.


0

Nếu bạn nói trên trang web của mình rằng "Địa chỉ email của tôi là (tên của tôi) @ (họ của tôi) .com.", Và tên và họ của bạn khá rõ ràng, đó có vẻ là cách chống thư rác tốt nhất bạn sẽ nhận được.


không phải dấu ngoặc đơn thực sự được cho phép trong các email đầy đủ? có vẻ như đó có thể là một địa chỉ email hợp lệ. : p
Kzqai

1
Đó là một lý do khác bot bot sẽ bỏ lỡ hộp thư đến của bạn. :-)
Dean J

0

Nếu bất cứ ai đang sử dụng Rails, họ có thể sử dụng actionview-encoded_mail_tođá quý. ( https://github.com/reed/actionview-encoding_mail_to )

Có một vài lựa chọn:

: encode - Khóa này sẽ chấp nhận các chuỗi "javascript" hoặc "hex". Vượt qua "javascript" sẽ tự động tạo và mã hóa liên kết mailto sau đó chuyển nó vào DOM của trang. Phương pháp này sẽ không hiển thị liên kết trên trang nếu người dùng bị tắt JavaScript. Truyền "hex" sẽ hex mã hóa email_address trước khi xuất liên kết mailto.

: thay_at - Khi tên liên kết không được cung cấp, email_address được sử dụng cho nhãn liên kết. Bạn có thể sử dụng tùy chọn này để làm xáo trộn email_address bằng cách thay thế dấu @ bằng chuỗi được cung cấp làm giá trị.

: thay_dot - Khi tên liên kết không được cung cấp, email_address được sử dụng cho nhãn liên kết. Bạn có thể sử dụng tùy chọn này để làm xáo trộn email_address bằng cách thay thế. trong email với chuỗi được cho là giá trị.


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

Vì giải pháp này không được đề cập ở bất cứ đâu, nhưng hoạt động tốt với tôi:

Tôi làm việc này:

  • tạo một liên kết mailto với email giả mạo. Tôi thích admin@localhost.localdomain vì những lý do rõ ràng: Spammer có thể spam botnet của chính mình khi không sử dụng địa chỉ này.

  • cypher địa chỉ email thực và đặt nó trong một khoảng ẩn không liên quan nhưng có thể tìm thấy hoặc bất kỳ yếu tố nào bạn thích. Rõ ràng là để làm xáo trộn email và ẩn nó khỏi máy gặt đập. Tùy thuộc vào cấu trúc dự án của bạn, bạn thậm chí có thể muốn đặt nó trong biến JS hoặc Phiên.

  • tạo một trình xử lý nhấp chuột cho các liên kết này sau một giây để giải mã và viết địa chỉ email chính xác vào liên kết mailto giả để không ngăn chặn mặc định. Tôi không nghĩ rằng trình thu thập thông tin nhấp vào liên kết mailto, nhưng nếu có, họ sẽ không đợi một giây, trong khi con người sẽ phải cực kỳ nhanh để nhấp vào liên kết trong giây đầu tiên sau khi tải trang.

Bây giờ bạn có một liên kết mailto đầy đủ chức năng nhưng bị xáo trộn, honeypoted và thời gian.

Ví dụ làm việc tập tin 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>

Có thể mã được với bạn.


0

Điều gì xảy ra nếu tạo một liên kết "Liên hệ với tôi" chỉ đến một thư mục được bảo vệ bởi mật khẩu? Tất nhiên, bạn phải cung cấp cho vượt qua để truy cập.

"Liên hệ với tôi"> •••••••••••> contact / index.html

Sau khi truy cập, trang contact / index.html sẽ hiển thị email, ví dụ như mailto.


-1

Tôi sử dụng một hàm PHP để tạo một số javascript để xuất email khi tải trang. Lưu ý rằng bạn không cần PHP để tạo JS khi chạy, bạn có thể tạo JS một lần cục bộ và sau đó bao gồm JS tĩnh trong trang của bạn.

Bạn cũng có thể sử dụng chức năng được liên kết với đoạn mã dưới đây để tự động làm xáo trộn các địa chỉ email trong một số HTML đã cho (trong đó $ processContent là 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);
 }

nơi bạn đã xác định createdJSMailLink ()?
Stelian

-2

Kiểm tra này .

Form Mẫu Enkoder 'sẽ mã hóa địa chỉ Email của bạn và chuyển đổi kết quả thành JavaScript tự đánh giá, ẩn nó khỏi các robot thu thập Email đang thu thập thông tin trên web để tìm địa chỉ được hiển thị. Địa chỉ của bạn sẽ được hiển thị chính xác bởi các trình duyệt web, nhưng hầu như không thể mã hóa được đối với các robot thu hoạch Email.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.