봇에서 이메일 주소 숨기기-메일 유지 :


81

tl; dr

스크립트를 사용하지 않고 봇으로부터 이메일 주소를 숨기고 mailto:기능을 유지 합니다. 메서드는 화면 판독기도 지원해야합니다.


요약

  • 스크립트 또는 문의 양식 사용 하지 않고 이메일 난독 화

  • 이메일 주소는 사람이 보는 사람 이 완전히 볼 수 있어야 하고 mailto:기능을 유지해야 합니다.

  • 이메일 주소 는 이미지 형식이 아니어야합니다 .

  • 이메일 주소 는 스팸 크롤러, 스팸 봇기타 수집기 유형 으로부터 "완전히"숨겨져 야 합니다.


원하는 효과 :

  • 스크립트가 없습니다 . 프로젝트에 사용 된 스크립트가 없으며 그대로 유지하고 싶습니다 .

  • 이메일 주소는 페이지에 표시 되거나 모달 열기와 같은 일종의 사용자 상호 작용 후에 쉽게 표시 될 수 있습니다.

  • 사용자는 이메일 주소를 클릭 할 수있는 차례대로 실행할 것입니다 mailto:기능을.

  • 이메일을 클릭하면 사용자의 이메일 애플리케이션이 열립니다.

    즉, mailto:기능이 작동해야합니다.

  • 표시되지 않거나 봇에 대한 이메일 주소로 식별되지 않는 이메일 주소 (페이지 소스 포함)

  • 스팸으로 가득 찬받은 편지함이 없습니다.


작동 하지 않는 것

  • 이메일 주소 대신 문의 양식 또는 이와 유사한 내용 추가

    문의 양식이 싫습니다 . 문의 양식을 거의 작성하지 않습니다. 이메일 주소가 없으면 전화 번호를 찾고없는 경우 대체 서비스를 찾기 시작합니다. 꼭 필요한 경우에만 문의 양식을 작성하겠습니다.

  • 주소 이미지로 주소 바꾸기

    이것은 스크린 리더를 사용하는 사람 에게 불이익을 줍니다 (향후 프로젝트에서 시각 장애인을 기억하십시오 )

    또한 이미지를 클릭 할 수 있도록 설정 한 다음 링크에 대한 기능 을 추가하지 않는 한 기능 을 제거 하지만이 mailto:기능 은 목적무효화 하고 이제 이메일이 봇에게 표시됩니다.mailto:href


효과가있는 것 :

  • 의 영리한 사용 pseudo-elementsCSS

  • base64인코딩 을 사용하는 솔루션

  • 헤어지는 사용자가 버튼을 (이것은 아마도 다수 포함 할 것이다 클릭하면 이메일 주소와 문서에서 부품을 확산 다음 모달 함께 다시 퍼팅 CSS클래스와의 사용을 anchor tags)

  • 다음을 html통해 속성 변경CSS

    @MortezaAsadi는 아래 댓글에서 우아하게 가능성을 제시했습니다. 이것은 전체에 대한 링크입니다-이 기사는 2012 년입니다 :

    CSS를 사용하여 HTML 속성을 변경할 수 있다면 어떨까요?

  • 내 지식 범위를 벗어난 다른 창의적인 솔루션.


유사한 질문 / 수정

