웹 사이트에서 전자 메일 주소를 난독 처리하는 가장 좋은 방법은 무엇입니까?


136

지난 며칠 동안 개인 웹 사이트를 업데이트하는 데 시간을 보냈습니다. 내 개인 웹 사이트의 URL은 (내 이름). (내 성) .com이며, 성은 다소 이례적이며 도메인 이름을 선택할 수있을만큼 운이 좋았습니다. 내 이메일 주소는 (내 이름) @ (내 성) .com입니다. 실제로 추측 할 때 그리 어렵지 않습니다.

어쨌든, mailto : 링크를 내 웹 사이트에 통합하여 사람들이 저에게 연락 할 수 있도록하고 싶습니다. 그리고 내 전자 메일 주소를 추측하기가 어렵지 않지만 웹 사이트를 전자 메일 주소 패턴으로 크롤링하여 데이터베이스에 추가하는 스팸 봇이 수집하지는 않습니다.

링크 형식으로 전자 메일 주소를 난독 처리하는 가장 좋은 방법은 무엇입니까? 내가 아는 방법은 다음과 같습니다.

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

작동하지만 웹 사이트가 Google을 방문하자마자 스팸 봇이 쉽게 전자 메일 주소를 선택하므로 스팸을 겪게됩니다.

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

방문자가 전자 메일을 보내기 위해 전자 메일을 클릭 할 수 없을뿐만 아니라 더 스마트 한 스팸봇이 이미지에 포함 된 문자를 감지 할 수 있기 때문에 바람직하지 않습니다.

나는 완벽한 해결책이 없을 것임을 알고 있지만 모든 사람들이 가장 잘 생각한 것이 궁금합니다. 내 웹 사이트에서 이미 많은 톤을 사용하므로 필요한 경우 JavaScript를 사용하려고합니다.


10
메일을 Gmail 계정으로 전달하십시오. ;-)
Dave Jarvis

1
수퍼 유저 질문
jacktrades

이 게시물 은 여기에 연결되어 있어야합니다.
Clément

답변:


106

나는 문자를 HTML 엔티티 ( 이와 같은 것으로) 로 인코딩합니다 . JS를 사용할 필요가 없으며 대부분의 스팸을 중지 한 것으로 보입니다. 나는 똑똑한 봇이 여전히 그것을 수확한다고 생각하지만 아무런 문제가 없었습니다.


6
이렇게하면 가장 간단한 종류의 스팸봇 수집 (정규식은 전자 메일 주소와 유사한 텍스트를 찾는 정규식)을 중단하고 단점은 없습니다. 최종 사용자에게 explict href = mailto : xxx @ yy 링크만큼 편리합니다.
Stephen C. Steel

5
크롤러 / 수확 자의 많은 (대부분?)이 엄청나게 멍청하기 때문에 이것은 꽤 잘 작동합니다.
Jacco

43
2008 년의이 실증 연구 에 따르면 URL 인코딩은 그 다음으로 효과적입니다. 일반 텍스트 만 더 나빴습니다.
Fuhrmanator

16
나는 이것이 늦었다는 것을 알고 있지만 여기서 제안은 URL 인코딩과 다른 HTML 엔터티를 사용하는 것이 좋습니다. 이 연구에 따르면 @ 및 기간에 엔터티를 사용하는 것이 두 번째로 가장 효과적인 방법이었습니다 (가장 효과적인 방법은 처음에는 스팸 메시지가 생성 된 세 가지 방법이었습니다). 거의 6 년이 지난 후에도이 정보를 볼 수 있다면 흥미로울 것입니다.
Bailey Parker

12
귀하의 이메일을 보호하기 위해 귀하가 링크 한 사이트에서 임의의 그늘진 형태로 이메일을 입력해야한다는 것은 아이러니 한 일입니다. 허니 팟팅, 누구? :)
srobinson

84

개인적으로 이메일 주소를 숨기는 것을 포기했습니다. 난독 처리에 대한 걱정보다 더 나은 스팸 필터링 솔루션을 찾는 것이 더 쉽다는 것을 알게되었습니다. 주소를 난독 처리하는 가장 좋은 방법을 찾으려고 며칠을 보낼 수 있으며, 한 사람이 주소를 스팸 발송자에게 판매하기 만하면 모든 작업이 쓸모가 없습니다.


