2010-08-30 8 views
6

Istnieje jeden adres IP (z Chin), który próbuje pobrać całą moją witrynę. Pobiera wszystkie moje strony i ładuje serwer znacznie (mam ponad 500 000 stron). Patrząc na dzienniki dostępu, mogę stwierdzić, że na pewno nie jest to robot Google ani żaden inny robot wyszukiwarki.Zapobieganie z całego pobierania strony internetowej?

Tymczasowo zbanowałem (używając zasad iptables), ale nie jest to rozwiązanie dla mnie, ponieważ niektórzy z moich prawdziwych użytkowników mają również ten sam adres IP, więc są również zbanowani i nie mogą uzyskać dostępu do strony internetowej.

Czy istnieje sposób na zapobieganie takiej "aktywności użytkownika"? Może mechanizm, który implementuje captcha, jeśli spróbujesz zażądać więcej niż 5 zapytań na sekundę czy coś takiego?

P.S. Używam framework Yii (PHP).

Wszelkie sugestie są bardzo mile widziane.

dziękuję!

Odpowiedz

5

Odpowiedziałeś na własne pytanie!

Wyświetlenie captcha, jeśli żądanie przekroczy określoną liczbę na sekundę lub na minutę!

Do implementacji należy użyć CCaptchaAction, np. this.

+0

Miałem na myśli, w jaki sposób powinienem to wdrożyć? : D sesje użytkownika? – Mensch

+0

Zobacz moją edycję powyżej. – pavanlimo

0

Domyślam się, że najlepszym sposobem monitorowania podejrzanej aktywności użytkownika jest sesja użytkownika, CWebUser 's getState()/setState(). Przechowuj bieżący czas żądania w sesji użytkownika, porównaj go z kilkoma poprzednimi wartościami, pokaż captcha, jeśli użytkownik często wysyła żądania.

Utwórz nowy komponent, wczytaj go za pomocą CWebApplication::$preload i sprawdź aktywność użytkownika w komponentach init(). W ten sposób będziesz mógł łatwo włączać i wyłączać sprawdzanie botów.

Powiązane problemy