2008-10-24 8 views
11

Cuando un usuario hace clic en un enlace para descargar un archivo en mi sitio web, va al this PHP file, que incrementa un contador de descarga para ese archivo y luego el encabezado(): los redirecciona al archivo real. Sospecho que los bots están siguiendo el enlace de descarga, sin embargo, por lo que el número de descargas es inexacto.¿Cómo impido que los bots incrementen mi contador de descarga de archivos en PHP?

  • ¿Cómo hago para que los robots sepan que no deben seguir el enlace?
  • ¿Hay alguna forma de detectar la mayoría de los bots?
  • ¿Hay una forma mejor de contar la cantidad de descargas que se obtiene un archivo?
+0

Debe usar una secuencia de comandos de detección del navegador con una base de datos de agente de usuario actualizada. Aquí está [uno] (http://chrisschuld.com/projects/browser-php-detecting-a-users-browser-from-php/#typicalusage). –

Respuesta

16

robots.txt: http://www.robotstxt.org/robotstxt.html

No todos los robots de respeto, pero la mayoría lo hace. Si realmente desea evitar el acceso a través de bots, haga que el enlace sea un POST en lugar de un GET. Bots no seguirán las URL POST. (I.E., use un formulario pequeño que publique en el sitio que lo lleva a la URL en cuestión)

4

Creo que la respuesta del archivo robots.txt de Godeke sería suficiente. Si absolutamente no puede tener los bots en su contador, le recomendaría usar el archivo de robots junto con no aumentar los clics con algunos common robot user agents.

Ninguno de los dos es perfecto, pero la mezcla de los dos es probablemente un poco más estricta. Si fuera yo, probablemente me limitaría al archivo de robots, ya que es una solución fácil y probablemente la más efectiva.

3

Godeke tiene razón, robots.txt es lo primero que se debe hacer para evitar que los bots se descarguen.

En cuanto al recuento, este es realmente un problema de análisis web. ¿No está guardando sus registros de acceso www y ejecutándolos a través de un programa de análisis como Webalizer o AWStats (o alternativas de lujo como Webtrends o Urchin)? Para mí, ese es el camino a seguir para recopilar este tipo de información, porque es fácil y no hay PHP, redirección u otro rendimiento alcanzado cuando el usuario está descargando el archivo. Solo estás usando los registros de Apache que guardas de todos modos. (Y grep -c le dará el recuento rápido y n sucio de un archivo o patrón de comodín en particular)

Puede configurar su software de estadísticas para ignorar los hits de los bots o agentes de usuario específicos y otros criterios (y si cambia sus criterios más adelante, solo reprocesará los datos de registro anteriores). Por supuesto, esto requiere que tengas todos tus registros antiguos, por lo que si los lanzaste con algo como logrotate deberás comenzar sin ningún dato histórico.

Cuestiones relacionadas