스팸 필터링이 아무리 훌륭하더라도 허위 부정적인 결과가 나올 수 있습니다 (이를 통과하는 메일은 통과해서는 안 됨). 궁극적으로 전자 메일 주소를 가지고 살아야하지만 이러한 불필요한 노출은 스팸의 재발을 증가시키는 것처럼 보입니다.
Brad Barker

8
내 경험에 @Brad 이것은 사실이 아닙니다. 나는 구글이 내 도메인의 메일을 호스팅하고 내 이메일 주소가 사용 이 매우 쉽게 찾을 수 있습니다. 14 개월 이상 사용하기 시작한 이래로 0 개의 오탐과 1의 오탐이있었습니다. 내 스팸 폴더에 하루에 수백 개의 스팸이 있습니다.
Rex M

8
어, 나는 덧붙여 야한다 : 스팸은 아이들을 먹을 부지 맨이 아니다. 이상한 스팸 이메일을받는 것이 끝이 아닙니다. "스팸보고"를 클릭하고 계속하십시오.
eyelidlessness 2009

1
@ 브래드 : 불필요하다면, 주소를 전혀 알려주지 마십시오. 주소를 알려야 할 경우 스팸을 대비하십시오. 스팸봇이 쉽게 이메일을 보내지 않고도 사람이 이메일을 쉽게 보낼 수는 없습니다.
Chuck

1
난 그냥 이메일을 난독 처리하지 않고 게시합니다. 나는 gmail을 사용하는데 스팸 필터는 놀랍도록 잘 작동하는 것 같습니다.
Asmor

68

현재 허용되는 솔루션은 사용자가 이메일을 보낼 수있는 연락처 양식을 작성하는 것입니다. 그 사이트에서 스팸을 많이받는 경우 (내 사이트에 없음) 적절한 보안을 위해 보안 문자를 추가 할 수 있으며 그 시점에서 "매우 낮은 성과"에서 멀어 질 것입니다.

문제는 사용자가 클릭하여 To : 필드에 자신의 주소로 이메일 클라이언트를 열 수있는 링크를 제공하면 컴퓨터가 페이지에서 이메일 주소를 해독 할 수 있다는 것입니다. 스팸 봇.


2
즉, 전자 메일을 보내는 논리는 숨겨진 서버 측 코드로 작성되어야 주소가 절대 공개되지 않습니다.
JoshJordan 2009

8
기술적으로는 훌륭한 솔루션이지만 많은 사용자에게 해를 끼치는 솔루션입니다. 그냥 말해
eyelidlessness 2009

당신은 절대적으로 맞습니다 만, 왜 그런지 이해하지 못했습니다. 최소한 이메일 클라이언트를 사용하는 것처럼 웹 양식에서 한 번만 클릭하면 됩니다. 어려움을 더하는 유일한 것은 보안 문자 옵션입니다. 사용자가 연락을 취할 수 없다면 메시지가 중요 했습니까?
JoshJordan

15
메시지를 참조 할 수있는 옵션이 있으면 항상 마음에 듭니다. 연락처 양식에 대해 나를 귀찮게하는 한 가지는 내 이메일 시스템에 기록이 남지 않는다는 것입니다. (모든 이메일 주소를 참조하는 양식은 자체 문제를 만들 수 있습니다.)
Sam Hasler

6
이메일 양식이 실제로 작동했다는 표시도 없습니다. 나는 조용히 깨진 많은 것을 보았다. 실제 이메일은 최소한 바운스됩니다.
Brian Carper

44

당신은 이것이 당신의 개인 웹 사이트를위한 것이라고 언급했습니다. 내 개인 사이트 (예 : bobsomers.com)에는 다음과 같은 단락이 있습니다.

새 사이트가 운영되기 전에 저와 연락하는 가장 좋은 방법은 저에게 이메일을 보내는 것입니다. 내 이메일 주소는이 웹 사이트의 이름입니다. 당신이 그 힌트에서 그것을 알아낼 수 없다면 글쎄, 당신은 내 주소를 알아내는 것보다 더 많은 도전을 이메일을 찾을 수 있습니다.

내가 항상 합법적 인 이메일을받을 때 사람들은 그것을 잘 알아낼 수있을 것 같습니다. 때로는 최상의 솔루션으로 코드를 작성할 필요가 없습니다. :)


7
이 방법은 또한 특정 수준보다 낮은 IQ를 가진 사람들을 걸러냅니다 : D
papa zulu

36

reCAPTCHA 는 간단한 이메일 난독 처리 서비스를 제공합니다 합니다. 계정을 설정할 필요가 없으며 즉시 사용할 수 있습니다. 서비스를 링크 또는 팝업으로 사용할 수 있습니다.

