2008-10-24 8 views
11

Kiedy użytkownik klika łącze, aby pobrać plik na mojej stronie, przechodzi do this PHP file, który zwiększa licznik pobrań dla tego pliku, a następnie header() - przekierowuje go do rzeczywistego pliku. Podejrzewam jednak, że boty podążają za linkiem pobierania, więc liczba pobrań jest niedokładna.Jak zatrzymać boty przed zwiększaniem licznika pobierania pliku w PHP?

  • Jak powiadomić boty, że nie powinny używać linku?
  • Czy istnieje sposób na wykrycie większości botów?
  • Czy istnieje lepszy sposób policzenia liczby pobrań pliku?
+0

Należy użyć skryptu wykrywania przeglądarki z aktualną bazą danych klienta użytkownika. Oto [jeden] (http://chrisschuld.com/projects/browser-php-detecting-a-users-browser-from-php/#typicalusage). –

Odpowiedz

16

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

Nie wszystkie boty szanuję go, ale większość nie. Jeśli naprawdę chcesz uniemożliwić dostęp za pośrednictwem botów, umieść link do niego POST zamiast GET. Boty nie będą śledzić adresów URL POST. (I.E., użyj małego formularza, który powoduje powrót do witryny, która prowadzi do danego adresu URL.)

4

Myślę, że odpowiedź Godeke's robots.txt byłaby wystarczająca. Jeśli absolutnie nie możesz mieć botów do podniesienia swojego licznika, to polecam używanie pliku z robotami w połączeniu z niezasilaniem kliknięć przy pomocy jakiegoś common robot user agents.

Żadna droga nie jest idealna., Ale mieszanka tych dwóch jest prawdopodobnie nieco bardziej rygorystyczna. Jeśli to ja, prawdopodobnie trzymałbym się pliku robota, ponieważ jest to łatwe i prawdopodobnie najskuteczniejsze rozwiązanie.

3

Godeke ma rację, robots.txt jest pierwszą rzeczą, którą należy zrobić, aby nie pobierać botów.

Jeśli chodzi o liczenie, jest to naprawdę problem z analityką internetową. Czy nie przechowujesz swoich dzienników dostępu do stron WWW i nie uruchamiasz ich za pomocą programu analitycznego, takiego jak Webalizer lub AWStats (lub wyszukanych alternatyw, takich jak Webtrends lub Urchin)? Dla mnie jest to sposób na zbieranie tego rodzaju informacji, ponieważ jest to łatwe i nie ma PHP, przekierowania ani innej wydajności, gdy użytkownik pobiera plik. Używasz tylko dzienników Apache, które i tak trzymasz. (I grep -c da ci szybką 'n' brudną liczbę na konkretnym pliku lub wzorze wieloznacznym.)

Możesz skonfigurować oprogramowanie statystyczne, aby ignorowało trafienia przez roboty lub określone programy użytkownika i inne kryteria (a jeśli zmienisz twoje kryteria później, po prostu przerób stare dane dziennika). Oczywiście wymaga to wszystkich starych dzienników, więc jeśli rzuciłeś je z czymś w rodzaju logrotate, musisz zacząć bez żadnych danych historycznych.

Powiązane problemy