Цитата мудреца

Голосование

Курите ли Вы?
 
Система Orphus. Если вы заметили ошибку на сайте, нажмите сюда.
Загружается, подождите...
Начало сайта Материалы сайта Программы PHP-скрипты

Версия для печати

Ограничение на скорость выдачи страниц одному пользователю

Здесь представлены некоторые мои разработки на PHP. Это в, основном, служебные скрипты, которые работают в составе других скриптов и не могут быть протестированы здесь непосредственно.

Re: Ограничение на скорость выдачи страниц одному пользователю

Пару слов о диапазонах поисковиков.
Добавил себе следующие:
Begun Robot Crawler - (91.192.148.0/23)
Yahoo - 67.195.0.0 - 67.195.255.255 (67.195.0.0/16)

Еще есть такой робот twiceler (http://www.cuill.com/twiceler/robot.html)
Вот только такой вариант не работает почему-то:
Cuil - 216.129.119.10 - 216.129.119.49 (216.129.119.10/26)
38.99.44.101 - 38.99.44.111 (38.99.44.101/28)
67.218.116.130 - 67.218.116.134 (67.218.116.130/29)
Сейчас расширил диапазон и тестирую такой вариант:
Cuil - 216.129.119.0 - 216.129.119.49 (216.129.119.0/26)
38.99.44.0 - 38.99.44.111 (38.99.44.0/25)
67.218.116.0 - 67.218.116.134 (67.218.116.0/24)
Не знаю, в чем загвоздка?

Кстати, очень удобный сервис по определению масок к диапапзонам - Free Online IP Subnet Calculator (http://www.hackzone.ru/tools/netcalc/index.php). И не нужно считать единички с ноликами... :D
Ответить


Mike писал(а):Begun Robot Crawler - (91.192.148.0/23)

Это если Вы с Бегуном работаете...
Mike писал(а):Yahoo - 67.195.0.0 - 67.195.255.255 (67.195.0.0/16)

А этот есть в скрипте. Посмотрите внимательно.
Mike писал(а):Вот только такой вариант не работает почему-то:

А что именно не работает?
Mike писал(а):Кстати, очень удобный сервис по определению масок к диапапзонам - Free Online IP Subnet Calculator . И не нужно считать единички с ноликами

Имейте в виду, что посчитаете единицы и нолики Вы один раз, а калькулятор будет запускаться каждый раз, при открытии страницы. И подумайте, если к Вам будут заходить по несколько раз в секунду, то зачем Вам так нагружать сервер?
Я в своё время отказался от анализа текстового файла и перешёл на имена файлов только потому, что Юникс с каталогами работает быстрее, чем с одним файлом.

Добавлено спустя 15 минут 15 секунд:
Mike писал(а):Успешно использую Ваш скрипт и несколько его модифицировал

А какую цель преследовали?

Mike писал(а):$banIp = $realIp; // Используется для блокирования реального IP адреса через .htaccess.

Обычно, HTTP_X_FORWARDED_FOR совпадает с REMOTE_ADDR. Но в тех случаях, когда они не совпадают (а первый может содержать строку из нескольких адресов, указанных через запятую, то банить первый смысла вообще нет, потому что не его видит сервер, когда проверяет доступ, а REMOTE_ADDR.

Mike писал(а):1. Почему бы не использовать проверку возможного использования качальщиком прокси-сервера?

Как я уже написал, его банить бесполезно.

Mike писал(а):3. Этот кусок кода я сразу закомментировал и не видел его работу.

Дело Ваше. Но мне очень помогает. Я сразу вижу, что кого-то забанили, смотрю, где лазил, что делал. Проверяю, не робот ли.
Вот что он присылает:
Код: Выделить всё
Заблокирован адрес 92.101.19.113 (ppp92-101-19-113.pppoe.avangarddsl.ru)

ppp92-101-19-113.pppoe.avangarddsl.ru - - [20/Aug/2009:03:21:07 +0400] "GET http://pritchi.ru/" 200 46195 "http://www.google.com/search?client=opera&rls=ru&q=%D0%BF%D1%80%D0%B8%D1%82%D1%87%D0%B8&sourceid=opera&ie=utf-8&oe=utf-8" "Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.2.15 Version/10.00"
ppp92-101-19-113.pppoe.avangarddsl.ru - - [20/Aug/2009:03:21:07 +0400] "GET http://pritchi.ru/base.css" 200 8601 "http://pritchi.ru/" "Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.2.15 Version/10.00"
ppp92-101-19-113.pppoe.avangarddsl.ru - - [20/Aug/2009:03:21:07 +0400] "GET http://pritchi.ru/favicon.ico" 200 318 "http://pritchi.ru/" "Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.2.15 Version/10.00"
ppp92-101-19-113.pppoe.avangarddsl.ru - - [20/Aug/2009:03:21:07 +0400] "GET http://pritchi.ru/img/tape_gr.gif" 200 271 "http://pritchi.ru/" "Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.2.15 Version/10.00"
ppp92-101-19-113.pppoe.avangarddsl.ru - - [20/Aug/2009:03:21:07 +0400] "GET http://pritchi.ru/orphus/orphus.js" 200 10335 "http://pritchi.ru/" "Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.2.15 Version/10.00"


Mike писал(а):Я так понимаю нам в сообщении приходит информация из лога апача. Но что там особенно полезного? Мне кажется, что на эту обработку уходит приличное количество процессорного времени. Логи могут достигать десятки мегабайт. Или я не прав?

Полезное в том, что видно, что человек делал, куда ходил, как себя вёл. Время на это тратится всего один раз, при окончательном бане.
Ответить


Re: Ограничение на скорость выдачи страниц одному пользователю

Здравствуйте, Андрей.
Очень интересная и актуальная программа!

Списки диапазонов IP конечно выход (опять же быстро!), но здесь главный минус - постоянно контролировать изменения/дополнения адресов. Можно "связаться" с какой-нибудь партнёркой и забыть пополнить список...

Вопрос: а нельзя было бы к этому готовому списку "прикрутить" автоматическое обновление, скажем, для однозначных случаев идентификации робота того же Яндекса или Google (ввиду их значимости для сайта)?

Пример из статистики:
IP робота - 95.108.128.242
применив gethostbyaddr($_SERVER['REMOTE_ADDR']) получим:
хост- spider72.yandex.ru

Подделать хост, как я понимаю сложно, поэтому делаем однозначный вывод (по названию) - это робот Яндекса.
Далее, смотрим, есть ли этот IP в списках диапазонов, если нет - дополняем список.

По моей статистики хосты Яндекса или Google определяются нормально, а если что и не определится, то что-то лучше, чем ничего...

А Вы как думаете?... :)
Ответить


Есть один большой минус.
Любая такая проверка замедлит работу скрипта. При чём существенно. Представьте, что при каждом его вызове должна будет вызываться сетевая функция, которая выполняется далеко не сотую долю секунды. А здесь счёт идёт именно на них.
Можно было бы, конечно, каким-то образом отдельным процессом, запускаемым кроном, проверять хосты. Но тогда нужно передавать этому процессу список на проверку. Думаю, это тоже тяжеловато будет.
Решение:
Во-первых, Яндекс и Гугл очень хорошо настраиваются через robots.txt. Там у меня стоит такая строка:
Код: Выделить всё
User-Agent: *
Crawl-delay: 3

И никто из них не обращается к сайту чаще, чем раз в 3 секунды.
Во-вторых, я получаю письма от скрипта, в которых он сообщает о забаненных айпишниках. Я эти письма просматриваю. Случается это не сильно часто. Может 3-5 писем в день. Если вижу кого-то важного, то разбаниваю его и заношу его диапазон в исключения.

Пока проблем не было.
Ответить


Спасибо за оперативный ответ! Звучит вполне убедительно... :)
Ответить


Пред.

Вернуться в PHP-скрипты



Кто сейчас на сайте

Зарегистрированные пользователи: Yahoo [Bot]