보안 문자가 해결되면 이메일 주소가 href / mailto로 표시되므로 이메일 클라이언트가 브라우저를 사용하도록 구성한 사용자가 클릭 / 팔로우 할 수 있습니다.


이것은 훌륭하고 시간의 99.9 %를 작동합니다. 링크 주셔서 감사합니다. 봇이 브라우저를 자동화하면 실패합니다.
IEnumerator

9
나는 웹 사용자의 대다수가 누군가에게 이메일을 보내기 위해 보안 문자를 해결하려는 노력을 기울일 것이라고 생각하지 않습니다.
AndyM

7
앤디와 함께 해요. 보안 문자는 고통이며, 보안 문자는 종종 읽기가 너무 어렵 기 때문에 평균보다 더 큰 고통입니다. 고객에게 이메일을 보내는 사람들이 전환점 인 경우 (예 : 고객이 서비스에 대해 문의하거나 주문을하거나 견적을 요청하는 등) 가능한 한 쉽게 그렇게 할 수 있기를 원합니다.
Sylverdrag

8
더 이상 존재하지 않는 서비스입니다.
소린

Google Mailhide는 2018 년 3 월 31 일부터 중단되었습니다.
sean

18

href앵커 를 난독 화하는 간단한 방법 은 앵커를 base64로 인코딩하는 것입니다.

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

그런 다음 하드 코딩 된 것을 포함하십시오.

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

또는 PHP에서 동적으로 서버 측 :

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

문자열 복귀와 함께 사용하면 꽤 스팸을 저장할 수 있습니다.

<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

분명히 CSS를 사용하여 텍스트 방향을 변경하십시오. 효과가 있습니다. 이 링크에는 다른 난독 화 방법에 대한 테스트도 있습니다.

무엇을 사용하든 불가피하게 패배 할 것입니다. 기본 목표는 사용자의 성가심을 피하는 것입니다.


4
이것은 아마도 복사하고 붙여 넣을 수 있습니까? IIRC
alex

7
주소를 복사하여 붙여 넣으면 뒤로 표시됩니다. 가능한 한 쉽게 연락하기를 원한다면 사용자에게 큰 도움이 될 수 있습니다.
Christian Davén

10

전자 메일 수집기가 사람들이 전자 메일을 난독 처리하는 방법을 찾는 첫 번째 장소이므로 여기에서 난독 처리 기술을 사용하지 마십시오. 사이트에 전자 메일 주소를 표시해야하는 경우 다른 사람의 방법을 그대로 복사하지 마십시오. 다른 사이트에서 사용하지 않은 독특한 방식으로 그것을 난독 처리하여 수확기가 사이트를 방문하기 전에 수확기에게 알려지지 않도록하십시오.


8
얼마나 재귀 적입니까?
Paul Tomblin

Unniloct : Sam Hasler의 답변은 최고의 답변이 무엇이든 관계없이 적용됩니다. 가장 널리 사용되는 난독 화 기법을 사용하면 수확 가능성이 가장 높은 대상이됩니다.
eyelidlessness 2009

상단의 대답은 :) 실제로 난처을 사용하는 경우를 제외하고
JoshJordan

@ JoshJordan : 동의합니다. 실제로 귀하의 답변에 투표했습니다. 필자의 요점은 스패머들에게 인기있는 난독 화 기법을 발견하고이를 난독 화하는 코드를 작성한다는 것입니다.
Sam Hasler

2
현재이 페이지는 [난독 화 이메일 주소]에 대해 Google이 반환 한 28 번째 결과이지만, 결국에는 더 높아질 것으로 예상됩니다.
Sam Hasler

8

Google 코드 및 그룹에서 Google이하는 것처럼 할 수 있습니다. 이메일과 클릭 가능한 부분 ( "...")을 표시합니다. 을 클릭하면 이메일을 알고 싶다는 것을 나타내며 보안 문자를 입력하라는 메시지가 표시됩니다. 그 후 이메일 (및 기타)이 표시됩니다.


8

광산은 실제로 간단합니다.

<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을 소유 한 가난한 사람 :)
duedl0r

2
Gmail에는 5 자로 된 이메일이 없습니다.
Paulo Ney

6

JavaScript 난독 화를 사용하고 예를 들어보십시오.

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


