Предотвращение загрузки всего сайта? - PullRequest
6 голосов
/ 30 августа 2010

Существует один IP (из Китая), который пытается загрузить весь мой сайт.Он загружает все мои страницы и значительно загружает сервер (у меня более 500 000 страниц).Просматривая журналы доступа, я могу сказать, что это определенно не бот Google или любой другой бот поисковой системы.

Временно я забанил его (используя правила iptables), но это не решение для меня, потому что некоторые измои настоящие пользователи также имеют тот же IP-адрес, поэтому они также заблокированы и не могут получить доступ к веб-сайту.

Есть ли какой-либо способ предотвратить такую ​​"активность пользователей"?Может быть, механизм, который реализует капчу, если вы пытаетесь запросить более 5 запросов в секунду или что-то?

PS Я использую Yii Framework (PHP).

Любые предложения приветствуются.

спасибо!

Ответы [ 2 ]

5 голосов
/ 30 августа 2010

Вы ответили на свой вопрос!

Сделать captcha, если запрос превышает определенное число в секунду или в минуту!

Вы должны использовать CCaptchaAction для реализации, например this .

0 голосов
/ 31 августа 2010

Полагаю, лучший способ отслеживать подозрительную активность пользователя - это действительно сеанс пользователя, CWebUser s getState() / setState().Сохраните текущее время запроса в сеансе пользователя, сравните его с несколькими предыдущими значениями, покажите капчу, если пользователь делает запросы слишком часто.

Создайте новый компонент, предварительно загрузите его с помощью CWebApplication::$preload и проверьте активность пользователя в компонентах init() function,Таким образом, вы сможете легко включать и выключать проверку ботов.

...