Come posso impedire ai bot di aumentare il contatore del download dei miei file in PHP?

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

  •  04-07-2019
  •  | 
  •  

Domanda

Quando un utente fa clic su un collegamento per scaricare un file sul mio sito Web, accede a questo file PHP che incrementa un contatore di download per quel file e quindi header () - li reindirizza al file effettivo. Ho il sospetto che i bot stiano seguendo il link per il download, quindi il numero di download è impreciso.

  • Come faccio a far sapere ai robot che non dovrebbero seguire il link?
  • Esiste un modo per rilevare la maggior parte dei robot?
  • Esiste un modo migliore per contare il numero di download che un file ottiene?
È stato utile?

Soluzione

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

Non tutti i robot lo rispettano, ma molti lo fanno. Se vuoi davvero impedire l'accesso tramite bot, rendi il link un POST anziché un GET. I robot non seguiranno gli URL POST. (I.E., usa un piccolo modulo che riporti sul sito che ti porta all'URL in questione.)

Altri suggerimenti

Penso che la risposta di robots.txt di Godeke sarebbe sufficiente. Se non puoi assolutamente avere i robot sul tuo contatore, allora consiglierei di usare il file robot insieme a non incrementare i clic con alcuni agenti utente robot comuni .

In nessun caso è perfetto., ma la miscela dei due è probabilmente un po 'più rigorosa. Se fossi in me, probabilmente mi limiterei ad attenermi al file dei robot, poiché è facile e probabilmente la soluzione più efficace.

Godeke ha ragione, robots.txt è la prima cosa da fare per impedire il download dei robot.

Per quanto riguarda il conteggio, questo è davvero un problema di analisi web. Non stai mantenendo i tuoi registri di accesso www e li esegui attraverso un programma di analisi come Webalizer o AWStats (o alternative fantasiose come Webtrends o Urchin)? Per me questo è il modo migliore per raccogliere questo tipo di informazioni, perché è facile e non ci sono PHP, reindirizzamenti o altri hit delle prestazioni quando l'utente scarica il file. Stai solo usando i log di Apache che conservi comunque. (E grep -c ti darà il conteggio rapido 'n' sporco su un particolare file o modello jolly.)

È possibile configurare il proprio software di statistiche in modo da ignorare gli hit dei bot, specifici agenti utente e altri criteri (e se si modificano i criteri in un secondo momento, è sufficiente rielaborare i vecchi dati del registro). Naturalmente, questo richiede che tu abbia tutti i tuoi vecchi registri, quindi se li hai lanciati con qualcosa come logrotate dovrai iniziare senza dati storici.

Puoi anche rilevare bot dannosi, che non rispetterebbero robots.txt usando http: // www.bad-behavior.ioerror.us/.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top