Pergunta

Estou construindo estatísticas para meus usuários e não desejo as visitas de bots a ser contado.

Agora eu tenho um php básico com mysql aumentando 1 cada vez que a página é chamado.

Mas bots também são adicionados à contagem.

Alguém pode pensar em uma maneira?

Principalmente é apenas as mais importantes que baralhar as coisas. Google, Yahoo, MSN, etc.

Foi útil?

Solução

Você deve filtrar por cordas user-agent. Você pode encontrar uma lista de cerca de 300 agentes de usuário comuns dadas por bots aqui: http: //www.robotstxt. org / db.html Correndo por essa lista e ignorando bot user-agents antes de executar a instrução SQL deve resolver o seu problema para todos os efeitos práticos.

Se você não quer que os motores de busca para chegar até a página, use um básica robots.txt arquivo para bloqueá-los.

Outras dicas

Você pode verificar a seqüência User Agent, cadeias vazias, ou strings contendo 'robot', 'Aranha', 'rastreador', 'onda' são susceptíveis de ser robôs.

preg_match('/robot|spider|crawler|curl|^$/i', $_SERVER['HTTP_USER_AGENT']));

Nós temos um caso de uso semelhante a si mesmo, e uma opção que nós encontramos recentemente bastante útil é o classe UASParser de user-agent-string.info .

É uma classe PHP que puxa o último conjunto de definições seqüência do agente do usuário e armazena em cache-los localmente. A classe pode ser configurado para puxar as definições como frequentemente ou como raramente como você bem entenderem. Automaticamente buscá-los como este significa que você não tem que manter no topo das várias mudanças para agentes de usuário de bot ou novos chegando ao mercado, embora você está confiando em UAS.info fazer isso com precisão.

Quando a classe é chamado, ele analisa agente do usuário do visitante atual e retorna uma matriz associativa quebrando as partes constituintes, por exemplo.

Array
(
    [typ] => browser
    [ua_family] => Firefox
    [ua_name] => Firefox 3.0.8
    [ua_url] => http://www.mozilla.org/products/firefox/
    [ua_company] => Mozilla Foundation
    ........
    [os_company] => Microsoft Corporation.
    [os_company_url] => http://www.microsoft.com/
    [os_icon] => windowsxp.png
)

O typ campo é definido como browser quando a UA é identificado como provável pertencente a um visitante humano, caso em que você pode atualizar suas estatísticas.

par de advertências aqui:

  • Você está confiando em UAS.info para as cadeias de agente de usuário fornecidas sejam precisas e up-to-date
  • Bots como Google e Yahoo declarar-se em suas cadeias de agente de utilizador, mas este método ainda contará visitas de bots fingindo ser visitantes humanos (enviando UEA falsificados)
  • @amdfan mencionado acima, o bloqueio por meio de bots robots.txt deve parar a maioria deles de chegar a sua página. Se você precisar o conteúdo a ser indexado, mas não as estatísticas de incremento, então o método robots.txt não será uma opção realista

Verifique a usuário agente antes incrementando a contagem de exibição de página, mas lembre-se que este pode ser falsificado. PHP expõe o agente de usuário em $_SERVER['HTTP_USER_AGENT'], assumindo que o servidor web fornece-lo com esta informação. Mais informações sobre $_SERVER podem ser encontradas em http: //www.php. net / manual / en / reserved.variables.server.php .

Você pode encontrar uma lista de agentes de usuário em http://www.user-agents.org ; Googling também irá fornecer os nomes das pessoas pertencentes aos principais fornecedores. Uma terceira fonte possível seria logs de acesso do seu servidor web, se você pode agregá-los.

Você já tentou identificá-los pela sua informação user-agent? Uma simples busca no Google deve dar-lhe a facilidade de agentes utilizados pelo Google etc.

Isto, naturalmente, não é infalível, mas a maioria dos rastreadores por grandes empresas de fornecer um user-agent distinta.

EDIT:. Supondo que você não quer restringir o acesso bots, mas apenas não contar a sua visita em sua estatística mostrou

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top