pokud spam není cílený, tak většinou funguje udělat hidden políčko a jeho obsah naplnit javascriptem, nebo celé vypsat javascriptem, místo hidden se dá použít i text a potom skrýt pomocí css.
Kód:
document.write('<input type="text" style="display: none;" name="sendmesomespam" value="no' + 'spam" />');
když je cílený - tzn. bot už zná jaká pole vyplňovat (a jaká ne), dá se např. použít input, který má ve jméně nějaký hash generovaný na serveru (to používá wordpress) a navíc je to i ochrana proti CSRF - i tak to bot pořád může najít (už třeba z toho důvodu že ten input se na stránce pokaždé vypisuje na stejné místo) ale mě osobně funguje už první zmíněná metoda - a navíc není potřeba použít captchu