I use captchas that set a hidden field value through javascript (the user does not enter anything). It takes a second to view source and figure out what should you enter. Despites this, the captcha works 100% and spam stops. Unless spammers target your own site manually, such a solution is good enough.