Comment puis-je empêcher les bots d'incrémenter mon compteur de téléchargement de fichiers en PHP?

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

  •  04-07-2019
  •  | 
  •  

Question

Lorsqu'un utilisateur clique sur un lien pour télécharger un fichier sur mon site Web, il accède à ce fichier PHP qui incrémente un compteur de téléchargement pour ce fichier puis header () - les redirige vers le fichier réel. Je soupçonne que les robots suivent le lien de téléchargement, cependant, le nombre de téléchargements est inexact.

  • Comment informer les robots qu'ils ne doivent pas suivre le lien?
  • Existe-t-il un moyen de détecter la plupart des robots?
  • Existe-t-il un meilleur moyen de compter le nombre de téléchargements qu'un fichier obtient?
Était-ce utile?

La solution

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

Tous les robots ne le respectent pas, mais la plupart le font. Si vous voulez vraiment empêcher l'accès via des robots, faites en sorte que le lien soit un POST au lieu d'un GET. Les robots ne suivront pas les URL POST. (Par exemple, utilisez un petit formulaire qui renverra sur le site et vous dirigera vers l'URL en question.)

Autres conseils

Je pense que la réponse de robots.txt de Godeke serait suffisante. Si vous ne pouvez absolument pas avoir les robots en haut de votre compteur, alors je vous recommande d'utiliser le fichier robots conjointement avec ne pas incrémenter les clics avec des agents d'utilisateur de robot courants .

Aucune des deux méthodes n’est parfaite, mais le mélange des deux est probablement un peu plus strict. Si c’était moi, je me contenterais probablement du fichier des robots, car c’est une solution simple et probablement la plus efficace.

Godeke a raison, le fichier robots.txt est la première chose à faire pour empêcher les robots de télécharger.

En ce qui concerne le comptage, il s’agit vraiment d’un problème d’analyse Web. Ne conservez-vous pas vos journaux d’accès www et ne les exécutez-vous pas avec un programme d’analyse tel que Webalizer ou AWStats (ou des alternatives fantaisistes comme Webtrends ou Urchin)? Pour moi, c’est la voie à suivre pour collecter ce type d’informations, car c’est facile et il n’ya pas de perte de performance de PHP, de redirection ou d’autres performances lorsque l’utilisateur télécharge le fichier. Vous utilisez simplement les journaux Apache que vous conservez de toute façon. (Et grep -c vous donnera le décompte rapide 'n' sale sur un fichier particulier ou un motif générique.)

Vous pouvez configurer votre logiciel de statistiques pour qu’il ignore les occurrences des robots, des agents utilisateurs spécifiques et d’autres critères (et si vous modifiez vos critères ultérieurement, vous ne faites que retraiter les anciennes données du journal). Bien sûr, cela nécessite que vous ayez tous vos anciens journaux. Par conséquent, si vous leur avez jeté quelque chose comme logrotate , vous devrez commencer sans aucune donnée historique.

Vous pouvez également détecter les robots malveillants ne respectant pas le fichier robots.txt à l'aide de http: // www.bad-behavior.ioerror.us/ .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top