Ao vivo · status OK
OW Consent · v1.4.3 · GPL-2.0-or-later

O consentimento WordPress
que bloqueia antes do clique.

O OW Consent neutraliza os rastreadores no HTML antes de o visitante escolher, aplica o regime legal da jurisdição dele e inscreve cada decisão num registo encadeado que podes verificar. Onze perfis de conformidade, nove regimes nomeados — do RGPD à CCPA. Gratuito, GPL, sem versão Pro.

v1.4.3GPL-2.0-or-laterWordPress 6.2+PHP 7.4+
Porquê

Porquê mais um plugin de consentimento?

O banner nunca foi o problema. Quase todos os sites têm um, e os rastreadores arrancam na mesma logo ao primeiro byte: o script do Analytics está escrito à mão no tema, o pixel publicitário corre a partir do rodapé, o iframe do YouTube deposita os cookies dele enquanto o banner aparece por cima. O clique em «Aceitar tudo» já não autoriza nada — limita-se a ratificar o que aconteceu antes.

A segunda armadilha é a cache. Assim que um plugin decide o HTML a partir do cookie do visitante, torna-se incompatível com uma cache de página — ou, pior, serve as escolhas de um visitante a outro. A terceira é a prova: o artigo 7.º, n.º 1 exige demonstrar o consentimento, e uma caixa assinalada algures na base de dados não demonstra coisa nenhuma.

O OW Consent parte destas três restrições. A marcação servida é idêntica para toda a gente, rastreadores neutralizados incluídos, e é o browser que liberta aquilo que o visitante autorizou. Cada decisão é acrescentada a uma cadeia de hashes assinada. E o regime aplicado — opt-in ou opt-out, link «Do Not Sell», sinal GPC vinculativo ou não — segue a jurisdição, não uma caixa marcada por defeito.

Um banner que chega depois dos rastreadores

No modo estrito, ativo por defeito, o documento é reescrito à saída: scripts neutralizados em text/plain, iframes passadas para about:blank atrás de um cartão clicável, pixels substituídos por um GIF transparente, sugestões de ligação removidas. O visitante que nunca clica nunca carrega estes recursos.

A cache de página contra o consentimento

Nada no caminho de renderização lê o cookie. O estado do visitante é reconstruído no browser e colocado na etiqueta html antes da primeira pintura. LiteSpeed, WP Rocket, Varnish ou um CDN podem guardar a página em cache sem nunca misturar dois visitantes.

Uma prova que não se consegue apresentar

Cada evento entra numa tabela encadeada, cada linha assinada em HMAC com o hash da anterior, e a âncora de cabeça guardada fora da tabela. E se o registo recusar escrever, a API responde 503, anula o cookie e não liberta rastreador nenhum: um consentimento que o site não consegue provar é um consentimento que não reivindica.

Por baixo do capot

O que muda concretamente

Sem slogans. Eis as decisões técnicas que distinguem este produto.

Os rastreadores são bloqueados na própria marcação

No modo estrito — ativo por defeito — o documento inteiro é capturado à saída e reescrito em cinco passagens: os scripts passam a type text/plain com o URL guardado em data-owc-src, as iframes vão para about:blank atrás de um cartão «Aceitar» com o nome do fornecedor, os pixels de medição são substituídos por um GIF 1×1 transparente, os preconnect e dns-prefetch são removidos (uma simples sugestão já abre uma ligação TLS e entrega o IP), e os media de terceiros já catalogados perdem o autoplay. O catálogo incluído tem 175 assinaturas para 71 fornecedores, e podes acrescentar, corrigir ou apagar regras a partir do backoffice. Por defeito, um script de terceiros desconhecido passa; uma iframe desconhecida é bloqueada.

Feito para correr atrás de uma cache de página

