Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Israel Elias

Como acabar com as visitas fantasmas no meu Contador de visitas

Recommended Posts

Ola pessoal

Fiz um Contador de visitas em php, ele pega o ip e a data do visitante, depois ele verifica se o ip do visitante já existi no banco de dados e faz uma comparação com a data atual se ultrapassa o prazo de 24 horas

 

até ai tudo bem!

 

Agora, se um visitante veio do facebook até ao meu site através de um link(compartilhado, links comentado no perfil e entre outros do facebook)

o meu contador de visitas marca 2 ou até mais visitas desta única visita que veio do link através do facebook, por que isso?

como faço um script, para que isso não aconteça!

 

o script do meu contado de visitas!

 

 

$ip = $_SERVER['REMOTE_ADDR'];
$sql = "select * from visitas where ip = '$ip' and DATE_SUB(NOW(),INTERVAL 1 DAY) > data_da_visita";
$executa = mysql_query($sql);
if($regx = mysql_fetch_array($executa)){
		$sql = "update visitas set ip = '$ip', data = NOW() where id='".$regx['id']."'";
		$resun2 = mysql_query($sql);
}else{
		$sql = "INSERT INTO visitas(ip, data) VALUES ('$ip',NOW())";
		$resun = mysql_query($sql);
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando você compartilha uma página no Facebook o robô (crawler) dele faz a leitura da página para coletar informações da mesma.

 

Por isso está marcando duas visitas, a visita do robô do Facebook mais a visita do usuário.

 

Para resolver isso você pode verificar o user-agent que está acessando a sua página, se for o robô do Facebook você não incrementa nenhuma visita.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como verificar se é um robô usando o user-agent?

me de um exemplo!

 

modifique de ip para cookie.

 

imagine quantos bots existem no mundo todo.

 

você teria que colocar condições para milhares de bots.. inviável

 

além do mais, ao verificar pelo ip pode estar negando acessos de visitantes legítimos que estejam usando o mesmo ip (numa mesma rede compartilhada)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, eu fiz uma pesquisa no Google e descobri que o user-agent usado pelo robô do Facebook é o seguinte:

 

facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)

 

Para pegar o user-agent no PHP você usa:

 

$_SERVER['HTTP_USER_AGENT']

 

Agora é com você. Você pode usar a função strpos ou então preg_match pra fazer esta verificação. thumbsup.gif

 

Um abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Concordo que existem muitos robôs na internet, mas ninguém disse que precisa bloquear todos e sim o que está gerando problema, no caso o do Facebook. Como ele falou que o problema era especificamente com o Facebook eu sugeri criar uma condição para não contabilizar os acessos do robô do Facebook.

 

O uso de cookies eu particularmente não acho que seja uma boa opção. Primeiro que o usuário pode estar com os cookies desabilitados no navegador, segundo que é facilmente burlável, e como isso impediria o acesso de robôs? Muitos robôs também aceitam cookies.

 

Se precisar de um sistema de visitas mais "confiável", que contabilize apenas acessos legítimos (de reais visitantes e não de robôs), você pode usar AJAX, chamando um segundo arquivo que fará essa contagem e registrará no banco de dados (semelhante ao Google Analytics). Eu criei um sistema assim pra um site meu com um grande volume de acessos e funciona muito bem. A maioria dos robôs estão interessados apenas na leitura do conteúdo HTML do seu site, ignorando arquivos chamados via AJAX por exemplo. Além disso podem ser usados tokens e validações extras, que aumentam ainda mais a legitimidade das visitas. Mas isso é claro tem um custo, você terá requisições extras no servidor.

 

Precisa dar uma avaliada em qual é a melhor solução pro seu caso. :thumbsup:

 

1. Sem cookies ativados não conseguirá navegar em "lugar algum".

Usuário que desativa cookie é usuário técnico e faz isso para algo bem específico (developers, lammers, etc).

 

 

2. O intuito é não contabilizar visitas duplicadas num mesmo dia de um mesmo usuário, certo ?

Uma vez gravando num cookie o dia e horário que entrou, se entrar novamente no mesmo dia basta identificar o cookie. Se for o mesmo dia, não contabiliza. Isso evitará a contagem duplicada.

Google Analytics usa isso em conjunto também com IP, porém, dando maior prioridade ao cookie.

 

Se bloquear acesso duplicado por IP, além do que já comentei há outro ponto.

 

Vamos supor que eu esteja com notebook ou um tablet num shopping.

Acesso o site que registrará o meu IP (ip do hot-spot do shopping) e contabilizará uma visita.

Todos os outros dentro do shoppnig que se conectarem pelo hot-spot e entrarem no site, serão negados na contagem.

 

Eu saio do shopping e vou para um supermercado onde também tem um hot-spot, portanto, outro IP, mas eu sou o mesmo que acessou no shopping.

Mas como o sistema verifica somente o IP, o que vai acontecer?

Vai aceitar e registrar +1 e bloquear o IP (isso se outro já não acessou antes nesse mesmo dia).

Outros que entrarem não serão contabilizados.

 

Bloqueando por IP deixará de contabilizar usuários legítimos e leigos (não técnicos) que representam mais de 90%

Compartilhar este post


Link para o post
Compartilhar em outros sites

valew pessoal

eu falei só do facebook para ser mais especifico na minha duvida!

 

mas isso só fez abre mais a minha mente

 

no caso de verificar se é um robô, posso verificar se um visitante está vindo um browser.

tipo eu vi aqui se um visitante estiver usando internet explore o 'HTTP_USER_AGENT' informa se ele está usando o internet explore,

poderei então fazer uma verificação de todos os browser que existem, assim não verificando os milhares de robôs existentes por ai.

 

sobre os cookies, eu posso verificar o cookies e o ip em um conjunto. Pois se um visitante fazer a visita de browsers diferentes, no mesmo computador vai dar duas visitas!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.