Die CSS-Methode?
Ich meine sogar, es wäre mal hier im TP in einem Tutorial erwähnt worden, finde den Thread aber gerade nicht.
Aber ich kann das ja mal eben kurz rezitieren:
Also angenommen, du hast ein Formular mit den Feldern "name", "email" und "message".
Da fügst du jetzt einfach irgendwo zwischen den anderen Feldern ein neues Textfeld mit dem Namen "website" hinzu - der Name sollte den Bot animieren, etwas hineinzuschreiben und "website" ist sowas 
Der Code sähe dann so aus:
HTML-Code:
<form name.....>
<input type="text" name="website" class="form_url" value="">
</form>
Jetzt fügst du zu deinem restlichen CSS-Code die Klasse "form_url" hinzu:
HTML-Code:
.form_url
{
visibility: hidden;
display: none;
}
Damit wird dieses Eingabefeld jetzt ausgeblendet und ist für den Benutzer eines normalen Webbrowsers nicht mehr sichtbar. Für Bots, die ja bloß den Quelltext und keine gerenderte Ansicht sehen, existiert dieses Eingabefeld weiterhin und wenn der Name interessant genug ist, wird der Bot dort auch was eintragen.
Die haben nämlich offensichtlich eine Art Liste, in welche Felder mit welchen Namen was eingetragen werden soll 
Jetzt müssen wir in unserem Formularcode nur noch abfragen, ob unser verstecktes und durch den Benutzer nicht änderbares Feld auf einmal Text enthält - hier Beispielsweise in PHP:
PHP-Code:
if(strlen(trim($_POST['form_url'])) > 0)
{
// Aaaaha! Der Bot hat was eingetragen, jetzt platzt der Mond!!!
}
False Positives - also versehentliches Aussortieren echter Anfragen - ist nahezu vollständig ausgeschlossen, denn diese CSS-Anweisungen gibt es nicht erst seit gestern und bisher hat das auch in jedem Browser funktioniert.
Wer ganz sicher gehen will, erzeugt ein Label für dieses Eingabefeld, weist ihm die selbe CSS-Klasse zu und schreibt darein, dass das nebenstehende Feld bitte unbedingt und unter allen Umständen um Gottes Willen absolut leer gelassen werden muss