Nada do que o servidor produz depende do cookie do visitante: as mesmas etiquetas neutralizadas são servidas a toda a gente, e o runtime restaura-as no browser, pela ordem do documento, apenas para as categorias autorizadas. O estado é carimbado na etiqueta html antes da primeira pintura, por isso não há banner a piscar. O token de escrita é obtido de fresco antes de cada envio, nunca embutido em HTML guardado em cache: a obtenção tem um teto de 4 segundos e a ausência dele nunca bloqueia uma escolha.

Onze perfis de conformidade, nove regimes nomeados

RGPD, UK PECR, nLPD suíça, Lei 25 do Quebec, LGPD, CCPA, POPIA, PIPL, DPDP indiana, mais um perfil australiano e um perfil norte-americano genérico. O perfil não é decorativo: decide o modelo legal (opt-in, ou concedido até à recusa para a CCPA, o perfil norte-americano genérico e a Austrália), a presença do link «Do Not Sell or Share» — um clique executa mesmo o opt-out, não abre um painel —, o carácter vinculativo ou não do sinal Global Privacy Control, e tanto a língua como a autoridade de controlo citadas nos documentos gerados. A deteção por país existe, desativada por defeito.

Um registo de consentimento que podes verificar

Cada aceitação, recusa, alteração ou retirada entra numa tabela dedicada: linha assinada em HMAC-SHA-256 (ou SHA3-256) com o hash da anterior, âncora de cabeça guardada fora da tabela para que um truncamento fique à vista. Ficam inscritos um token de browser pseudónimo, o IP truncado, um hash do user-agent, a página, o perfil em vigor, a revisão exata do banner mostrado e o hash das políticas ligadas — nunca um nome nem uma morada. Um botão verifica toda a cadeia e diz onde ela quebra; a exportação CSV ou JSON leva um envelope que permite a um terceiro voltar a verificar um extrato. Retenção por defeito: 5 anos.

Scanner do site e catálogo editável

Vem desativado, para ativares quando quiseres: o scanner percorre as tuas próprias páginas via WP-Cron (25 URL por defeito, ajustável até 500), alternando entre página inicial, páginas, artigos, tipos de conteúdo e taxonomias. Três fontes distintas e rastreadas: o HTML servido, os cabeçalhos Set-Cookie — os únicos cookies que um varrimento do servidor consegue provar, e os únicos que nada consegue bloquear — e uma sonda na página reservada aos administradores com sessão iniciada, que apanha o que um gestor de tags injeta em runtime. Uma deteção transforma-se em regra de catálogo com um clique. E o relatório diz o que não conseguiu ler, em vez de fazer passar um varrimento parcial por um inventário.

Documentos legais e portal de pedidos

Quatro documentos gerados como páginas WordPress versionadas — política de cookies, política de privacidade, aviso legal, termos e condições — na língua da jurisdição (francês, inglês, português), com a autoridade de controlo e a tabela de rastreadores saída do varrimento. A publicação é recusada enquanto houver um campo legalmente obrigatório por preencher, e cada documento leva um aviso a lembrar que deve ser revisto. Do lado dos direitos, o shortcode owc_dsar_form abre sete tipos de pedidos, verificados por uma ida e volta por e-mail; o prazo do artigo 12.º, n.º 3 começa a contar na confirmação de identidade, e o pedido abre em paralelo um pedido nativo do WordPress para que a exportação ou o apagamento cubram todos os plugins do site.

Comparação

Face às alternativas

Dados verificáveis. Marcar apenas o que existe realmente na concorrência.