(이것은 Joe Maller가 제안한 훌륭한 수정 입니다 . 잘 작동하지만 스크립트 기반 입니다. 다음과 같이 보입니다.

<SCRIPT TYPE="text/javascript">

  emailE = 'emailserver.com'

  emailE = ('yourname' + '@' + emailE)

  document.write('<A href="mailto:' + emailE + '">' + emailE + '</a>')

</script>



<NOSCRIPT>

  Email address protected by JavaScript

</NOSCRIPT>

  • PHP 전용 이메일 주소 난 독기 기능 찾기

    (A 영리한 솔루션은 모두 사용 PHP하고 CSS처음에 반대 를 사용하여 이메일을 PHP는 다음 그것을 역 CSS와 다시) 좋은 작품을 매우 유망한 솔루션! 그러나 해결하기너무 쉽습니다 .

  • 요즘 웹에서 이메일 주소를 난독화할 가치가 있습니까?

    (자바 스크립트 수정)

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

    선택한 답변이 작동합니다 . 실제로 정말 잘 작동합니다. 이메일을 html entities. 개선 할 수 있습니까?

    다음은 그 모습입니다.

    <A HREF="mailto:
    
    &#121;&#111;&#117;&#114;&#110;&#097;&#109;&#101;&#064;&#100;&#111;&#109;&#097;&#105;&#110;&#046;&#099;&#111;&#109;">
    
    &#121;&#111;&#117;&#114;&#110;&#097;&#109;&#101;&#064;&#100;&#111;&#109;&#097;&#105;&#110;&#046;&#099;&#111;&#109;
    
    </A>

  • 전자 메일 주소 난독 화가 실제로 작동합니까?

    (이 수퍼 유저 질문에 대한 선택된 답변은 훌륭하며 다양한 난독 화 방법을 사용하여 수신 된 스팸의 양에 대한 연구를 제공합니다.

    과 이메일 주소를 조작하는 것 같다 CSS그것을 만들기 위해 rtl작업을 수행합니다. 이것은이 섹션에서 링크 한 첫 번째 질문에서 사용한 것과 동일한 방법입니다.

    mailto:수정에 기능을 추가하는 것이 결과에 어떤 영향을 미칠지 확실하지 않습니다.

  • 비슷한 대답을 가진 SO에 대한 다른 많은 질문도 있습니다 . 원하는 효과에 맞는 것을 찾지 못했습니다.


질문:

두 개 이상의 수정 사항결합 (또는 새 수정 사항 추가)하여 위의 이메일 난독 화 방법 의 효율성 (즉, 가능한 한 적은 스팸) 을 높일 수 있습니까 ?

A- mailto:기능 유지 ; 과

B- 지원 화면 판독기


편집하다:

아래 의 많은 답변과 의견 은 매우 좋은 질문을 던지면서 일종의js

묻거나 암시 하는 질문 은 다음과 같습니다.

왜 사용하지 js않습니까?

대답은 내가 알레르기가 있다는 것입니다. js

하지만 농담은 제쳐두고

이 질문을 한 세 가지 주요 이유는 다음과 같습니다.

  • 연락 양식은 이메일 주소를 제공하는 대신에 점점 더 많이 받아 들여지고 있습니다.

  • 스크립팅없이 수행수있는 경우 스크립팅 없이 수행해야합니다 .

  • 호기심 : (실제로 js현재 수정 사항 중 하나를 사용하고 있기 때문에 ) 문제를 논의하는 것이 더 나은 방법으로 이어질있는지 확인 하고 싶었 습니다.


21
mailto:기능 을 유지 하려고하는데 Javascript를 사용하지 않으려면 불가능하다고 생각합니다.
xrisk

CSS를 사용하여 HTML 속성을 변경 하시겠습니까?
모르테 자 아사 디

@Rishav js를 사용하지 않고 원하는 효과를 얻는 것이 매우 까다로울 수 있다는 데 동의합니다. 그러나 이메일을 html 엔터티로 인코딩하는 곳에서 강조한 것과 같은 메서드가 있으면 불가능할 수 있습니다.

@MortezaAsadi 답변으로 언급 한 예를 게시 할 수 있습니까?

@ 난 - 사랑 - CSS는이 기사를 살펴 : andydavies.me/blog/2012/08/13/...
모르테 자 아사 디에게

답변:


35

귀하의 요청에 대한 문제는 구체적으로 "화면 판독기 지원"입니다. 정의에 따라 화면 판독기는 일종의 "봇"입니다. 스크린 리더가 이메일 주소를 해석 할 수 있어야하는 경우 페이지 크롤러도이를 해석 할 수 있습니다.

또한 mailto속성 의 요점은 웹에서 이메일 주소를 수행하는 방법의 표준이되는 것입니다. 두 번째 방법이 있는지 묻는 것은 두 번째 표준이 있는지 묻는 것과 같습니다.

스크립트를 통해 수행하면 페이지가로드되면 스크립트가 실행되고 DOM에서 렌더링 된 이메일 주소와 동일한 문제가 발생합니다 (이메일 주소 등을 채우지 않는 한 on click). 어느 쪽이든 스크린 리더는 아직로드되지 않았기 때문에이 문제가 계속 발생합니다.

솔직히, 스팸 필터가 반쯤있는 이메일 서비스를 받고받은 편지함에서 쉽게 정렬 할 수있는 기본 제목을 지정하세요.

<a href="mailto:no-one@no-where.com?subject=Something to filter on">Email me</a>

당신이 요구하는 것은 표준에 두 가지 방법이 있는지, 하나는 봇용이고 다른 하나는 비 봇용입니다. 대답은 그렇지 않다는 것이며 가능한 한 최선을 다해 봇과 싸워야합니다.


8
이 로봇 싸움 안됐다하지만 일일 우리는 전쟁을 승리 ... 또는 멸종 것
k2snowman69을

죄송하지만 로봇이 작동하면로 모든 문자열을 찾은 @다음이 텍스트를로 분할 ?하고 첫 번째 부분이 정규식과 일치하는지 확인합니다. 마지막으로 2 버전 저장
아드리안 Bobrowski을

무슨 뜻인지 잘 모르겠습니다. 제목 줄을 추가하는 요점은 최종 사용자가 변경하지 않기를 바랍니다. 이런 식으로 이메일 필터를 만들어 모든 주제별 이메일을 특정 폴더에 넣을 수 있습니다. 요점은 봇을 방지하는 것이 아니라 이메일 규칙을 지원하는 것이 었습니다. 앞서 말했듯이 봇을 방지하는 것은 끝없는 전투입니다.
k2snowman69

일관되고 상세한 답변에 감사드립니다. 스크린 리더가 본질적으로 봇이라고 말할 때 유효한 지적이라고 생각합니다. 그러나 아이디어는 사용자가 버튼을 눌러 모달을 여는 것과 같은 일종의 조치를 취할 때까지 이메일을 숨기는 것입니다. 사용자 상호 작용이 발생하면 이메일 주소가 공개됩니다. 이것이 스크립트를 사용하지 않고 달성 될 수 있다면 그것이 내 질문에 대한 답이 될 것입니다. 이메일에 제목을 추가 한 다음이를 기반으로 메시지를 필터링하는 방법이 순전히 천재적이므로이 답변에 +1을 제공합니다.

또한 mailto : 속성에 관해서는 이메일 주소가 웹에 표시되는 방식을 표준화하는 것이 요점 일 수도 있지만-그게 사실인지 잘 모르겠습니다. 사용하기 쉽고 이메일 주소를 클릭합니다. 이메일 클라이언트에 새 메시지가 열리고 입력하고 전송하기 만하면됩니다. 마지막으로, "표준"은 종종 부동산을 따라 잡는 데 시간이 걸리며 그 반대는 아닙니다.

29

이메일 봇을 물리 치는 것은 어려운 일입니다. Wikipedia 의 Email Address Harvesting 대책 섹션 을 확인하는 것이 좋습니다.

제 배경 이야기는 검색 봇을 작성했다는 것입니다. 수년 전에 처음 실행되는 동안 105,000 개 이상의 URL을 크롤링했습니다. 내가 배운 것은 웹 크롤링 봇이 말 그대로 웹 페이지에 나타나는 텍스트 인 모든 것을 본다는 것입니다. 봇은 이미지를 제외한 모든 것을 읽습니다.

스팸은 다음과 같은 이유로 코드를 통해 쉽게 차단할 수 없습니다.

  1. mailto : 태그를 사용할 때 CSS와 JS는 관련이 없습니다. 봇은 특히 해당 "mailto :"키워드에 대한 HTML 페이지를 확인합니다. 콜론에서 다음 작은 따옴표 나 큰 따옴표 (둘 중 먼저 오는 것)까지 모든 것이 이메일 주소로 표시됩니다. 위의 예와 같이 HTML 엔티티 이메일 주소는 역 ASCII 방법 / 기능을 사용하여 빠르게 번역 할 수 있습니다. 위의 자바 스크립트 코드 스 니펫을 실행하면 & # 121; & # 111; & # 117; & # 114; ...로 시작하는 문자열이 'yourname@domain.com'으로 빠르게 바뀝니다. (내 검색 봇은 이메일 주소가 아닌 웹 페이지의 URL을 원했기 때문에 mailto : email 주소로 hrefs를 버렸습니다.)

  2. 페이지가 봇과 충돌하는 경우 봇 작성자는 해당 페이지를 염두에두고 충돌을 수정하도록 봇을 조정하여 봇이 나중에 해당 페이지에서 다시 충돌하지 않도록합니다. 따라서 봇을 더 똑똑하게 만듭니다.

  3. 봇 작성자는 페이지를 크롤링하지 않고 시작 이메일 주소를 사용하지 않고 알려진 모든 이메일 주소 변형을 생성하는 봇을 작성할 수 있습니다. 그렇게하는 것이 불가능할 수도 있지만, 오늘날의 높은 코어 수 CPU (하이퍼 스레드이며 4GHz 이상에서 실행 됨)와 분산 클라우드 기반 컴퓨팅 및 심지어 슈퍼 컴퓨터를 사용할 수 있다는 점은 상상할 수없는 일입니다. 이제 누군가의 이메일 주소를 몰라도 모든 사람에게 스팸을 보내는 봇 팜을 만들 수 있습니다. 20 년 전에는 이해할 수 없었을 것입니다.

  4. 무료 이메일 제공 업체는 무료 사용자 계정을 광고주에게 판매 한 적이 있습니다. 과거에는 무료 이메일 계정에 가입하기 만하면 자동으로 해당 이메일 주소로 스팸을 전달하기 시작하는 녹색 표시등이 보장되었습니다. 나는 유명한 회사 이름으로 여러 번 일어나는 것을 보았다. (이름은 언급하지 않겠습니다.)

  5. mailto : 키워드는이 IETF RFC의 일부입니다 . 여기서 브라우저는 해당 키워드가있는 링크에서 기본 이메일 클라이언트를 자동으로 실행하도록 빌드됩니다. 응용 프로그램 시작 프로세스가 발생하면 JavaScript를 사용하여 해당 프로세스를 중단해야합니다.

이메일 서버에서 필터를 사용하지 않고 이미지를 사용하지 않고 기존 이메일 서버를 사용하면서 스팸을 100 % 차단할 수 없다고 생각합니다.

한 가지 대안이 있습니다. 웹 사이트에서 내부적으로 실행되는 채팅과 유사한 이메일 클라이언트를 구축 할 수도 있습니다. Facebook의 채팅 클라이언트와 같습니다. "일종의 이메일"이지만 실제로는 이메일이 아닙니다. 로그인시 자동로드되는 보관 기능이있는 일대일 인스턴트 메시징입니다. 문서 첨부 + 링크 기능이 있기 때문에 이메일처럼 작동하지만 스팸은 없습니다. 외부에서 액세스 할 수있는 API를 구축하지 않는 한, 사람들이 스팸을 보낼 수없는 폐쇄 형 시스템입니다.

엄격하게 전통적인 이메일을 고수 할 계획이라면 회사 이메일 서버에서 Apache의 SpamAssassin 과 같은 것을 실행하는 것이 가장 좋은 방법 일 수 있습니다 .

또한 위에 나열된 여러 전략을 결합하여 이메일 수집기가 웹 페이지에서 이메일 주소를 수집하기 어렵게 만들 수 있습니다. 그들은 100 % 스팸을 100 % 차단하지 않을 것이며, 스크린 리더의 100 %가 시각 장애인을 위해 작동하도록 허용합니다.

기존 이메일의 문제점에 대해 정말 좋은 출발점을 만들었습니다! 그것에 대한 당신의 명성!

좋은 스크린 리더는 Freedom Scientific의 JAWS 입니다 . 나는 시각 장애인이 내 웹 페이지를 읽는 방법을 듣기 위해 전에 그것을 사용했습니다. (링크 클릭 등)과 텍스트를 모두 읽는 남성 음성이 들리면 1 음성을 여성으로 변경하여 1 음성은 동작을 읽고 다른 음성은 텍스트를 읽습니다. 그러면 웹 페이지를 읽는 방법을 더 쉽게들을 수 있습니다. 시각 장애인.)

이메일 주소로 행운을 빕니다 수확 대책 노력!


2
철저한 답변 감사합니다. 당신은 풍부한 정보를 공유했습니다. 이 정보는 문제를 더 자세히 파악하는 데 도움이되며 결국 문제를 해결할 방법을 찾는 데 도움이 될 수 있습니다.

천만에요! 추가적인 경험적 통찰력으로 당신을 돕게되어 기쁩니다. 상을 주셔서 감사합니다. 놀랐습니다. 감사합니다!
Clomp

26

다음은 JavaScript를 사용하는 접근 방식이지만 약간의 공간을 차지합니다. 또한 매우 "빈민가"이며 일반적으로 JS 사용을 극도로 꺼리는 경우를 제외하고는 HTML에서 인라인 JS로 접근하는 것을 권장하지 않습니다.

<a
  href="#"
  data-contact="bGUtZW1haWxAdGhlLWRvbWFpbi5jb20="
  data-subj="QW4gQW1hemluZyBTdWJqZWN0"
  onfocus="this.href = 'mailto:' + atob(this.dataset.contact) + '?subject=' + atob(this.dataset.subj || '')"
  >
  Send an email
</a>

data-contactbase64로 인코딩 된 이메일 주소입니다. 그리고 data-subj선택적 base64 인코딩 주제입니다.

JS없이이 작업을 수행 할 때의 주요 과제는 CSS가 HTML 속성을 변경할 수 없다는 것입니다. ( 귀하가 링크 한 기사 는 "하늘 속의 파이"이며 현재 또는 가까운 장래에 가능한 일과는 아무런 관련이 없습니다.)

언급 한 HTML 엔티티 접근 방식 또는 일부 변형은 효과가있는 가장 간단한 옵션 일 수 있습니다. 또한 iframe접근 방식 은 영리하고 서버 리디렉션 접근 방식 은 매우 훌륭합니다. 그러나 세 가지 모두 봇에 취약합니다.

위에서 설명한 접근 방식을 사용하면 data-contact속성 에서 base64로 인코딩 된 이메일 주소를 사용하는 것은 매우 "일회성"입니다. 스크래퍼가 사이트에 맞게 특별히 설계되지 않은 한 작동합니다.


나는 이것을 좋아한다. js가 활성화되어 있지 않으면 다른 사람에게 메일을 보낼 수 있습니다.
Michael Rogers

15

단순 + 많은 @ + 도구없이 편집 가능

<a href="mailto:user@domain@@com"
   onmouseover="this.href=this.href.replace('@@','.')">
   Send email
</a>


나는이, 깔끔한 작은 스 니펫을 좋아한다!
Marlon Creative

2
@AndyHolmes는이 작업을 위해 onclick = "..."을 사용했습니다. 모바일에서도 작동합니다 (Android / 모바일 크롬에서 테스트 됨). 그런 식으로 더 쓸모 없게된다면 봇이 onclick을 더 확인하기 때문입니다. onmouseover보다.
goleon

2
@goleon onclick을 모바일에서 일하는 것이, onMouseover와는 휴대폰은 호버 상태가없는되지 않으므로
앤디 홈즈

7

Google의 recaptcha mailhide 사용을 고려해 보셨습니까? https://www.google.com/recaptcha/admin#mailhide

사용자가 확인란을 클릭하면 ( 아래의 nocaptcha 참조 ) 전체 전자 메일 주소가 표시됩니다.

recaptcha는 전통적으로 스크린 리더뿐만 아니라 인간에게도 어렵지만 접근성 테스트와 관련하여 여기 에서 읽을 수있는 Google의 nocaptcha recaptcha의 역할이 있습니다 . 화면 판독기의 관점에서 전통적인 확인란으로 렌더링하기 때문에 화면 판독기와 관련하여 유망한 것으로 보입니다. Nocaptcha reCAPTCHA

예 # 1-안전하지는 않지만 아이디어를 쉽게 설명하기 위해

다음은 mailhide를 사용하지 않고 직접 recaptcha를 사용하여 구현하는 몇 가지 코드입니다. https://jsfiddle.net/43fad8pf/36/

<div class="container">
    <div id="recaptcha"></div>
</div>
<div id="email">
    Verify captcha to get e-mail
</div>

function createRecaptcha() {
    grecaptcha.render("recaptcha", {sitekey: "6LcgSAMTAAAAACc2C7rc6HB9ZmEX4SyB0bbAJvTG", theme: "light", callback: showEmail});
}
 createRecaptcha();

function showEmail() {
    // ideally you would do server side verification of the captcha and then the server would return the e-mail
  document.getElementById("email").innerHTML = "email@something.com";
}

참고 : 내 예에서는 javascript 함수에 전자 메일이 있습니다. 이상적으로는 서버 측에서 recaptcha의 유효성을 검사하고 전자 메일을 반환합니다. 그렇지 않으면 봇이 코드에서 간단히 가져올 수 있습니다.

예제 # 2-서버 측 유효성 검사 및 전자 메일 반환

이와 같은 예제를 더 사용하면 추가 보안이 제공됩니다. https://designracy.com/recaptcha-using-ajax-php-and-jquery/

function showEmail() {
    /* Check if the captcha is complete */
    if ($("#g-recaptcha-response").val()) {
        $.ajax({
            type: ‘POST’,
            url: "verify.php", // The file we’re making the request to
            dataType: ‘html’,
            async: true,
            data: {
                captchaResponse: $("#g-recaptcha-response").val() // The generated response from the widget sent as a POST parameter
        },
        success: function (data) {
            alert("everything looks ok. Here is where we would take 'data' which contains the e-mail and put it somewhere in the document");
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            alert("You’re a bot");
        }
    });
} else {
    alert("Please fill the captcha!");
}
});