2
-1 : 생성 된 코드를 보셨습니까? "링크 텍스트"에 이메일 주소를 포함 시키면 실제로 이메일 주소를 난독 화하지 않으며 "mailto :"의 목적에 따릅니다. 더 나쁜 것은 기본 컨텐츠에 의존해서는 안되는 Javascript가 필요한 솔루션입니다.
eyelidlessness 2009

6

내가 관리하는 한 웹 사이트는 스팸봇을 막기위한 다소 간단한 JavaScript 수단을 사용합니다.

이메일 링크는 JS 함수를 호출합니다.

sendEmail (이름, 도메인) {
    location.href = 'mailto :'+ 이름 + '@'+ 도메인;
}

JS를 사용하도록 설정 한 사용자 만 링크를 볼 수 있도록하려면 다음과 같이 작성하십시오.

writeEmailLink 함수 (실명, 이름, 도메인) {
    document.write ( '<a href = "javascript : sendEmail (\' '
      + 이름 + '\', \ ''+ 도메인 + '\') "> ');
    document.write (realName);
    document.write ( '</a>');
}   

하나의 JS 함수를 사용하여 다른 것을 호출하는 링크를 작성한다는 것은 두 개의 보호 계층이 있음을 의미합니다.


4

위의 포스터에서 말했듯jottings 웹 사이트의 JavaScript 난독 처리도 사용합니다. .

웹 페이지는 개선 될 수있는 일부 JavaScript를 생성합니다. mailto:텍스트 문자열에있는 명확하고 (이 자리와이 문자열의 혼란을 제거 할 수있는)하지만, 하나는 양식의 jottings.com 웹 페이지의 이메일 주소로 입력하면 로봇에 의해 식별 mailto:addr@site.tld대신addr@site.tld 다음 텍스트를 제거mailto:생성 된 JavaScript에서 갑자기 웹 사이트가 가득 찬 임의의 JavaScript 인 전자 메일과 전혀 관련이없는 것처럼 보이는 JavaScript가 갑자기 있습니다. 링크 텍스트를 제거하여이 기능을 한층 더 향상시킬 수 있습니다. 필자는 상당히 불분명 한 글꼴로 된 전자 메일 주소 이미지로 교체했습니다. 그런 다음 jottings.com의이 메소드가 널리 사용되는 경우 로봇이 jottings에서 생성 한 JavaScript 코드의 인스턴스를 찾기 어렵게하기 위해 출력 JavaScript에서 변수 이름을 무작위 화했습니다.

분명히 이러한 개선 중 일부는 jotting 자체에 대한 메커니즘에 내장 될 수 있으며, 코드가 공개적으로 제공되므로 상대적으로 쉽습니다.

예를 들어 이것을 좀 더 명확하게 만들 수 있습니다. 위의 링크에서 Jottings Obfuscator를 사용하여 텍스트 "Send Me Email"로 텍스트를 mailto:foo@bar.com숨기고 (참고 : 문자열 mailto:foo@bar.com대신을 입력하여 Jottings 웹 사이트의 원래 의도를 부정하고 있음 foo@bar.com)이 Javascript로 바뀌 었습니다.

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

다시 가져 와서 편집기에 붙여 넣고 다음을 수행하십시오.

  1. 제거 mailto:
  2. 내 이메일 주소 이미지에 대한 링크 텍스트를 포인터로 바꿉니다.
  3. 모든 변수의 이름을 바꿉니다
  4. "noscript"섹션을 이메일 주소 이미지에 대한 다른 링크로 바꿉니다.

나는 이것으로 끝납니다 :

<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

나는 이것이 잘 작동하지 않습니다. 페이지로드가 완료되면 이메일 주소를 그대로두고 AJAX 호출을 사용하여로드 할 수 없습니다. 스팸 봇이 변경된 HTML을 선택할 수 있는지 또는 다른 HTTP 트래픽을 수신하여 전자 메일 주소를 찾아 선택하거나 페이지가 처음 수신 될 때 페이지를 스캔 할만큼 영리한지 확실하지 않습니다.


AJAX 이메일 로딩 구현에 소요 된 시간 : 3 일 스팸으로 절약 된 시간 : 17 분

2

한 사람이 한 페이지에 전자 메일 주소를 표시하는 9 가지 방법을 테스트 한 다음 블로그에 결과 를 게시했습니다.

그의 세 가지 가장 좋은 방법은 다음과 같습니다.

  1. CSS로 코드 방향 변경
  2. CSS 표시 사용
  3. ROT13 암호화

