무엇이든 에뮬레이트 할 수있는 헤드리스 브라우저 (예 : phantomjs)의 출현으로 다음과 같이 가정 할 수 없습니다 .
- 스팸 봇은 자바 스크립트를 사용하지 않습니다.
- 마우스 이벤트를 추적하여 봇을 감지 할 수 있습니다.
- 필드가 시각적으로 숨겨져 있다는 것을 알 수 없습니다.
- 그들은 제출하기 전에 주어진 시간을 기다리지 않을 것입니다.
그것이 사실 이었다면 더 이상 사실이 아닙니다.
사용자 친화적 인 솔루션을 원하지 않는 경우 멋진 "나는 스패머입니다" 제출 버튼을 제공하십시오 .
<input type="submit" name="ignore" value="I am a spammer!" />
<input type="image" name="accept" value="submit.png" alt="I am not a spammer" />
물론 두 개의 이미지 input[type=image]
버튼으로 재생할 수 있습니다. 각로드 후 순서, 대체 텍스트, 이미지의 내용 (및 크기) 또는 버튼의 순서를 변경할 수 있습니다 name
. 서버 작업이 필요합니다.
<input type="image" name="random125454548" value="random125454548.png"
alt="I perfectly understand that clicking on this link will send the
e-mail to the expected person" />
<input type="image" name="random125452548" value="random125452548.png"
alt="I really want to cancel the submission of this form" />
접근성을 위해 올바른 대체 텍스트를 입력해야하지만 스크린 리더 사용자에게는 긴 문장이 봇으로 간주되는 것보다 낫다고 생각합니다.
추가 참고 :이 예제는 영어 (또는 모든 언어)를 이해하고 간단한 선택을해야하는 것이 스팸봇에게 더 어렵다는 것을 보여줍니다. 10 초 대기, CSS 또는 자바 스크립트 처리, 필드가 숨겨져 있음을 알고, 마우스 이동을 에뮬레이트하거나 키보드 입력 에뮬레이션, ...