¿Cómo evito que los bots incrementen mi contador de descarga de archivos en PHP?

StackOverflow https://stackoverflow.com/questions/235558

  •  04-07-2019
  •  | 
  •  

Pregunta

Cuando un usuario hace clic en un enlace para descargar un archivo en mi sitio web, accede a este archivo PHP que incrementa un contador de descargas para ese archivo y luego el encabezado () - los redirige al archivo real. Sin embargo, sospecho que los bots siguen el enlace de descarga, por lo que el número de descargas es incorrecto.

  • ¿Cómo les hago saber a los bots que no deben seguir el enlace?
  • ¿Hay alguna forma de detectar la mayoría de los bots?
  • ¿Existe una mejor manera de contar el número de descargas que recibe un archivo?
¿Fue útil?

Solución

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

No todos los bots lo respetan, pero la mayoría sí. Si realmente desea evitar el acceso a través de bots, haga que el enlace sea POST en lugar de GET. Los bots no seguirán las URL POST. (Es decir, use un pequeño formulario que regrese al sitio que lo lleva a la URL en cuestión).

Otros consejos

Creo que la respuesta de robots.ek de Godeke sería suficiente. Si no puede hacer que los robots suban a su contador, le recomendaría que utilice el archivo de robots junto con no incrementar los clics con algunos agentes comunes de usuarios de robots .

Ninguna de las dos formas es perfecta, pero la mezcla de las dos es probablemente un poco más estricta. Sin embargo, si fuera yo, probablemente me quedaría con el archivo de robots, ya que es una solución fácil y probablemente la más efectiva.

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

Con respecto al conteo, este es realmente un problema de análisis web. ¿No está manteniendo sus registros de acceso www y ejecutándolos a través de un programa de análisis como Webalizer o AWStats (o alternativas sofisticadas 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, redireccionamiento u otro golpe de rendimiento cuando el usuario descarga el archivo. Solo estás usando los registros de Apache que guardas de todos modos. (Y grep -c le dará el conteo rápido 'n' sucio en un archivo particular o patrón comodín).

Puede configurar su software de estadísticas para ignorar los golpes de bots o agentes de usuario específicos y otros criterios (y si cambia sus criterios más adelante, simplemente reprocese los datos de registro anteriores). Por supuesto, esto requiere que tenga todos sus registros antiguos, por lo que si los ha estado lanzando con algo como logrotate tendrá que comenzar sin ningún dato histórico.

También puede detectar bots maliciosos, que no respetarían el archivo robots.txt utilizando http: // www.bad-behavior.ioerror.us/ .

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