Coloque o Facebook / Twitter na lista de permissões para testar suas implementações Open Graph e Twitter Card

Qual é o problema?

Ao desenvolver um site com integração com o Facebook ou Twitter, você chega ao momento em que implantou seu site no servidor com seu domínio final, mas não quer que seu site seja aberto ao público. Então você bloqueia o acesso a ele, mas precisa testar a integração do Facebook com og-tags.

Etapa 1: bloquear convidados indesejados

Sua primeira etapa para tornar a página privada talvez seja bloquear o endereço IP no vhostou .htaccessassim:

order deny,allow
deny
from all
allow
from 192.168.0.1
allow
from 10.0.0.1

Mas isso leva a um problema, em que você precisa ter uma lista precisa de endereços IP de cada cliente que deve ver esta página. Com um grande cliente, isso aumenta rapidamente.

Portanto, é melhor permitir também a autenticação básica :
AuthUserFile /path/to/.htpasswd AuthName "Restricted Access" AuthType Basic require user [username] satisfy any deny from all allow from 192.168.0.1 allow from 10.0.0.1

Isso solicita uma senha de cada cliente que não possui este endereço IP.

Passo 2: Abra a porta para o Facebook / Twitter

Existem 2 métodos para dar acesso ao rastreador do Facebook, conforme descrito aqui pelo Facebook.

Método 1: sustentável, mas inseguro

Se você não tem esse tipo de grande notícia que precisa ser mantida em segredo até que o site seja tornado público, então colocar os agentes de usuários na lista de permissões é a opção certa para você.

Existem atualmente 3 User-Agents, que o scraper do Facebook usa: Twitter usa apenas um
facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)
facebookexternalhit
Facebot

Twitterbot

Você pode colocar esse user-agents na lista de permissões, mas esteja ciente de que você pode falsificar o user-agent com quase todos os navegadores.

De qualquer forma, aqui está o código para colocar o user-agent na lista de permissões:

SetEnvIfNoCase User-Agent "^facebookexternalhit" facebook
SetEnvIfNoCase User-Agent "Facebot" facebook
SetEnvIfNoCase User-Agent "Twitterbot" twitter
AuthUserFile /path/to/.htpasswd
AuthName "Restricted Access"
AuthType Basic
require user [username]
satisfy any

deny
from all
allow
from 192.168.0.1
allow
from 10.0.0.1
allow
from env=facebook
allow
from env=twitter

você define uma env-variable Facebookcaso o user agent corresponda a um dos user-agents do Facebook e permite o acesso a esta env-variable. O mesmo vale para o Twitter.

Método 2: lista de permissões de IPs raspadores

Este método é mais seguro, porque falsificar o endereço IP é muito mais difícil.

Aqui você só precisa obter a lista atual de endereços IP do rastreador do Facebook, usando o seguinte comando:

whois -h whois.radb.net -- '-i origin AS32934' | grep ^route  

então você adiciona uma entrada para cada endereço IP retornado.allow from ...

Twitters ASNUMé AS13414assim que a solicitação para obter seus endereços é

whois -h whois.radb.net -- '-i origin AS13414' | grep ^route

embora o Twitter indique aqui que atualmente eles usam apenas estes endereços:

199.59.148.209 
199.59.148.210
199.59.148.211
199.16.156.124
199.16.156.125
199.16.156.126

Mas esteja ciente de que esses endereços podem mudar com frequência.