주의 사항-이것은 2 년 전에 게시되었습니다. 스팸 봇이 더 똑똑해 졌을 수 있습니다.


1

PHP로 작업하면 자동으로 수행하는 무료 스크립트를 얻을 수 있습니다. "Private Daddy"라고하며 자체 온라인 오디오 스트리밍 서비스에 사용합니다. 한 줄의 코드로 상자에서 작동합니다 ... 여기에서 가져올 수 있습니다


왜 누군가가 이것을 다운 피트했는지 알고 싶습니다. 설명하는 것이 도움이 될 것입니다.
Yannis Dran

1

또 다른 방법은 JavaScript 프레임 워크를 사용하고 데이터 / 모델을 HTML 요소에 바인딩하는 것입니다. AngularJS의 경우 HTML 요소는 다음과 같이 작성됩니다.

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

보간 {{data}} 바인딩은 실제 이메일 값이 포함 된 범위 변수를 사용합니다. 또한 다음과 같이 전자 메일의 디코딩을 처리하는 필터를 사용할 수도 있습니다.

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

이점은 HTML 작성 방식에 있습니다. 단점은 스크립팅 지원이 필요하다는 것입니다.

또 다른 접근법.


1

JQuery를 사용하지만 필요한 경우 일반 JS로 쉽게 이식 할 수 있습니다. 다음 HTML 블록을 사용합니다. 내가 제공 한이 예는 tel:전화 통화 링크 이기도 합니다.

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

Javascript를 사용하여 올바른 링크로 변환하십시오.

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

$ (this) .html ($ (this) .html ()
.replace ( "...", "@"). replace (/\.\.\./ g, ".")
.replace (/ One / g, "1")
.replace (/ Two / g, "2")
.replace (/ Three / g, "3")
.replace (/ Four / g, "4")
.replace (/ Five / g, "5")
.replace (/ Six / g, "6")
.replace (/ Seven / g, "7")
.replace (/ Eight / g, "8")
.replace (/ Nine / g, "9")
.replace (/ Zero / g, "0"))

$ (this) .attr ( "href", $ (this) .attr ( "href"))
.replace ( "...", "@"). replace (/\.\.\./ g, ".")
.replace (/ One / g, "1")
.replace (/ Two / g, "2")
.replace (/ Three / g, "3")
.replace (/ Four / g, "4")
.replace (/ Five / g, "5")
.replace (/ Six / g, "6")
.replace (/ Seven / g, "7")
.replace (/ Eight / g, "8")
.replace (/ Nine / g, "9")
.replace (/ Zero / g, "0"))

})

https://trajano.net/2017/01/obfuscating-mailto-links/ 에 자세히 설명되어 있습니다.

해독 / 난독 처리 알고리즘은 매우 단순하므로 쓰기에 너무 많은 부담을주지 않습니다 (base64 구문 분석 필요 없음).


1

Ajax 통화 솔루션

모든 로봇이 매일 더 지능적이기 때문에 웹 사이트에 양식을 작성하고 전자 메일 주소를 표시하지 않는 것이 가장 좋습니다.하지만 웹 사이트에 전자 메일 주소를 표시 해야하는 경우 웹 사이트에 ajax 전화를 걸 수 있습니다. 클릭하고 클릭하십시오.

HTML

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

또는

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

