“Mailto :”링크를 발견 한 날은 영광 스러웠습니다. 웹 페이지에 내 주소를 게시 할 수 있으며 누구나 한 번의 클릭으로 저에게 이메일을 보낼 수 있습니다. 스팸 수확기가 인수되기 전에 이것은 웹의 무고한 날이었습니다. “Mailto :”오늘을 사용하면 첫 번째 비아그라 메시지가 30 초 후에 나타납니다. 그렇다면 스패머로부터 원치 않는 관심을 끌지 않고 이메일 주소를 어떻게 게시 할 수 있습니까?
가장 분명한 솔루션은 HTML에서 머신 불안정한 이메일을 사용하는 것입니다 (예 : "Bob (at) Bobsdomain dot com". 이로 인해 스패머가 어렵지만 사용자에게도 어렵습니다.
또 다른 옵션은 JavaScript를 사용하여 이메일 주소를 생성하는 것입니다. 아마도 작은 문자열 연결 또는 인코딩을 사용하여
이렇게하면 대부분의 스패머가 중단되지만 JavaScript가 장애가있는 사람은 귀하의 주소가 보이지 않습니다. (문서를 사용하지 않는 것이 좋습니다.)
더 나은 솔루션은 기술의 조합을 사용하여 사용자의 어려움을 유발하지 않고 스패머를 방해하는 것입니다. 첫 번째 단계는 HTML에서 인간이 읽을 수 있지만 수확 자 방지 이메일 주소를 사용하는 것입니다. 우리는 이것을 연락처 페이지에 대한 링크로 만들 것입니다 (예 :
링크를 식별 할 수 있도록 "이메일"클래스를 포함 시켰습니다. 다음 단계는 목숨을 잃은 이메일을 검색하여 페이지를 검색하여 실제 "Mailto :"링크로 변환하는 JavaScript 기능을 작성하는 것입니다. 'email.js'파일을 만들어 html에 포함시킬 것입니다.
필요한 코드는 짧으므로 JavaScript 라이브러리가 필요하지 않습니다.
email.js의 내용 :
function EmailUnobsfuscate() {
// find all links in HTML
var link = document.getElementsByTagName && document.getElementsByTagName("a");
var email, e;
// examine all links
for (e = 0; link && e < link.length; e++) {
// does the link have use a class named "email"
if ((" "+link[e].className+" ").indexOf(" email ") >= 0) {
// get the obfuscated email address
email = link[e].firstChild.nodeValue.toLowerCase() || "";
// transform into real email address
email = email.replace(/dot/ig, ".");
email = email.replace(/(at)/ig, "@");
email = email.replace(/s/g, "");
// is email valid?
if (/^[^@]+@[a-z0-9]+([_.-]{0,1}[a-z0-9]+)*([.]{1}[a-z0-9]+)+$/.test(email)) {
// change into a real mailto link
link[e].href = "mailto:" + email;
link[e].firstChild.nodeValue = email;
}
}
}
}