как определить, кто получает страницу: бот на PHP или человек? Если используется cURL + нормальный useragent.
Никак не определить, посути. По IP смотри, если это бот на сервере, там будет видно, что это IP хостера.
bafoed, конечно не 100% способ, но все же. Если я правильно тебя понял, то определить можно по запросам. К примеру пользователь нажмет на кнопку и передаст POST запросом, а бот будет использовать GET запрос.
Это нереально. Каждый IP пробивать только руками, да и то нельзя результат горантировать. Можешь еще давать куки на JS и потом через PHP анализировать, бот может не принимать кукисов от JS (скорее всего, так и есть), затем если куки не установлены, выписывать в файлик IP и UA бота. Короче как самый простой антиДДоС.
cURL также передает POST. Например бот авторизируется на сайте через POST и парсит страницу. И тоже самое делает человек, только без парсинга, а для чтения. Так вот, ботам запретить скриптом логиниться, а человеку как и раньше..
с javascript-куками вопрос частично решается. только значение надо случайное ставить, иначе очень быстро тебе curl будет вместе c твоими "защитными куками" отправлять)
Ну все можно, можно нанять рабов, которые будут заходить на сайт. Можно пошифровать в куках размешанные IP+UserAgent+дату+соль и потом проверять (алгоритм они не разгадают).
bafoed любое действие совершаемое пользователем - можно повторить, вопрос только в том, как быстро. Просто надо использовать наиболее редкоиспользуемую защиту. Например - вместо какой то картинки на странице использовать php скрипт (расширение файла будет стандартное для изображений), который будет записывать в сессию некую переменную, которую в дальнейшем проверять. Но этот метод не подойдет, если много людей посещает страницу с телефона Можно использовать JS создаваемые по разным шаблонам и располагающиеся в разных частях страницы (не спасет от парсеров использующих внутренний браузер) Можно отсеивать клиентов, которые слишком часто обращаются к страницам (не спасет от прокси и многочисленных клиентов)