verify.php는 다음과 같습니다.

$captcha = filter_input(INPUT_POST, ‘captchaResponse’); // get the captchaResponse parameter sent from our ajax

/* Check if captcha is filled */
if (!$captcha) {
    http_response_code(401); // Return error code if there is no captcha
}
$response =     file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=YOUR-SECRET-KEY-HERE&amp;amp;response=" . $captcha);
if ($response . success == false) {
echo ‘SPAM’;
http_response_code(401); // It’s SPAM! RETURN SOME KIND OF ERROR
} else {
// Everything is ok, should output this in json or something better, but this is an example
    echo 'email@something.com'; 
}

4

스크레이퍼를 작성하는 사람들은 스크레이퍼를 가능한 한 효율적으로 만들고 싶어합니다. 따라서 스타일, 스크립트 및 기타 외부 리소스를 다운로드하지 않습니다. mailtoCSS를 사용하여 링크 를 설정하는 방법은 없습니다 . 또한 Javascript를 사용하여 링크를 설정하고 싶지 않다고 구체적으로 말했습니다.

다른 유형의 리소스에 대해 생각한다면 외부 문서 (예 : iframe을 사용하는 HTML 문서)도 있습니다. 거의 모든 스크레이퍼가 iframe의 콘텐츠를 다운로드하는 것을 방해하지 않습니다. 따라서 다음을 수행 할 수 있습니다.

