Precisei habilitar um captcha pra um site de votação, e no começo bati um pouco a cabeça, mas depois encontrei o caminho certo.
Pra não reinventar a roda, usei o Captcha mais famoso existente, o reCAPTCHA, e aqui embaixo segue um passo a passo do que você precisa fazer pra utilizar ele no seu site também.
- Acesso o site do reCAPTCHA, e cadastre-se lá. Você pode depois inserir diversos sites no seu perfil;
- Cadastre o site onde você irá utilizar o serviço. Esse cadastro é feito apenas para o domínio principal, e todos os subdomínios utilizam os mesmos dados. Atente para o fato que você pode habilitar suas Keys pra funcionar em qualquer URL, mas aconselho a usar isso somente se a sua aplicação vai rodar em vários domínios, fugindo ao seu controle;
- Após o cadastro você tera dois dados: sua chave pública (Public Key), e a chave privada (Private Key). Vamos usar elas no próximo passo;
- Na documentação do reCAPTCHA você encontra os plugins para as mais diversas linguagens. Nesse exemplo (que foi a minha necessidade) vamos fazer no ASP Clássivo. Eu uso o exemplo de códigos usado por eles, com uma pequena modificação. Abaixo segue o código que eu estou usando:
<%recaptcha_challenge_field = Request(“recaptcha_challenge_field”)recaptcha_response_field = Request(“recaptcha_response_field”)recaptcha_public_key = “SUA_CHAVE_PUBLICA” ‘ your public keyrecaptcha_private_key = “SUA_CHAVE_PRIVADA” ‘ your private key‘ returns the HTML for the widgetfunction recaptcha_challenge_writer()recaptcha_challenge_writer = _“<script type=”"text/javascript”">” & _“var RecaptchaOptions = {” & _” theme : ‘clean’,” & _” lang : ‘pt’,” & _” tabindex : 0″ & _“};” & _“</script>” & _“<script type=”"text/javascript”" src=”"http://www.google.com/recaptcha/api/challenge?k=” & recaptcha_public_key & “”"></script>” & _“<noscript>” & _“<iframe src=”"http://www.google.com/recaptcha/api/noscript?k=” & recaptcha_public_key & “”" frameborder=”"1″”></iframe><>” & _“<textarea name=”"recaptcha_challenge_field”" rows=”"3″” cols=”"40″”></textarea>” & _“<input type=”"hidden”" name=”"recaptcha_response_field”"value=”"manual_challenge”">” & _“</noscript>”end function‘ returns “” if correct, otherwise it returns the error responsefunction recaptcha_confirm(rechallenge,reresponse)Dim VarStringVarString = _“privatekey=” & recaptcha_private_key & _“&remoteip=” & Request.ServerVariables(“REMOTE_ADDR”) & _“&challenge=” & rechallenge & _“&response=” & reresponseDim objXmlHttpSet objXmlHttp = Server.CreateObject(“Msxml2.ServerXMLHTTP”)objXmlHttp.open “POST”, “http://www.google.com/recaptcha/api/verify”, FalseobjXmlHttp.setRequestHeader “Content-Type”, “application/x-www-form-urlencoded”objXmlHttp.send VarStringDim ResponseStringResponseString = split(objXmlHttp.responseText, vblf)Set objXmlHttp = Nothingif ResponseString(0) = “true” then‘They answered correctlyrecaptcha_confirm = “”else‘They answered incorrectlyrecaptcha_confirm = ResponseString(1)end ifend function%>
- Insira o código acima em um arquivo .asp, por exemplo inc.captcha.asp, não esquecendo de inserir sua chave pública e sua chave privada no início do arquivo;
- Crique um arquivo chamado formulario.asp e nele você vai inserir seu formulário normalmente, no início do arquivos vamos fazer o include do inc.captcha.asp e no formulário vamos inserir a chamada para o captcha. Exemlpo:
<!–#include file=”inc.captcha.asp”–>
<html>
…
<form name=”formulario” method=”post” action=”processa.asp”>
…
<%=recaptcha_challenge_writer()%>
<input type=”submit”>
</form>
</html> - O próximo passo será criar o processa.asp que irá receber os dados do seu formulário. Nesse arquivo você vai novamente fazer o include do inc.captcha.asp, e rodar a função de verificação. Se o captcha foi digitado corretamente ele retorna uma string vazia, caso contrário retorna um erro. Abaixo um exemplo pro tratamento:
<!–#include file=”inc.captcha.asp”–>
validaCaptcha = recaptcha_confirm(recaptcha_challenge_field,recaptcha_response_field)
if(validaCaptcha = “”) then
Response.write(“Sucesso!”)
else
Reponse.write(“Erro!”)
end if
%>
O básico esta ai. Com isso da pra você já brincar um pouco com o reCAPTCHA. Vale gastar alguns minutos lendo um pouco a documentação, inclusive sobre a parte de personalização. Sucesso ai!