CritérioOW ConsentComplianzCookieYesBorlabs Cookie
Modelo de negócioGratuito, GPL-2.0-or-laterFreemium (Pro pago)Freemium (Pro pago)Não anunciado
Chave de licença a ativarNenhumaPara a versão ProPara a versão ProNão anunciado
Método de bloqueio dos rastreadoresReescrita do HTML no servidor, 175 assinaturas incluídas e editáveisNão anunciadoNão anunciadoNão anunciado
Registo de provas encadeado e verificávelCadeia HMAC-SHA-256, âncora fora da tabela, verificação num cliqueNão anunciadoNão anunciadoNão anunciado
Perfis de conformidade incluídos11 perfis, 9 regimes nomeadosNão anunciadoNão anunciadoNão anunciado
Banner de consentimento configurável4 posições, tema claro / escuro / automático
Portal de pedidos de exercício de direitosIncluído: formulário, verificação por e-mail, prazo do art. 12.º, n.º 3Não anunciadoNão anunciadoNão anunciado
Onde ficam os consentimentos registadosNa base de dados do teu alojamento, sem serviços de terceirosNão anunciadoNão anunciadoNão anunciado
Integração

Três formas de integrar um formulário

Sem page builder proprietário imposto. Escolha a abordagem que se adequa ao seu stack.

<!-- O que o teu tema imprime -->
<script src="https://www.googletagmanager.com/gtag/js?id=G-XXXXXXXXXX"></script>
<iframe src="https://www.youtube.com/embed/VIDEO_ID"></iframe>

<!-- O que o visitante recebe antes de qualquer consentimento (modo estrito, por defeito) -->
<script type="text/plain"
        data-owc-cat="analytics"
        data-owc-vendor="Google"
        data-owc-src="https://www.googletagmanager.com/gtag/js?id=G-XXXXXXXXXX"></script>

<span class="owc-embed-placeholder" data-owc-cat="social" data-owc-vendor="Google">
  <span class="owc-embed-text">Google content blocked: this content uses cookies…</span>
  <button type="button" class="owc-embed-accept" data-owc-cat="social">Accept Google</button>
  <iframe data-owc-cat="social"
          data-owc-src="https://www.youtube.com/embed/VIDEO_ID"
          src="about:blank"></iframe>
</span>

<!-- Esta marcação é a mesma para toda a gente, cache de página incluída.
     É o runtime, no browser, que restaura as etiquetas das categorias
     autorizadas, pela ordem do documento. Uma retirada de consentimento
     recarrega a página: um script já executado não se descarrega. -->
Perguntas técnicas

Dúvidas razoáveis, respostas diretas

Os rastreadores são mesmo bloqueados antes do consentimento?

Sim, e o bloqueio vive na marcação, não numa promessa. No modo estrito, ativo por defeito, o documento é capturado à saída e cinco passagens reescrevem scripts, iframes, pixels, sugestões de ligação e media de terceiros. Duas limitações que deves conhecer: o bloqueio real assenta no catálogo de 175 assinaturas e nas assinaturas de código inline — um script de terceiros desconhecido é autorizado por defeito, uma iframe desconhecida é bloqueada —, e se desativares o modo estrito, só os scripts registados pelo WordPress são tratados, não os que estão escritos à mão no tema. Por fim, um documento com mais de 8 MB ou uma falha do motor de expressões regulares é servido intacto, em vez de partido.

É compatível com a minha cache de página?

Sim, foi essa a restrição de partida. O HTML servido é idêntico para todos os visitantes, rastreadores neutralizados incluídos, e o estado de consentimento é reconstruído no browser a partir do cookie e aplicado antes da primeira pintura. Nenhuma cache pode, portanto, servir as escolhas de um visitante a outro. A contrapartida é explícita: o regime do visitante é decidido do lado do cliente, logo, sem JavaScript nada fica registado. Um visitante sem JavaScript vê um bloco noscript, não carrega nada de não essencial, e nunca fica preso atrás de uma janela que não consegue fechar.

O que é que o perfil de conformidade muda, na prática?

Decide o modelo legal: opt-in para o RGPD, o UK PECR, a nLPD suíça, a Lei 25, a LGPD, a POPIA, a PIPL e a DPDP; concedido até à recusa para a CCPA, o perfil norte-americano genérico e a Austrália. Decide também se o link «Do Not Sell or Share» aparece (só CCPA e perfil norte-americano genérico), se o sinal GPC é vinculativo (os mesmos dois perfis: nos outros, o sinal é refletido no ecrã mas nada fica registado), e tanto a língua como a autoridade de controlo dos documentos gerados. A deteção por país é opcional e vem desativada; falha fechada, ou seja, para o regime mais estrito. Duas limitações assumidas: sem granularidade por estado norte-americano nem por província canadiana, e o ficheiro MaxMind não é descarregado nem carregável pelo plugin — és tu que o colocas em uploads/ow-geoip/.

