Frameworki posiadają zazwyczaj stopień komplikacji captchy. Proste są bardzo czytelne, ale uniwersalne boty z reguły się tu wysypią.
Sprawdzanie szybkości to kwestia dyskusyjna. Przykładowo na forum wchodząc otwieram często kilkanaście zakładek z nowymi postami, więc mogę być uznany za bota z racji wywoływania wielu adresów w krótkim odstępie czasu

Dodatkowe puste pole działa na wiele botów. Sam stosuję to rozwiązanie ukrywając je poprzez CSS ustawiając mu klasę, która w dołączanym pliku CSS ma ustawione display na niewidoczny i nadając mu dodatkowo name="WWW" co często kusi boty do wpisania tam adresu

User tego pola z poziomu strony nie zobaczy, ale bot jak najbardziej. Nie stosować tutaj stylu inline, bo bot zobaczywszy display:none może to pole sobie odpuścić.
Nie rozpoznasz bota na podstawie jakiejś bazy. To nie trojany czy wirusy, które posiadają określoną sygnaturę z racji pewnego powtarzalnego fragmentu binarnego. Bota rozpoznajesz po zachowaniu, a więc musiałbyś mieć "bazę behawioralną botów", która byłaby mało skuteczna z racji konfigurowalności tych narzędzi zazwyczaj.
Eroor 404 nie zniechęca bota. To nie człowiek tylko skrypt. Będzie pracował bez wytchnienia i nie zważając na nic, zgodnie z napisanym algorytmem. To pozwala czasem wyłapywać te popularne lub na podstawie błędów kodu oznaczać "to może być bot, trzeba się przyjrzeć temu userowi/IP".
Walka z botami jest trudna. To forum niedawno miało DDoS, co można porównać do zmasowanego ataku botów. Bez analizy logów (serwera, baz danych, frameworka) nie zrobisz wiele by temu przeciwdziałać. Możesz próbować ograniczać poprzez choćby aktualizacje baz danych spamerów. Takie "black listy" są w necie dostępne i aktualizowane na bieżąco. Podpina się je choćby pod htaccess, który filtruje userów odwiedzających pod kątem obecności na owych listach konkretnych IP lub ich zakresów.