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:
[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 +
- 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?