Skip to content
🛡 Proteção do checkout do WooCommerce: 2 formas de adicionar CAPTCHA em 15 minutos

🛡 Proteção do checkout do WooCommerce: 2 formas de adicionar CAPTCHA em 15 minutos

Encomendas de spam, bots no carrinho e registos falsos, todas as lojas WooCommerce passam por isto. Ninguém quer limpar a base de dados de encomendas de lixo manualmente, e cada décimo lead de bot é tempo e dinheiro desperdiçados.

O CAPTCHA resolve o problema com 10 minutos de configuração. Sem plugins «tudo-em-um» pesados, sem hacks ao núcleo.

Abaixo estão duas formas funcionais de adicionar verificação ao checkout: através de um plugin gratuito e através de código no ficheiro functions.php. Mais um bónus: proteger a página de login nos mesmos 5 minutos.

O que é o CAPTCHA e porque precisa dele no checkout

💡 Visão geral rápida:

  • O que é o CAPTCHA e que tipos existem, breve, sem teoria pela teoria
  • Dois métodos de instalação: através do plugin gratuito reCAPTCHA for WooCommerce e através de código
  • Bónus: CAPTCHA na página de login do administrador, proteção contra força bruta
  • Erros comuns de configuração e como evitá-los

CAPTCHA (Completely Automated Public Turing Test to Tell Computers and Humans Apart) é um teste que distingue um visitante real de um bot. O utilizador marca a caixa «Não sou um robô», resolve uma imagem ou puzzle simples, e só depois o formulário é submetido. Um bot não consegue passar isto: precisa de compreender uma tarefa para a qual não foi treinado.

Para uma loja WooCommerce, o CAPTCHA no checkout não é um luxo, é uma necessidade. Os bots de spam podem preencher os campos do formulário de encomenda e clicar em «Enviar»: o proprietário recebe dezenas de encomendas vazias no painel de administração e a entupir o CRM. Caso real: após ativar o reCAPTCHA num site de teste, o número de encomendas falsas caiu para zero em 24 horas, sem filtros, sem banimentos de IP, sem edições ao .htaccess.

Seis tipos principais de CAPTCHA: baseado em texto (letras e números distorcidos), áudio (para utilizadores com deficiência visual), matemático (problemas simples como «3 + 4»), baseado em imagem (selecionar todas as imagens com um semáforo), puzzle (arrastar uma peça para o lugar) e invisível (reCAPTCHA v3, funciona em segundo plano, analisa o comportamento do utilizador). Para uma loja, o reCAPTCHA v2 (caixa de verificação) ou o v3 invisível funcionam melhor, não incomodam os clientes e bloqueiam a grande maioria dos bots.

Visão geral dos plugins: o que instalar no WooCommerce

Existem três plugins principais no mercado que cobrem esta tarefa. Vamos analisar brevemente qual se adequa a cada cenário.

ReCAPTCHA for WooCommerce (RelyWP)

Gratuito, sem qualquer versão premium. Suporta reCAPTCHA v2 no checkout, login, registo e páginas de recuperação de palavra-passe. Mais de 40.000 instalações ativas, classificação de 4,5 no WordPress.org. Instala-se num minuto: chaves da API do Google → marcar as caixas dos formulários → concluído. Desvantagem: apenas v2, sem suporte para v3. Se precisar de verificação invisível, veja as alternativas.

Advanced Google reCAPTCHA (WebFactory)

Mais de 200.000 instalações, classificação de 4,8 no WordPress.org. Cobre o checkout do WooCommerce, Easy Digital Downloads, BuddyPress e formulários padrão do WordPress. Suporta v2 e v3, com uma alternativa de CAPTCHA matemático. A versão gratuita cobre 90% das necessidades; a versão PRO adiciona bloqueio por país. Nuances: a interface é um gosto adquirido (separadores com design antigo) e as avaliações mencionam ocasionalmente conflitos com temas personalizados.

ReCaptcha by BestWebSoft

Versão gratuita + premium a 24 $ por ano. v2, v3 e modo empresarial. Definições de tamanho e posicionamento do widget, multilingue, RTL. Desvantagem: dependente dos serviços da Google, o que pode ser crítico para projetos sensíveis ao RGPD. Mas como ferramenta de trabalho, é fiável e testada em dezenas de projetos reais.

Método 1: CAPTCHA via plugin (sem código)