더 보안을 위해, 당신은 변경할 수 있습니다 .on에 의해 .one이 같은 $(document).one('click', '.obfmail', function(e) {당신이 아약스 통화 데이터로 전달할 것을 토큰을 생성 또는 PHP와도 일이 같은 아약스 기능의 하나의 호출을 적용합니다 :

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

jquery :

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

.

반환 된 이메일 주소도 인코딩하거나 뒤집을 수 있습니다.

.

전화 번호에서도 잘 작동합니다!


0

솔직히 mailto가 실제로 사용하고 싶은지 여부에 대한 질문을하면 문제가 약해질 수 있습니다. 예를 들어, 웹 메일을 사용하거나 브라우저에 적절한 메일 클라이언트 설정이없는 많은 사람들은 mailto의 이점을 얻지 못할 것입니다. 대부분의 사용자에게는 작동하지 않는 기능에 대해 전자 메일 주소를 노출하고 있습니다.

대신 전자 메일 주소를 숨기고 mailto의 혜택을받지 못하는 빈약 한 수액에 대해 걱정할 필요가 없도록 양식을 사용하여 전자 메일을 비하인드 스토리 뒤에 보냅니다.


0

귀하의 사이트에서 "내 이메일 주소는 (내 이름) @ (내 성) .com"이며, 귀하의 이름과 성은 매우 분명합니다. 이것이 최고의 스팸 방지 기능인 것 같습니다. 당신은 얻을거야.


본격적인 이메일에는 실제로 괄호를 사용할 수 없습니까? 유효한 이메일 주소 일 수 있습니다. : p
Kzqai

1
스팸 봇이받은 편지함을 놓치게되는 또 다른 이유입니다. :-)
Dean J

0

누구나 Rails를 사용하고 있다면 actionview-encoded_mail_to보석을 사용할 수 있습니다 . ( https://github.com/reed/actionview-encoded_mail_to )

몇 가지 옵션이 있습니다.

: encode-이 키는 "javascript"또는 "hex"문자열을 허용합니다. "javascript"를 전달하면 mailto 링크를 동적으로 작성 및 인코딩 한 다음 페이지의 DOM으로 평가합니다. 사용자가 JavaScript를 비활성화 한 경우이 방법으로 페이지에 링크가 표시되지 않습니다. "16 진수"를 전달하면 mailto 링크를 출력하기 전에 email_address를 16 진수로 인코딩합니다.

: replace_at-링크 이름이 제공되지 않으면 email_address가 링크 레이블에 사용됩니다. 이 옵션을 사용하면 @ 기호를 값으로 지정된 문자열로 대체하여 email_address를 난독 처리 할 수 ​​있습니다.

: replace_dot-링크 이름이 제공되지 않으면 email_address가 링크 레이블에 사용됩니다. 이 옵션을 사용하여를 대체하여 email_address를 난독 처리 할 수 ​​있습니다. 값으로 주어진 문자열과 함께 이메일에.


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

이 솔루션은 어디에도 언급되어 있지 않지만 나에게 잘 작동합니다.

나는 이것을한다:

  • 가짜 이메일로 mailto 링크를 만듭니다. 명백한 이유 때문에 admin@localhost.localdomain이 마음에 듭니다.이 주소를 선택하지 않으면 스패머가 자신의 봇넷을 스팸으로 분류 할 수 있습니다.

  • cypher 실제 이메일 주소를 지정하고 관련이 없지만 찾을 수있는 숨겨진 범위 또는 원하는 요소에 넣습니다. 분명히 이메일을 난독 처리하고 수확기에서 숨길 수 있습니다. 프로젝트 구조에 따라 JS 또는 세션 변수에 넣을 수도 있습니다.

  • 1 초 후에이 링크에 대한 클릭 핸들러를 작성하고 기본값을 방해하지 않는 가짜 mailto 링크에 올바른 이메일 주소를 작성하십시오. 크롤러가 mailto 링크를 클릭한다고 생각하지는 않지만 1 초 동안 기다릴 필요가 없지만 페이지로드 후 첫 번째 1 초 동안 링크를 클릭하는 것이 매우 빠릅니다.

이제 완벽하게 작동하지만 난독 화, 허니팟 및 시간 보안 된 mailto 링크가 있습니다.

작업 예제 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>

코드가 함께 할 수 있습니다.


0

비밀번호로 보호되는 디렉토리를 가리키는 "연락처"링크를 작성하면 어떻게됩니까? 물론, 당신은 액세스 패스를 제공해야합니다.

"문의하기"> •••••••••••> contact / index.html

contact / index.html 페이지에 액세스하면 mailto와 같은 이메일이 표시됩니다.


-1

PHP 함수 를 사용하여 페이지로드시 이메일을 출력하는 자바 스크립트를 생성합니다. 런타임에 JS를 생성하기 위해 PHP가 필요 하지 않습니다 . JS를 로컬로 한 번 생성 한 다음 페이지에 정적 JS를 포함시킬 수 있습니다.

아래의이 스 니펫에 링크 된 기능을 사용하여 특정 HTML ($ processedContent가 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);
 }

어디에서 createJSMailLink ()를 정의 했습니까?
Stelian

-2

이것을 확인하십시오 .

'엔코더 양식'은 이메일 주소를 암호화하고 결과를 자체 평가 JavaScript로 변환하여 노출 된 주소를 찾기 위해 웹을 크롤링하는 이메일 수확 로봇에서 숨 깁니다. 귀하의 주소는 웹 브라우저에 의해 올바르게 표시되지만 이메일 수집 로봇과 사실상 해독 할 수 없습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.