Ich kann dir nicht wirklich einen Schutz empfehlen, denn ich habe mir selber einen Spamschutz aus einigen Kombinationen gebastelt. Du kannst das aber selber relativ einfach nachbauen.
In der Regel geht jeder User über die Startseite auf eine Domain. In der Startseite setze ich eine Session-Variable. Bei der Formularvalidierung prüfe ich, ob diese Variable gesetzt ist. Spambots finden Seiten mit Formularen und merken sich die Seiten und greifen ab sofort auf diese Seite direkt zu. Also wird dann die Session-Variable nicht vorhanden sein. Weiterhin habe ich noch ein Honey-Pot eingebaut und zusätzlich noch einen Timer. Ist die Zeit zwischen Aufruf des Formulars und absenden unter x-Sekunden, blockiere ich das Senden. Und zu guter Letzt habe ich auf dem Server mittlerweile eine lange Blacklist, die den Zugriff von sehr vielen IP-Adressen bzw. IP-Bereichen blockiert.
Alles zusammen sorgt für Ruhe im Karton, Spam wird über meine Formulare nicht mehr (naja, extrem selten) verschickt.