O caminho mais simples. Usamos o reCAPTCHA for WooCommerce, é gratuito, leve e não requer malabarismos.

Passo 1: Instalação e ativação

Aceda à administração do WordPress: Plugins → Adicionar Novo. Escreva recaptcha for woo na barra de pesquisa.

Encontrou, clique em Instalar Agora, aguarde alguns segundos e ative.

Após a ativação, um item reCAPTCHA WooCommerce aparecerá no menu Settings.

Passo 2: Chaves da API do Google

Aceda à página de criação de chaves reCAPTCHA. Preencha:

  • Label, um nome qualquer (p. ex., «A minha loja»)
  • reCAPTCHA type, v2 (caixa de verificação «I'm not a robot»)
  • Domains, o domínio da sua loja sem https://

Clique em Submit e o sistema fornecer-lhe-á uma Site Key e uma Secret Key.

Passo 3: Configuração do plugin

Copie as chaves e cole-as nos campos do plugin: Settings → reCAPTCHA WooCommerce.

Desça até à secção WooCommerce Forms. Marque a caixa WooCommerce Checkout (e Login/Register se quiser proteger o início de sessão).

Guarde as alterações.

Passo 4: Verificação

Na mesma página de configurações existe um botão Test API Response. Clique nele e, se as chaves estiverem corretas, verá um estado verde.

Pronto. Agora aparecerá um captcha na página de finalização da compra, antes do botão «Place order». Teste em modo de navegação anónima; a verificação de bot deverá surgir.

Método 2: CAPTCHA via código (sem plugins extra)

Se não quiser instalar outro plugin, aqui está um snippet que adiciona o reCAPTCHA à finalização da compra através do functions.php.

Passo 1: Preparação

Antes de editar qualquer código, faça uma cópia de segurança completa do site. Vamos editar o ficheiro functions.php do seu tema filho ou usar o plugin Code Snippets, que é mais seguro: um erro de código não derruba o site, o snippet é simplesmente desativado.

Passo 2: O código

Abaixo estão duas funções PHP. A primeira exibe o widget reCAPTCHA no checkout, a segunda verifica a resposta do Google quando a encomenda é submetida.

1/**
2 * Display reCAPTCHA on the WooCommerce checkout page
3 */
4function doublee_show_me_the_checkout_captcha($checkout) {
5 echo '<div class="g-recaptcha" data-sitekey="YOUR_SITE_KEY"></div>';
6}
7add_action('woocommerce_checkout_order_review', 'doublee_show_me_the_checkout_captcha', 18);
8
9/**
10 * Verify reCAPTCHA response during checkout
11 */
12function doublee_process_recaptcha() {
13 $postdata = $_POST['g-recaptcha-response'];
14 $verified_recaptcha = file_get_contents(
15 'https://www.google.com/recaptcha/api/siteverify?secret=YOUR_SECRET_KEY&response=' . $postdata
16 );
17 $response = json_decode($verified_recaptcha);
18 if (!$response->success) {
19 wc_add_notice('Please verify that you are not a robot', 'error');
20 }
21}
22add_action('woocommerce_checkout_process', 'doublee_process_recaptcha');

O que está a acontecer aqui:

  • woocommerce_checkout_order_review, um hook que é acionado quando o bloco da encomenda é renderizado no checkout. Ligamo-nos a ele para produzir um <div> com um atributo data-sitekey (essa é a Site Key da consola do Google).
  • woocommerce_checkout_process, um hook de validação que é acionado na submissão da encomenda. A função envia a resposta do captcha para o servidor do Google através do endpoint siteverify, descodifica o JSON e, se a verificação falhar, adiciona um erro usando wc_add_notice(), o mecanismo padrão do WooCommerce.
  • Se allow_url_fopen estiver desativado no seu alojamento (a função file_get_contents não funcionará para URLs), substitua-a por wp_remote_get(), que funciona via cURL e não depende do php.ini.

Passo 3: Inserir e testar

Adicione o código através do Code Snippets ou no functions.php do seu tema filho e guarde.

Depois de guardar, visite a página de checkout em modo anónimo, o widget reCAPTCHA deverá aparecer. Tente submeter uma encomenda sem marcar a caixa: receberá um erro «Por favor, verifique que não é um robot».

Bónus: CAPTCHA na página de login

O checkout não é o único ponto sensível. Os ataques de força bruta ao /wp-login.php e ao /my-account/ ocorrem 24 horas por dia, mesmo em lojas pequenas. O mesmo plugin reCAPTCHA for WooCommerce protege o formulário de login em poucos cliques.

Vá a Settings → reCAPTCHA WooCommerce, à secção WooCommerce Forms, e ative Login:

Guarde e o /my-account/ fica protegido. Se também precisar de proteger o /wp-login.php, este mesmo plugin suporta formulários do WordPress: a mesma lógica, basta marcar WordPress Login Form.

Problemas típicos e como resolvê-los

  • O CAPTCHA não aparece no checkout. Verifique as suas chaves: a Site Key e a Secret Key têm de ser da v2 (caixa de verificação «I'm not a robot»), não da v3. Se a versão não corresponder, o widget simplesmente não será renderizado.
  • O CAPTCHA aparece duas vezes. Muito provavelmente, tem dois plugins de reCAPTCHA ativos ao mesmo tempo (por exemplo, um no tema, outro instalado separadamente). Desative o duplicado.
  • Erro "Invalid key" durante o teste da API. Ou um erro de digitação ao copiar as chaves, ou as chaves foram criadas para um domínio diferente. Recrie as chaves e verifique o domínio na consola do Google.
  • Conflito com um template de checkout personalizado. Mude para o tema padrão (Storefront) e verifique: se o CAPTCHA aparecer, o problema está nos hooks do seu tema. Solução: um hook personalizado em código (Método 2) vinculado ao seu template.
  • O checkout não carrega depois de ativar o CAPTCHA. Limpe a cache (plugin + navegador), desative a minificação de JS durante o teste; os conflitos são mais frequentemente causados por otimização agressiva de scripts.
  • Os clientes queixam-se de que o CAPTCHA rejeita pessoas reais. Reduza a sensibilidade nas definições do reCAPTCHA ou mude para a v2 Checkbox; é mais tolerante do que a v3 e não bloqueia com base num modelo comportamental «suspeito».

⁉️🤔 Perguntas frequentes

O CAPTCHA é necessário no checkout se já tiver um plugin antispam instalado?

Plugins antispam como o Akismet protegem comentários e formulários de contacto, mas não o checkout do WooCommerce. Os bots que fazem encomendas falsas contornam os filtros padrão; não precisam de campos de comentários, preenchem o próprio formulário de encomenda. O CAPTCHA fecha esta lacuna.

Que versão do reCAPTCHA devo escolher, v2 ou v3?

Para uma loja, recomendamos a v2 Checkbox: o visitante marca uma caixa e a encomenda segue. A v3 funciona em segundo plano e pode bloquear um cliente real se o seu modelo comportamental parecer «suspeito» ao sistema, e no checkout cada cliente conta.

Posso proteger apenas o checkout de convidado com CAPTCHA e deixar passar os utilizadores com sessão iniciada?

Sim. No plugin reCAPTCHA for WooCommerce, a caixa de verificação WooCommerce Checkout ativa o CAPTCHA para todos. Para deixar passar os utilizadores autenticados, terá de adicionar uma condição em código (Método 2): envolva o hook em if (!is_user_logged_in()). Sem código, apenas com plugins que tenham lógica condicional, como o Advanced Google reCAPTCHA PRO.

O CAPTCHA afeta a velocidade de carregamento do checkout?

De forma notória, não. O script do reCAPTCHA carrega de forma assíncrona e apenas nas páginas onde o formulário é realmente apresentado. Sem carga extra em todo o site. Na prática, a diferença na velocidade do checkout antes e depois situa-se nos 100-200 ms.

Resumo

Adicionar CAPTCHA ao checkout do WooCommerce é uma tarefa de 15 minutos, e o efeito é limpo. Sem encomendas de spam, sem limpeza manual da base de dados, sem bots no funil.

Se não quiser instalar plugins extra, use o segundo método com código. Adiciona exatamente duas funções ao functions.php e não requer atualizações. Se preferir uma abordagem «configure e esqueça», reCAPTCHA for WooCommerce: gratuito, 40 mil instalações, atualizações automáticas e suporte para Block Checkout de raiz.

Verifique se o CAPTCHA funciona em todos os dispositivos: abra o checkout num telemóvel e num computador em modo anónimo. Se o widget se deslocar no mobile, ajuste o contentor CSS ou mude o tamanho do widget para Compact na consola do Google reCAPTCHA. Cinco minutos de testes agora pouparão horas a limpar encomendas de spam mais tarde.