何でもエミュレートできるヘッドレスブラウザ(phantomjsなど)の出現により、次のことを想定することはできません。
- スパムボットはjavascriptを使用しません。
- マウスイベントを追跡してボットを検出できます。
- フィールドが視覚的に隠されていることはわかりませんが、
- 彼らは提出する前に与えられた時間待つことはありません。
それが以前は真実だった場合、それはもはや真実ではありません。
ユーザーフレンドリーなソリューションが必要ない場合は、美しい「私はスパマーです」送信ボタンを提供してください。
<input type="submit" name="ignore" value="I am a spammer!" />
<input type="image" name="accept" value="submit.png" alt="I am not a spammer" />
もちろん、2つの画像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またはjavascriptを処理する、フィールドが非表示になっていることを知っている、マウスの動きをエミュレートする、またはキーボード入力のエミュレート、..。