[PHP] Jak zabezpieczyć własne strony przed pobieraniem ich programami do ściągania całych witryn?
Chcesz zabezpieczyć się przed programami typu Teleport i podobnymi, które automatycznie pobierają na dysk zawartość całej witryny. Takie pobieranie stron obciąża serwer i znacznie spowalnia oglądanie stron. Sposób działa też na wyszukiwarki i użytkowników z określonymi numerami IP, których nie chcesz do swojego serwisu wpuścić.
Aby pozbyć się natrętnych programów trzeba je wykryć i zablokować im dostęp do serwisu. Jest na to bardzo prosty i skuteczny sposób. Na samym początku każdej strony PHP dodaj następujące polecenie:
include("sciezka/blokada.php");
Teraz do pliku blokada.php możesz dodawać programy, którym zabronisz na pobieranie stron.
<?
if (eregi("teleport", $_SERVER["HTTP_USER_AGENT"])) {exit;}
if (eregi("ripper", $_SERVER["HTTP_USER_AGENT"])) {exit;}
if (eregi("offline", $_SERVER["HTTP_USER_AGENT"])) {exit;}
if (eregi("199.219.28.250", $_SERVER["REMOTE_ADDR"]))
?>
Zmienna $_SERVER["HTTP_USER_AGENT"] przechowuje nazwę agenta czyli programu lub przeglądarki, np. Teleport Pro, Opera, Netscape. Wystarczy znać nazwę programów aby wyłapać je i odmówić im dostępu do strony.
Powyższe przykłady blokują dostęp do wszystkich agentów zawierających w swojej nazwie słowa "teleport", "ripper", "offline".
Ostatnia linijka nie wpuszcza do serwisu agentów łączących się z serwera o numerze IP 199.219.28.250. Czasem namolne wyszukiwarki i narzędzia do kopiowania witryn nie mają nazw, ale jakiś numer IP posiadać muszą. To również sposób na zablokowanie dostępu użytkownikom łączącym się z wybranego IP.
Jeżeli masz dostęp do logów serwera, zobaczysz jak wiele różnych automatów próbuje w ciągu dnia przeszukiwać lub pobierać Twoją witrynę. Dla serwera Apache będzie to np. plik /etc/httpd/logs/access Znajdziesz w nim nazwy takich programów i teraz wystarczy skopiować je do naszego pliku blokującego dostęp.
Po takim zabiegu mamy znacznie mniej obciążony serwer i bazy danych oraz mniejszy transfer danych po łączach. Pamiętaj tylko aby do każdej strony PHP dołączyć plik z blokadą!