Jeví se mi jako nejrozumnější zkombinovat Captchu - dostatečně složitou - s JavaScriptem, který captchu vyplní a příslušné pole skryje (nastaví style.dislay na none)
tento script lze snadno navěsit na onLoad událost obrázků (BODY a IMG jsou jediné dva objekty, které mají onLoad, dle specifikací), přičemž tím obrázkem může být například obrázek matematické operace (sčítání, odčítání ...); já jsem právě nedávno implementoval captchu tak, že vygeneruje 2 tří až pětimístná čísla, jejichž součet má uživatel zadat; generování je takové, aby nedocházelo k řádovému přenosu (tzn. součet odpovídajících si cifer je vždy maximálně 9: 425 + 332) - tím pádem to lze spočítat velmi rychle a v hlavě, nabízí to přitom dostatek kombinací, aby to bot neprolomil čistě pokus omyl. Javascript výsledek vyplní a pole skryje, když je JS vypnutý, holt si uživatel trochu započítá.
docela dobré je také do formuláře dát náhodně vygenerované skryté pole (a to buď nejlépe skryté přes CSS a nadepsané "Nevyplňujte") -- pokud po odeslání formuláře toto pole je vyplněné, je to na 99.999% bot a lze formulář zahodit.
posledním dobrým nápadem je mezi "formulář" a "přidání příspěvku" dát mezikrok "preview" (povinný), tohle bot prostě nedá (není-li napsán přímo pro váš web)
S boty mam podobnou zkusenost, pokud nejsou psani primo pro vas web, staci jakakoliv (i primitivni) ochrana a boti si s ni neporadi. Osobne jsem problemy s narustajicim spamem vyresil tak, ze jsem k formulari pridal checkbox "No Spam", ktery je pred odeslanim nutne zaskrtnout a rovnez jsem se za posledni rok a pul, kdy jsou timto prvkem formulare vybaveny, nesetkal s jedinym spamem.