index.html :

<iframe src="frame.html" style="height: 1em; width: 100%; border: 0;"></iframe>

frame.html :

My email is <a href="mailto:me@example.com" target="_top">me@example.com</a>

인간 사용자에게 iframe은 일반 텍스트처럼 보입니다. Iframe은 기본적으로 인라인이며 투명하므로 테두리와 크기 만 설정하면됩니다. 자바 스크립트를 사용하지 않으면 iframe의 크기를 콘텐츠의 크기와 일치시킬 수 없으므로 우리가 할 수있는 최선은 미리 정의 된 크기를 제공하는 것입니다.


3
첫 번째 단락에 동의하지만 iframe 내용에 대한 두 번째 단락이 잘못되었습니다. 봇은 가능한 한 많은 HTML 콘텐츠를 원합니다. 그들은 링크, 텍스트 등을 찾을 때 iframe의 콘텐츠를 다운로드합니다. 봇은 그것이 iframe 태그인지 아닌지 상관하지 않습니다. 단순히 페이지를 크롤링합니다. URL이 iframe 또는 자바 스크립트 태그의 src 섹션에있는 경우 크롤링됩니다.
Clomp dec.

3

첫째, CSS로 아무것도 할 수 없다고 생각합니다. 모든 봇 (Google 크롤러 제외)은 웹 사이트의 모든 스타일을 무시합니다. 모든 솔루션은 JS 또는 서버 측에서 작동해야합니다.

