Como detectar os bots do mecanismo de busca usando php?
php
web-crawler
bots
formidável
fonte
fonte
strpos
retornaFALSE
em caso de falha também. É mais rápido e eficiente, porém (sem pré-processamento e sem armazenamento O (m)).Eu uso o seguinte código, que parece estar funcionando bem:
atualização 16-06-2017 https://support.google.com/webmasters/answer/1061943?hl=en
adicionado mediapartners
fonte
Verifique o
$_SERVER['HTTP_USER_AGENT']
para algumas das strings listadas aqui:http://www.useragentstring.com/pages/useragentstring.php
Ou mais especificamente para rastreadores:
http://www.useragentstring.com/pages/useragentstring.php?typ=Crawler
Se você quiser - dizer - o número de visitas dos rastreadores de mecanismos de pesquisa mais comuns, você pode usar
fonte
Você pode verificar se é um mecanismo de pesquisa com esta função:
Então você pode usá-lo como:
fonte
Estou usando isso para detectar bots:
Além disso, uso uma lista de permissões para bloquear bots indesejados:
Um bot indesejado (= usuário falso-positivo) é então capaz de resolver um captcha para se desbloquear por 24 horas. E como ninguém resolve este captcha, sei que não produz falsos positivos. Portanto, a detecção do bot parece funcionar perfeitamente.
Nota: Minha lista de permissões é baseada no robots.txt do Facebook .
fonte
)
em seu primeiro trecho de código.Como qualquer cliente pode definir o agente de usuário para o que quiser, procurar por 'Googlebot', 'bingbot' etc. é apenas metade do trabalho.
A 2ª parte é verificar o IP do cliente. Antigamente, isso exigia a manutenção de listas de IP. Todas as listas que você encontra online estão desatualizadas. Os principais mecanismos de pesquisa suportam oficialmente a verificação por meio de DNS, conforme explicado pelo Google https://support.google.com/webmasters/answer/80553 e Bing http://www.bing.com/webmaster/help/how-to-verify -bingbot-3905dc26
Em primeiro lugar, execute uma pesquisa DNS reversa do IP do cliente. Para o Google, isso traz um nome de host em googlebot.com, para Bing em search.msn.com. Então, como alguém pode definir esse DNS reverso em seu IP, você precisa verificar com uma pesquisa DNS direta nesse nome de host. Se o IP resultante for o mesmo do visitante do site, você tem certeza de que é um rastreador daquele mecanismo de busca.
Escrevi uma biblioteca em Java que realiza essas verificações para você. Sinta-se à vontade para portá-lo para PHP. Está no GitHub: https://github.com/optimaize/webcrawler-verifier
fonte
Eu uso esta função ... parte da regex vem de prestashop, mas adicionei mais um bot a ela.
De qualquer forma, tome cuidado para que alguns bots usem navegador como agente de usuário para falsificar sua identidade
(eu tenho muitos ip russos que tem esse comportamento no meu site)
Uma característica distintiva da maioria dos bots é que eles não carregam nenhum cookie e, portanto, nenhuma sessão é anexada a eles.
(Não sei como, mas esta é com certeza a melhor maneira de rastreá-los)
fonte
Você pode analisar o agente do usuário (
$_SERVER['HTTP_USER_AGENT']
) ou comparar o endereço IP do cliente ($_SERVER['REMOTE_ADDR']
) com uma lista de endereços IP de robôs de mecanismos de pesquisa .fonte
Use a biblioteca de código aberto Device Detector, que oferece uma função isBot (): https://github.com/piwik/device-detector
fonte
Essa seria a maneira ideal de camuflagem para aranhas. É de um script de código aberto chamado [YACG] - http://getyacg.com
Precisa de um pouco de trabalho, mas definitivamente é o caminho a percorrer.
fonte
Eu fiz uma função boa e rápida para isso
Isso cobre 99% de todos os bots, mecanismos de pesquisa, etc. possíveis.
fonte
Estou usando esse código, muito bom. Será muito fácil saber que os usuários-agentes visitaram seu site. Este código está abrindo um arquivo e grava o user_agent no arquivo. Você pode verificar a cada dia esse arquivo
yourdomain.com/useragent.txt
acessando e saber sobre novos user_agents e colocá-los em sua condição de cláusula if.Este é o conteúdo de useragent.txt
fonte
Detector de bot 100% funcionando. Está funcionando no meu site com sucesso.
fonte
Se você realmente precisa detectar os bots do mecanismo do GOOGLE, nunca deve confiar no endereço "user_agent" ou "IP" porque "user_agent" pode ser alterado de acordo com o que o Google disse em: Verificando o Googlebot
Aqui está meu código testado:
Neste código, verificamos "hostname", que deve conter "googlebot.com" ou "google.com" no final de "hostname", o que é realmente importante para verificar o domínio exato, não o subdomínio. Espero que você goste ;)
fonte
Para o Google, estou usando esse método.
Créditos: https://support.google.com/webmasters/answer/80553
fonte
fonte