Desde o lançamento de No CAPTCHA reCAPTCHA, milhões de internautas têm sido capazes de atestar que eles são humanos com apenas um único clique. Agora estamos dando um passo adiante e tornando-o invisível. Usuários humanos serão deixados passar sem ver a caixa de seleção “Eu não sou um robô”, enquanto os suspeitos e bots ainda têm que resolver os desafios. Estamos entusiasmados com isso e espero que você dê uma chance!
Veja o vídeo explicativo:
Viu só que legal? Bom, chega de teorias e vamos à pratica!
Irei implementar utilizando Asp.NET MVC, porém o exemplo fica muito fácil para você aplicar à qualquer linguagem!
Agora vamos criar um par de chaves de API para o seu site em https://www.google.com/recaptch e clicar em Get reCAPTCHA no topo da página e seguir as etapas abaixo para criar uma integração.
Preencha os dados iniciais para gerar uma chave (veja que eu coloquei o domínio localhost para testar localmente também, porém após validar recomendo que você remova, ou crie chaves específicas para desenvolvimento):

Após a criação, você obterá suas chaves:

Chaves reCAPTCHA
Chave do site: é usada para exibir o widget em sua página ou código.
Chave secreta: pode ser usada como uma comunicação entre seu site e o Google para verificar a resposta do usuário se o reCAPTCHA é válido ou não.
Agora o próximo passo é exibir o widget reCAPTCHA V3 em seu site.
@*Adicione a referência do script na sua página:*@
<script src="https://www.google.com/recaptcha/api.js"></script>
<br />
<div class="row">
<div class="col-md-12">
<form action="/home/validatecaptcha" method="POST" id="formCaptcha">
<button class="g-recaptcha btn btn-primary btn-lg"
data-sitekey="6LcmRhgUAAAAAA9qWEoYj0QMTg71G_CrSQpc-wXt"
data-callback="myfunction">
Submit
</button>
</form>
</div>
<br />
<b> Situação :</b> @ViewBag.Message
</div>
@*Utilize uma função de callback para submeter o formulário*@
<script>function myfunction() {
document.getElementById("formCaptcha").submit();
}</script>
Você basicamente precisa adicionar a referencia javascript na sua página, e dentro do seu formulário adicionar o botão que o reCAPTCHA lhe fornece.
Após o click do botão, é gerado um callback, que você precisará implementar com o nome que você quiser. Veja que eu utilizei o callback para dar submit no meu form para a action desejada.
Veja agora a implementação do lado do servidor:
[HttpPost]
public ActionResult ValidateCaptcha()
{
var response = Request["g-recaptcha-response"];
//secret that was generated in key value pair
const string secret = "COLOQUE SUA CHAVE SECRETA AQUI";
var client = new WebClient();
var reply =
client.DownloadString(
string.Format("https://www.google.com/recaptcha/api/siteverify?secret={0}&response={1}", secret, response));
var captchaResponse = JsonConvert.DeserializeObject<CaptchaResponse>(reply);
//when response is false check for the error message
if (!captchaResponse.Success)
{
if (captchaResponse.ErrorCodes.Count <= 0) return View();
var error = captchaResponse.ErrorCodes[0].ToLower();
switch (error)
{
case ("missing-input-secret"):
ViewBag.Message = "The secret parameter is missing.";
break;
case ("invalid-input-secret"):
ViewBag.Message = "The secret parameter is invalid or malformed.";
break;
case ("missing-input-response"):
ViewBag.Message = "The response parameter is missing.";
break;
case ("invalid-input-response"):
ViewBag.Message = "The response parameter is invalid or malformed.";
break;
default:
ViewBag.Message = "Error occured. Please try again";
break;
}
}
else
{
ViewBag.Message = "Valid";
}
return View("Index");
}
No próprio site do recaptcha, ele fornece informações da implementação que você precisa fazer do lado do servidor. Resumidamente você precisa fazer uma requisição para a url de verificação do captcha, passando sua chave e você receberá um Json com os dados da resposta.
Um grande abraço!
Coloque suas dúvidas nos comentários, vamos nos ajudar! 😉
