.net: utilizando reCaptcha para o login 10


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:

  1. Ao digitar as palavras no reCaptcha ajudamos a digitalizar livros para o Internet Archive e antigas edições do The New York Times:
  2. 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:

[sourcecode language=”xml”]
<%@ Register TagPrefix="recaptcha" Namespace="Recaptcha" Assembly="Recaptcha" %>
[/sourcecode]

Dentro da tag <form runat="server"> da página, no local aonde você deseja que o controle com o reCaptcha seja exibido, cole:

[sourcecode language=”xml”]
<recaptcha:RecaptchaControl
ID="recaptcha"
runat="server"
PublicKey=""
PrivateKey=""
/>
[/sourcecode]

É 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:

[sourcecode language=”vb.net”]
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
[/sourcecode]

4 – Mudar o idioma para português

Abra o projeto da biblioteca do reCaptcha e edite a classe RecaptchaControl.cs.:

[sourcecode language=”c#”]
//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");
[/sourcecode]

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 +