서버 측 솔루션은 <a>단순히 원하는 페이지로 리디렉션되는 새 탭으로 연결되는 링크를 만들 수 있습니다 mailto.

그게 지금 제 생각입니다. 도움이 되었기를 바랍니다.


1
약 1 년 전에 이것을 테스트했을 때 모든 주요 브라우저가이를 지원했지만, mailto:"보안"이유로 인해 302 리디렉션의 위치로 처리 되는 것을 볼 수있었습니다. 이미 file:더 이상 사용할 수없는 것처럼 . (존재가 말했다, 우리는 자바 스크립트를 사용할 수있는 대체 등이 리디렉션을 사용합니다.)
울리히 슈바르츠

사실입니다. 좋은 생각
파블로 Kvitca

2

모든 요구 사항을 충족하는 짧은 대답은 불가능하다는 것입니다.

여기에 답변 된 스크립트 기반 옵션 중 일부는 특정 봇에서 작동 할 수 있지만 스크립트가 필요하지 않기를 원했기 때문에 불가능합니다.


그들은 이메일에 일종의 암호화를 사용하고 JavaScript에서 동적으로 해독 할 수 있습니다. 단순한 +1 암호조차도 트릭을 할 것입니다. TheorericLly는 깨질 수 있지만 어떤 봇도 깨뜨릴 수 없습니다.
존 ktejik

