Pregunta

Estoy creando estadísticas para mis usuarios y no deseo que se cuenten las visitas de los robots.

Ahora tengo un php básico con mysql que aumenta 1 cada vez que se llama la página.

Pero los bots también se agregan al conteo.

¿Alguien puede pensar en una manera?

Principalmente son solo los principales los que arruinan las cosas. Google, Yahoo, Msn, etc.

¿Fue útil?

Solución

Deberías filtrar por cadenas de agente de usuario. Puede encontrar una lista de alrededor de 300 usuarios-agentes comunes dados por los bots aquí: http: //www.robotstxt. org / db.html Ejecutar a través de esa lista e ignorar los agentes de usuario de bot antes de ejecutar su declaración SQL debería resolver su problema para todos los propósitos prácticos.

Si no desea que los motores de búsqueda lleguen a la página, utilice un robots.txt básico Archivo para bloquearlos.

Otros consejos

Puede comprobar la cadena del Agente de usuario, las cadenas vacías o las cadenas que contienen 'robot', 'araña', 'rastreador', 'enrollamiento' probablemente sean robots.

  

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

Tenemos un caso de uso similar al tuyo, y una opción que recientemente hemos encontrado bastante útil es la clase UASParser de user-agent-string.info .

Es una clase de PHP que extrae el último conjunto de definiciones de cadenas de agente de usuario y las almacena en caché localmente. La clase puede configurarse para extraer las definiciones tan a menudo o tan raramente como lo considere oportuno. La recuperación automática de este tipo significa que no tiene que estar al tanto de los diversos cambios que se realizan en el mercado de los agentes de usuarios de bot o los nuevos, aunque confíe en UAS.info para hacerlo con precisión.

Cuando se llama a la clase, analiza el agente de usuario del visitante actual y devuelve una matriz asociativa que desglosa las partes constituyentes, por ejemplo,

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
)

El campo typ se configura en browser cuando se identifica la UA como perteneciente a un visitante humano, en cuyo caso puede actualizar sus estadísticas.

Un par de advertencias aquí:

  • Confía en UAS.info para que las cadenas de agente de usuario proporcionadas sean precisas y estén actualizadas
  • Los bots como google y yahoo se declaran a sí mismos en las cadenas de sus agentes de usuario, pero este método aún contará las visitas de los robots que pretenden ser visitantes humanos (enviando UAs falsificados)
  • Como @amdfan mencionado anteriormente, bloqueando los bots a través de robots.txt debería evitar que la mayoría de ellos lleguen a tu página. Si necesita que el contenido sea indexado pero no las estadísticas de incremento, entonces el método robots.txt no será una opción realista

Compruebe el agente de usuario antes de incrementar el recuento de la vista de la página, pero recuerde que esto puede ser falsificado PHP expone al agente de usuario en $ _SERVER ['HTTP_USER_AGENT'] , asumiendo que el servidor web le proporciona esta información. Puede encontrar más información sobre $ _SERVER en http://www.php.net/manual/en/reserved.variables.server.php .

Puede encontrar una lista de agentes de usuario en http://www.user-agents.org ; Google también proporcionará los nombres de los que pertenecen a los principales proveedores. Una tercera fuente posible serían los registros de acceso de su servidor web, si puede agregarlos.

¿Ha intentado identificarlos por la información de su agente de usuario? Una simple búsqueda en Google debería proporcionarle los usuarios-agentes utilizados por Google, etc.

Esto, por supuesto, no es infalible, pero la mayoría de los rastreadores de las principales empresas proporcionan un agente de usuario distinto.

EDITAR: Suponiendo que no desea restringir el acceso a los bots, pero simplemente no cuenta su visita en su estado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top