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

Голосование

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

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

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

inkerman писал(а):Возникла проблема с защитой.
При достижении лимита 50 показов вылезает каптча. И дальше роботу можно долбиться с частотой бесконечной загружая проц на 100%.
Нет ли резона пропускать обращение к каптче через основной фильтр?

Вот смотрите, если робот дошёл до капчи и его ещё не забанили, т.е. он вполне корректно действовал, то как же тогда программе отличить его от пользователя? Он не перегружает страницу, он пробует получить новые страницы... Даже если мы будем пропускать обращение к капче через основной фильтр, нам это ничего не даст.
Процессор от таких обращений сильно грузиться не будет. Во-первых, они корректны по частоте (робот же дошёл до капчи), а во вторых, никакие ресурсы сайта (БД и т.п.) не задействуются.

inkerman писал(а):У меня каптча не принимает ответ. (isset($_SESSION['captcha_keystring']) возвращает FALSE

Проверьте, в какой момент у Вас стартует сессия.
Она должна быть запущена во-первых, до определения соответствующей переменной, а во-вторых, до её проверки.
Ответить


ПОДКЛЮЧИТЬ К DLE

кто нибудь знает подробную инструкцию подключения данного скрипта к движку dle? желательно к версии 10
Ответить


guru3000, конкретно к данному движку инструкция не писалась. Но есть общие рекомендации.
Нужно найти скрипт, который будет вызываться перед каждой страницей при показе сайта. Если, например, весь движок реализован на запуске одного стартового скрипта, то это будет index.php. Если запускаемых скриптов несколько, то всегда найдётся модуль, который будет подключаться в самом начале и всеми вызывающими скриптами. Вот в это место и нужно вставить вызов модуля ограничителя.
Ответить


Здравствуйте, снова я.

Сегодня скрипт забанил бота Яндекса. АйПи 5.255.253.46
Временно включил в код после
Код: Выделить всё
       'Yandex7' => array(
          sprintf('%c%c%c%c', 84, 201, 128, 0),
          sprintf('%c%c%c%c', 255, 255, 192, 0)
       ),
такую запись
Код: Выделить всё
       'Yandex8vremenno' => array(
          sprintf('%c%c%c%c', 5, 255, 253, 0),
          sprintf('%c%c%c%c', 255, 255, 192, 0)
       ),
Точные новые АйПи Яндекс бота не знаю, поэтому жду обновления на этом сайте.

Добавлено спустя 4 минуты 47 секунд:
Нет правки сообщений. У меня опечатка. Предыдущее сообщение можно удалить.
Правильно будет:

Здравствуйте, снова я.
С наступающим Новым годом.

Сегодня скрипт забанил бота Яндекса. АйПи 5.255.253.46
Временно включил в код после
Код: Выделить всё
       'Yandex7' => array(
          sprintf('%c%c%c%c', 84, 201, 128, 0),
          sprintf('%c%c%c%c', 255, 255, 192, 0)
       ),
такую запись
Код: Выделить всё
       'Yandex8vremenno' => array(
          sprintf('%c%c%c%c', 5, 255, 253, 0),
          sprintf('%c%c%c%c', 255, 255, 255, 0)
       ),
Точные новые АйПи Яндекс бота не знаю, поэтому жду обновления на этом сайте.
Ответить


V4.2.4 Пн 30 Декабрь 2013

V4.2.4 Пн 30 Декабрь 2013

Добавлена ещё одна подсеть Яндекса.
Ответить


V4.2.5 Вт 21 Январь 2014

V4.2.5 Вт 21 Январь 2014
Вылезла ещё одна подсеть Яндекса: с адреса 141.8.178.142 заходил Yandex.Gazeta Bot/1.0
Ответить


Требуется помощь

Здравствуйте, Андрей.
Оформил ваш скрипт в виде модуля. Повесил его на хук тех файлов, к которым любят обращаться злодеи.
Главное своё предназначение ваш скрипт выполняет на отлично. Проблема у меня с капчёй.

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

Запустить капчу не удалось. Установил права 777 на файл captcha.php и каталог с капчёй. Вызов файла captcha.php через адресную строку браузера проходил успешно, появлялась капча, но скрипт антидоса не только не выводил капчу, но и сам вешался.
Ответить


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

Навскидку могу предположить, что у вас происходит зацикливание: перед вызовом капчи опять вызывается модуль ограничителя. Капча должна вызываться напрямую, не внутри каких-нибудь движков и обработчиков. И уж конечно, при обращении к ней не должна опять идти проверка ограничителя.
Ответить


В качестве эксперимента сделал так, как здесь рекомендовано.
Скопировал отсюда код и встроил его в начало файла.
Результат тот же, пустая страница при включенной капче.

Посмотрел сейчас лог ошибок. Сервер ругается
PHP Fatal error: Maximum execution time of 10 seconds exceeded in forum/forum.php on line 347
На линии 347 находится код капчи, конкретно начало функция, которая пустая - не содержит исполнительного кода или неправильно фигурные скобки расположены.
Код: Выделить всё
while (!($fh = fopen($filename, 'r+')))


Ничего не правил в коде модуля, жду ответа автора.
Ответить


Камелот, сделайте вывод на экран переменной $filename и посмотрите, что в ней находится. Там должно быть имя файла, который должен существовать, пусть даже пустой.

Этот файл при работе с ним закрывается от записи для других процессов. Поэтому процесс ждёт, пока он будет доступен и только после этого двигается дальше.
Ответить


Пред.След.

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



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

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