PHP를 사용하여 이메일 주소를 난독 화하여 스패머가 쉽게 수확하지 않도록하려면 어떻게해야합니까? [복제하다
-
23-08-2019 - |
문제
PHP로 프로그래밍하고 있으며 인간이 쉽게 읽을 수 있지만 스패머가 쉽게 수확 할 수없는 이메일 주소가있는 웹 페이지를 만들고 싶습니다. 이메일 주소는 사용자 입력에서 나오고 정규 표현식을 사용하여 주소를 식별 할 수 있다고 생각하지만 대부분의 자동 스팸 봇을 수확.
다음은 한 가지 아이디어입니다. (의사 코드)
(email)@(domain.com) $1<span class="remove">DELETE</span>$2
.remove {
display: none;
}
바라건대 봇이 스팬 태그로 올라 가기를 바랍니다.
마지막으로, 나는 내부에있는 이메일 주소를 방해하지 않는 솔루션을 찾고 있습니다. mailto:
태그.
복제 봇이 전자 메일 주소를 수집하는 것을 방지하는 방법은 무엇입니까? 복제입니다 스팸봇에서 웹 사이트에서 이메일을 보호하는 몇 가지 방법은 무엇입니까? 그리고 아마도 다른 ...
해결책
CSS를 사용하여 난독화할 수 있습니다 ...
<span class="email-encrypt">moc.liamelgoog@avynnib<span class="email-decrypt-message">(Reverse this text to get my Email address)</span></span>
/*Decrypt Email */
.email-encrypt {
unicode-bidi:bidi-override;
direction: rtl;
}
.email-encrypt .email-decrypt-message {
display:none;
}
편집 : 여기, 소스의 이메일 주소는 반대로되어 있습니다. CSS 진술은 이메일 주소를 원래 양식으로 되돌립니다. 나는 그것이 말이되기를 바랍니다.
그러나 이것이 얼마나 효과적인지 확실하지 않습니다. 브라우저 환경을 시뮬레이션하는 많은 봇이 있습니다. 내 이메일은 Binnyva, Googlemail입니다.
다른 팁
사용 GD 이메일 ID의 이미지를 만듭니다
당신은 사용할 수 있습니다 PHP GD 라이브러리 주어진 텍스트의 이미지를 쉽게 만들려면
샘플 코드는 다음과 같습니다.
<?php
header("Content-type: image/png");
$im = @imagecreate(110, 20)or die("Cannot Initialize new GD image stream");
$background_color = imagecolorallocate($im, 0, 0, 0);
$text_color = imagecolorallocate($im, 255, 255, 255);
imagestring($im, 1, 5, 5, "anything@domain.com", $text_color);
imagepng($im);
imagedestroy($im);
?>
장점 :
- Spammers는 OCR을 사용하지 않는 한 캡처 할 수 없습니다.
- PNG/GIF 형식을 사용하여 오버 헤드가 매우 낮습니다
- 모든 텍스트에 대해 즉시 생성 할 수 있습니다
단점 :
- 링크로 메일을 클릭 할 수 없습니다
- 시각적으로 도전받은 TTS 엔진과 함께 작동하지 않습니다.
하나의 옵션 : JavaScript 이메일 난독 화, 및 JavaScript가 비활성화 된 경우 이미지
위의 트릭 (CSS 사용)은 거의 작동하지 않습니다. 나는 봇이 CSS를 전혀 보는지 여부를 모른다. 사실 나는 그들이 html을 읽는 것을 완전히 확신하지 못하고, 아마도 일부 Regex의 전체 페이지와 일치 할 것이다.
반면에, 이것은 스팸 트랩으로 목록을 포장하는 것을 매우 쉽게 만듭니다. 특정 주소가 스팸 (및 스팸 전용)을 수신하려면 필터를 훈련시키기 위해 정상적인 사용자가 보거나 클릭 할 수없는 페이지에 이메일 주소를 넣을 수 있습니다.
실제로, 실험을 수행하십시오 - 다른 유형의 링크가있는 여러 가지 다른 이메일 주소를 작성하고, 얼마나 많은 스팸을 얻는 지 확인하십시오.
몇 달 전에 내 웹 사이트에서 정상적인 링크로 시도했는데 트랩이 스팸을 받기 시작하기까지 약 3 주가 걸렸습니다.