Filtro de Página
Quem for aprovado vê a página real, quem for reprovado vê a isca, e os dois no mesmo endereço. Leva cerca de 30 minutos, mais o tempo do certificado.
A página real não é configurada em lugar nenhum — a borda busca na origem o mesmo caminho que o visitante pediu. Só a isca é um destino fixo, e é a única página que você aponta.
Na sua hospedagem, crie um subdomínio origem apontando para a mesma pasta do site que já existe — não deixe criar pasta nova. Na Hostinger: Domínios → Subdomínios, marcando “Usar diretório public_html”.
Depois de criar, abra origem.seudominio.com no navegador. Tem que aparecer o seu site normalmente.
Se a hospedagem criar o subdomínio como ALIAS ou CNAME, ele pode arrastar endereços IPv6 que não respondem. O sintoma engana: o site funciona, mas cada visita leva 20 segundos. Prefira um registro A apontando direto para o IP do seu plano.
Só se o site for WordPress. Ele guarda o próprio endereço no banco e monta todos os links a partir dele — sem este ajuste a página abre pelo domínio público, mas o código-fonte entrega o endereço da origem.
No wp-config.php, logo acima da linha /* That's all, stop editing! */:
$guard_host = $_SERVER['HTTP_X_GUARD_HOST'] ?? '';
if ($guard_host && preg_match('/^[a-z0-9.-]+$/i', $guard_host)) {
$_SERVER['HTTP_HOST'] = $guard_host;
define('WP_HOME', 'https://' . $guard_host);
define('WP_SITEURL', 'https://' . $guard_host);
define('DISABLE_WP_CRON', true);
}O DISABLE_WP_CRON não é opcional. Sem ele o WordPress chama a si mesmo através da borda a cada visita — a requisição sai da hospedagem, dá a volta pela nossa borda e volta, com o PHP esperando o ciclo inteiro. São 20 segundos por visita, e nada acusa erro: o site simplesmente fica lento demais para vender.
Repare que ele está dentro do if. Assim o cron só é desligado nas visitas que chegam pela borda, e as tarefas agendadas do seu site principal continuam rodando.
Este ajuste conserta os links que o WordPress monta na hora (tema, plugins, menu). Mas o que você já inseriu pelo construtor — principalmente imagens — fica com o endereço da origem gravado no conteúdo, porque foi salvo quando você editava direto no domínio da origem. Este código não reescreve o que já está gravado.
Não precisa caçar essas URLs nem rodar "search-replace": a regra 0 do .htaccess (passo 5) deixa arquivo estático (imagem, css, js) passar sempre, então essas imagens carregam normal para o visitante — o HTML da oferta continua trancado. Se as imagens somem na aba anônima mas aparecem na logada, é sinal de que falta a regra 0 no seu lock.
No StegoAudio, aba Filtro de Página, crie um site novo:
| Campo | O que preencher |
|---|---|
| Nome | Só para você identificar |
| Domínios públicos | promo.seudominio.com |
| Onde o conteúdo real fica | origem.seudominio.com |
| Página isca | /paginaisca/ — só o caminho, com barra no começo |
O WordPress usa barra no final dos endereços. Escrevendo /paginaisca sem ela, a origem responde um redirecionamento a cada visita reprovada — e quando ele falha, o visitante recebe a página padrão em vez da sua isca.
Depois de salvar, o painel mostra o bloco Domínios na borda com os registros a criar. Copie os valores daquela tela, naquele momento — eles mudam toda vez que o domínio é registrado de novo.
| Tipo | Nome | Valor | TTL |
|---|---|---|---|
CNAME | promo | o endereço da borda que o painel mostra | 300 |
TXT | _acme-challenge.promo | um registro para cada valor que o painel listar | 300 |
Crie exatamente os TXT que o painel listar — pode ser um, podem ser dois. Quando são dois, eles têm o mesmo nome e conteúdos diferentes, um para cada tipo de certificado: não é engano nem duplicata, e criando só um o certificado fica pendente para sempre, sem nenhuma mensagem de erro. O painel diz o número na frente, e numera cada registro.
O segundo pode aparecer depois do primeiro. Vale clicar em Atualizar estado quando terminar de criar, e conferir se a lista cresceu.
Use TTL 300 desde o começo. Os provedores sugerem 14400, que são 4 horas — e se você precisar corrigir um valor depois, o antigo fica preso nesse tempo em servidores do mundo inteiro. É o erro que mais custa tempo nesta instalação.
Se o nome promo já tiver registros A ou AAAA, apague antes: um CNAME não pode conviver com eles. Se o subdomínio existir na hospedagem, remova lá também, senão ela recria os registros.
O painel passa a mostrar ATIVO em poucos minutos. O certificado sai em seguida.
Este passo é o que faz o filtro valer alguma coisa. Sem ele, qualquer um digita o endereço e vê a página real — e nada do resto importa.
Pegue o segredo do site no painel (botão de copiar, no cadastro) e coloque no .htaccess da pasta do site, antes da linha # BEGIN WordPress:
RewriteEngine On
# 0. Arquivos estáticos passam sempre (imagem/css/js/fonte não são o segredo;
# travá-los quebra as imagens da página pro visitante anônimo).
RewriteRule \.(jpe?g|png|gif|webp|avif|svg|ico|css|js|mjs|woff2?|ttf|eot|mp4|webm|map)$ - [L]
# 1. Fora estáticos, só a borda (com o segredo) ou o admin logado passam —
# em QUALQUER endereço (raiz, www, origem, apex).
RewriteCond %{REQUEST_URI} !^/(wp-login\.php|wp-admin) [NC]
RewriteCond %{HTTP_COOKIE} !wordpress_logged_in [NC]
RewriteCond %{HTTP:x-guard-auth} !^SEU_SEGREDO_AQUI$
RewriteRule ^ - [F,L]
# 2. Nenhum CDN guarda a oferta (só o HTML; imagem pode cachear normal).
<IfModule mod_headers.c>
SetEnvIf Host ^origem\.seudominio\.com$ PELA_BORDA=1
Header always set Cache-Control "private, no-store" env=PELA_BORDA
</IfModule>Só há dois lugares para trocar: o SEU_SEGREDO_AQUI pelo segredo do painel, e o origem.seudominio.com (na regra 2) pelo seu endereço de origem. Nenhuma lista de páginas para manter.
Repare que ela não tem condição de endereço nem lista de páginas. É de propósito.
Se você trancasse só os nomes das páginas de oferta, teria que lembrar de acrescentar cada oferta nova na regra — e toda página esquecida nasce aberta, com o sitemap do WordPress entregando o nome de graça. Trancando tudo, a oferta some de todos os endereços (raiz, www, origem, apex, e qualquer página futura), sem manutenção. Só a borda, com o segredo, entra.
A regra 1 tranca tudo. Sem as três exceções, você bloqueia a si mesmo: !wordpress_logged_indeixa passar quem já entrou (o editor carrega a página numa pré-visualização que não passa pela borda, e o Elementor travaria em "carregando"); !^/(wp-login|wp-admin) deixa a tela de login e o painel abrirem — sem ela você toma 403 antes mesmo de logar, já que aí ainda não existe cookie. Nenhuma abre brecha na oferta: o cookie só nasce depois do login com senha, e o wp-admin não é página de venda. E a regra 0 deixa as imagens passarem — sem ela, elas somem na aba anônima.
O Testar antes de subir abre origem.seudominio.com/ (a raiz) sem o cabeçalho e espera 403. Como a regra 1 tranca tudo em qualquer endereço, a raiz já responde 403 e o teste passa — sem nada de especial a configurar.
Como a regra tranca tudo, qualquer oferta ou página de teste que você criar depois já entra trancada — sem precisar voltar aqui para acrescentar nome nenhum. Uma preocupação a menos.
O Cache-Control (regra 2) resolve a última parte: sem ele, um CDN no caminho pode guardar a resposta já aprovada e servir para todo mundo. O vazamento aconteceria antes da borda, então ela não teria como impedir.
No painel do site, clique em Conferir instalação. Ele roda sete checagens — todas de coisas que, quando estão erradas, não geram mensagem de erro nenhuma:
Com a regra “só quem vem de anúncio” ligada, abra os dois endereços no seu próprio navegador:
https://promo.seudominio.com/paginareal/?gclid=teste → página real
https://promo.seudominio.com/paginareal/ → página iscaMesmo endereço, e a barra continua mostrando /paginareal/ nos dois casos. É proxy, não redirecionamento — quem foi reprovado não tem como perceber que foi filtrado, e o robô de revisão não vê o destino do anúncio mandando para outro lugar.
Presell é a página branca de transição entre o anúncio e a oferta: anúncio → presell → oferta. É ela que o moderador vê quando inspeciona o anúncio, então mantenha-a "white" — sem o conteúdo da oferta nela.
A chave não vai no anúncio: o anúncio aponta para a presell, sem chave. A chave vai no botão da presell que leva à oferta:
https://promo.seudominio.com/paginareal/?k=SUA_CHAVESó que aí o gclid/fbclid do anúncio fica na presell e some no salto para a oferta — e a trava “só quem vem de anúncio”reprovaria o comprador real. Este script na presell repassa esses parâmetros para o botão (troque o domínio pelo seu de oferta):
<script>
(function () {
var qs = new URLSearchParams(location.search)
if (![...qs].length) return
document.querySelectorAll('a[href]').forEach(function (a) {
try {
var u = new URL(a.href, location.href)
if (u.hostname !== 'promo.seudominio.com') return // seu domínio de oferta
qs.forEach(function (v, k) { if (!u.searchParams.has(k)) u.searchParams.set(k, v) })
a.href = u.toString()
} catch (e) {}
})
})()
</script>Quem acha sua presell num spy lê a chave no código do botão, e o gclid é só um parâmetro (dá para forjar colando ?k=chave&gclid=qualquercoisa). Então essas duas travas filtram origem de tráfego, não seguram um humano determinado. Quem realmente barra o moderador e o concorrente é o que ele não controla: as travas de país, proxy/VPN e robô/datacenter. Mantenha essas ligadas — são elas o muro. A presell ainda soma uma camada (o revisor vê a branca).
Todos os itens abaixo aconteceram numa instalação real. O que eles têm em comum é não produzirem erro visível — o site funciona, e o problema aparece como outra coisa.
wp-cron do WordPress chamando o próprio site pela borda. Passo 2, DISABLE_WP_CRON. A sexta checagem do verificador acusa isso./paginaisca por /paginaisca/.@) ainda existe. Ele é fácil de apagar sem querer no meio das mudanças, e o sintoma é específico: o endereço com www continua funcionando e o sem www não..htaccess está trancando só a origem. Falta a regra 1 do passo 5, a que não tem condição de endereço — é ela que faz a oferta sumir do domínio raiz, do www e de qualquer subdomínio.wordpress_logged_in: o editor carrega a página numa pré-visualização que não passa pela borda, e sem a exceção ela leva 403 como qualquer visitante.RewriteRule \.(jpe?g|png|...)$ - [L] logo depois de RewriteEngine On. O HTML da oferta continua trancado — só os arquivos passam./wp-admin depois de trancar a origem!^/(wp-login\.php|wp-admin) (senão a tela de login nem abre — antes de logar não há cookie) e !wordpress_logged_in (para seguir logado). Elas já estão no bloco do passo 5 acima.