O registo prova mesmo alguma coisa?

Prova tanto quanto a chave que o assina, e o plugin diz-to sem rodeios. Cada linha é assinada em HMAC com o hash da anterior e a âncora de cabeça é guardada fora da tabela, de modo que uma alteração, um truncamento ou um esvaziamento se veem na verificação. Mas se AUTH_KEY e AUTH_SALT não estiverem no teu wp-config.php e não tiveres definido OWC_LEDGER_KEY, a chave vem da base de dados: quem tenha acesso à base de dados pode voltar a assinar a cadeia. Nesse caso o plugin mostra um aviso no backoffice e reporta ele próprio que a cadeia já não está à prova de adulteração, em vez de continuar a afirmá-lo.

O módulo IAB TCF torna o meu site um CMP certificado?

Não, e é importante dizê-lo antes de o adotares, não depois. O módulo implementa o TCF v2.2 do lado do browser — API __tcfapi, string TC codificada, cookie euconsent-v2 — mas não fornece um CMP ID: esse é atribuído pelo IAB Europe após registo e, sem ele, o módulo não emite absolutamente nada. O perímetro também é limitado: apenas o segmento Core, nenhuma publisher restriction emitida, duas funcionalidades especiais suportadas, sem âmbito global. Na prática, funciona como um CMP compatível não oficial, o que chega para muitas integrações mas não substitui um registo oficial — a Google AdSense, em particular, recusa-o em produção no EEE. O módulo vem desativado por defeito.

O que acontece se desativar ou apagar o plugin?

Desativar não toca em dados nenhuns: limita-se a retirar as tarefas agendadas. Ao apagar, duas coisas vão-se sempre, seja qual for a tua definição: as tarefas agendadas e a tabela dos pedidos de exercício de direitos, a única que contém dados diretamente identificáveis de terceiros e que, uma vez o plugin fora, deixa de ter qualquer limite de retenção. O resto — registo de consentimento, deteções do scanner, catálogo de rastreadores — sobrevive, a não ser que tenhas assinalado explicitamente o apagamento completo, desmarcado por defeito: a tua prova de consentimento ao abrigo do artigo 7.º, n.º 1 não deve desaparecer com uma desinstalação.

Gratuito. Sem asterisco.

Sem versão Pro, sem chave de licença.

O OW Consent é publicado sob licença GPL-2.0-or-later. Tudo o que esta página descreve está no .zip que descarregas: nenhum módulo reservado, nenhuma subscrição, nenhum limite ao número de páginas, de consentimentos ou de pedidos.

  • Está tudo incluído: banner, bloqueio de rastreadores, scanner, catálogo editável, registo encadeado, gerador de documentos, portal de pedidos, Consent Mode v2, TCF v2.2 e Global Privacy Control.
  • O .zip descarrega-se em optionweb.dev: instala-o em Plugins → Adicionar novo → Carregar plugin. WordPress 6.2 no mínimo — abaixo disso, o plugin recusa arrancar e di-lo, em vez de mostrar um banner que não bloqueia nada.
  • Nenhum serviço de terceiros, nenhuma verificação de licença, nenhum rastreador acrescentado: consentimentos, pedidos e documentos ficam na base de dados do teu alojamento.
  • O código está sob GPL-2.0-or-later, legível e modificável, com os pontos de extensão documentados: filtros owc_settings, owc_scripts_catalog, owc_blocker_allowlist, owc_policy_template, e as ações do registo.
Concebido por Julien Daniel · Châtelet, Bélgica