Wie verhindere ich, Bots aus meiner Datei Download-Zähler in PHP erhöht wird?
Frage
Wenn ein Benutzer auf einen Link klickt, um eine Datei auf meiner Website herunterzuladen, gehen sie href="http://viewsourcecode.org/viewsource/homebrew.php" rel="noreferrer"> diese PHP-Datei , die für diese Datei und dann Header einen Download-Zähler erhöht () - leitet sie an die eigentliche Datei. Ich vermute, dass Bots den Download-Link folgen, jedoch, so dass die Anzahl der Downloads ist ungenau.
- Wie lasse ich Bots wissen, dass sie den Link nicht folgen sollte?
- Gibt es eine Möglichkeit die meisten Bots zu erkennen?
- Gibt es einen besseren Weg, um die Anzahl der Downloads eine Datei wird zählen?
Lösung
robots.txt: http://www.robotstxt.org/robotstxt.html
Nicht alle Bots respektieren, aber die meisten tun. Wenn Sie wirklich Zugang über Bots verhindern möchten, stellen Sie den Link, um eine POST statt GET. Bots werden nicht POST URLs folgen. (Das heißt, verwenden Sie eine kleine Form, die Beiträge auf die Website zurück, die Sie auf die URL in Frage kommt.)
Andere Tipps
Ich würde denken, Godeke robots.txt Antwort ausreichen würde. Wenn Sie absolut nicht die Bots Ihre Zähler haben kann, dann würde ich empfehlen, die Roboter in Verbindung mit Datei mit nicht nicht die Klicks mit einigen Inkrementieren gemeinsame Roboter User Agents .
Weder Weg ist perfekt., Aber die Mischung der beiden ist wahrscheinlich ein wenig strenger. Wird mir war, würde ich wahrscheinlich nur Stick an die Roboter obwohl Datei, da es einfach ist, und wahrscheinlich die effektivste Lösung.
Godeke ist richtig, robots.txt das erste, was die Bots von Download zu halten zu tun.
Zählen In Bezug auf, das ist wirklich ein Web-Analytics-Problem. Werden Sie nicht Ihre www Zugriffsprotokolle zu halten und sie durch ein Analyseprogramm läuft wie Webalizer oder AWStats (oder ausgefallene Alternativen wie Webtrends oder Urchin)? Für mich ist der Weg für die Erhebung dieser Art von Informationen zu gehen, weil es einfach ist, und es gibt keine PHP, umleiten oder andere Leistung getroffen, wenn der Benutzer die Datei herunterlädt. Sie verwenden nur die Apache-Logs, die Sie auf jeden Fall zu halten sind. (Und grep -c
gibt Ihnen die schnelle ‚n‘ schmutzige Zahl auf einer bestimmten Datei oder Wildcard-Muster.)
Sie können Ihre Statistiken Software zu ignorieren Hits von Bots oder bestimmten Benutzeragenten und anderen Kriterien konfigurieren (und wenn Sie Ihre Kriterien ändern später, erneut verarbeiten Sie nur die alten Log-Daten). Natürlich ist dies nicht erforderlich, dass Sie alle Ihre alten Protokolle, also, wenn man sie mit so etwas wie logrotate
worden ist Werfen Sie ohne historische Daten beginnen müssen.
Sie können auch bösartige Bots erkennen, die robots.txt nicht respektieren würde mit http: // www.bad-behavior.ioerror.us/ .