.net: utilizando reCaptcha para o login
A aplicação de digitar as letras ou números que aparecem em uma imagem é chamada captcha. Os sites a utilizam para evitar cadastros ou acessos feitos automaticamente (por sistemas computacionais).
Substituí o sistema que desenvolvi pelo reCaptcha, sistema de captcha utilizado por diversos sites, por dois motivos:
- Ao digitar as palavras no reCaptcha ajudamos a digitalizar livros para o Internet Archive e antigas edições do The New York Times:

- O sistema é rápido, funcional e fácil de instalar:
Instalação¹
O site do reCaptcha oferece plugins para diversas aplicações Web, como o WordPress, bibliotecas para as principais liguagens de desenvolvimento e uma API para os demais casos. A biblioteca para asp.net serve tanto para vb.net quanto c#.
1 – Download e referência
Baixe a biblioteca e referencie a biblioteca ( library/bin/Release/Recaptcha.dll) no seu site asp.net.
2 – Exibição do controle reCaptcha
Inserir na primeira linha da página que irá exibir o controle a seguinte linha:
<%@ Register TagPrefix="recaptcha" Namespace="Recaptcha" Assembly="Recaptcha" %>
Dentro da tag <form runat="server"> da página, no local aonde você deseja que o controle com o reCaptcha seja exibido, cole:
<recaptcha:RecaptchaControl ID="recaptcha" runat="server" PublicKey="" PrivateKey="" />
É preciso informar a publicKey e a PrivateKey que são obtidas após você se cadastrar no site do reCaptcha. Ao executar seu projeto o controle padrão do reCaptcha será exibido.
3 – Como verificar se as palavras digitadas estão ok
É simples, basta verificar se Page.IsValid, como aparece no exemplo que acompanha a documentação da biblioteca:
If Page.IsValid Then
lblResult.Text = "Ok! pode prosseguir"
lblResult.ForeColor = Drawing.Color.Green
Else
lblResult.Text = "As palavras estão incorretas"
lblResult.ForeColor = Drawing.Color.Red
End If
4 – Mudar o idioma para português
Abra o projeto da biblioteca do reCaptcha e edite a classe RecaptchaControl.cs.:
//Localize o seguinte método:
protected override void RenderContents(HtmlTextWriter output)
// Após a linha:
output.WriteLine("theme : ‘{0}’,", theme == null ? "" : theme);
// Inclua a linha que define o idioma que será utilizado no controle
output.WriteLine("lang : ‘{0}’,", "pt");
Faça o Build da biblioteca e substitua a dll que está em seu projeto pela que foi criada: ( library/bin/Debug/Recaptcha.dll). Pronto, agora o controle está em português.
Falhas / sugestões
A função de áudio é horrível, testei com 4 pessoas e ninguém conseguiu entender o que era ditado.
Mesmo mudando o idioma para o português, as palavras para digitar são em inglês. Seria interessante utilizar o reCaptcha ou outra aplicação semelhante para ajudar a digitalizar textos em português.
Evolução do captcha
Com a evolução dos aplicativos de reconhecimento de texto em imagens (OCR), vários sistemas de captcha ficaram obsoletos. A primeira solução foi distorcer ainda mais as imagens, o que atrapalha a experiência do usuário.
A tendência é fazer perguntas variáveis, baseadas na palavra exibida no capcha, como:
- informar somente as vogais,
- os números;
- os x primeiros caracteres, etc.
Já li posts (perdi a fonte) sugerindo a utilização de contas simples no lugar das imagens, ex:
- o valor de 5 x5;
- subtrair três de dois.
Saiba +
- reCaptcha: ASP.NET Library for reCAPTCHA quickstart;
- Saber é Bom Demais: reCAPTCHA, serviço gratuito que ajuda digitalizar livros velhos;
- A Whole Lotta Nothing: ReCAPTCHA’s quality is going down?









dá pra instalar no Joomla 1.5?
O Community Builder 1.2 já não incorpora um Captcha?
Existe uma extensão para o Joomla utilizar o reCaptha: http://extensions.joomla.org/extensions/2866/details
Eu não conheço o Joomla o suficiente para saber se já tem um captcha incorporado ou não.
Muito util o artigo.
Estou com uma duvida:
Meu site desenvolvido em asp.net (VB) no VS2008 e eu gostaria de mudar o idioma do recapchua para pt. Quando vc fala em "Abra o projeto da biblioteca do reCaptcha e edite a classe RecaptchaControl.cs."
Qual seria este arquivo do projeto da biblioteca? Seria o arquivo dll? Abro ele no VS2008 mesmo?
Grato
Olá, Caio!
Não é o .dll, mas o projeto que gera o dll.
Quando você baixa a biblioteca, o código fonte vem junto, a classe RecaptchaControl.cs é um dos arquivos.
Após fazer a alteração, o Build gera uma nova dll.
Vitor, boa tarde.
Estou tentando traduzir o reCaptcha do Google e achei o seu artigo falando como traduzir. Acontece que você fala de um projeto mas mesmo no link dado aqui a única coisa que existe é uma .dll. Você teria esse arquivo para disponibilizar ou saberia outra forma de traduzir. Fico no aguardo.
Obrigado e até mais.
Olá, Thiago!
Logo após publicar esse artigo acabei abandonado o reCaptha, pois os usuários do sistema não se adaptaram ao sistema.
Infelizmente não conheço outra forma para efetuar a tradução, lembrando que mesmo com a tradução, o texto a ser digitado ainda é em inglês.