0

PHP 솔루션

function printEmail($email){
    $email = '<a href="mailto:'.$email.'">'.$email.'</a>';
    $a = str_split($email);
    return "<script>document.write('".implode("'+'",$a)."');</script>";
}

사용하다

echo printEmail('test@gmail.com');

결과

<script>document.write('<'+'a'+' '+'h'+'r'+'e'+'f'+'='+'"'+'m'+'a'+'i'+'l'+'t'+'o'+':'+'t'+'e'+'s'+'t'+'@'+'g'+'m'+'a'+'i'+'l'+'.'+'c'+'o'+'m'+'"'+'>'+'t'+'e'+'s'+'t'+'@'+'g'+'m'+'a'+'i'+'l'+'.'+'c'+'o'+'m'+'<'+'/'+'a'+'>');</script>

PS 요구 사항 : 사용자는 JavaScript를 활성화해야합니다.


-3

효과적인 방법은 아래와 같이 CSS와 함께 사용하는 것입니다.

<a href="mailto:myemail@ignore-domain.com">myemail@<span style="display:none;">ignore-</span>domain.com

그런 다음 정규식 ignoreme-을 사용하여 href="mailto:..."속성 에서 단어 를 제거하는 자바 스크립트를 작성하십시오 . 이것은 ignore-실제 도메인 앞에 단어를 추가 하기 때문에 봇에서 이메일을 숨기고 스크린 리더에서 작동하며 사용자가 링크 사용자 정의 js 기능을 클릭하면 속성 에서 ignore-단어를 제거 href하여 실제 이메일을 엽니 다.

이 방법은 지금까지 저에게 매우 효과적이었습니다. 자세한 내용은 http://techblog.tilllate.com/2008/07/20/ten-methods-to-obfuscate-e-mail-addresses-compared/


죄송하지만이 방법은 좋은 방법이 아닙니다. 모든 좋은 봇은 앵커 텍스트와 a href. 사용 display:none은 절단을 할 수 없습니다.
Simon Hayter
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.