К сожалению, короткий ответ — «нет».
cURL предоставляет все необходимые параметры для «подмены» любого браузера. Другими словами, браузеры идентифицируют себя с помощью определенной информации заголовка, а cURL предоставляет все инструменты для установки данных заголовка любым способом, который вы выберете. Таким образом, напрямую отличить два запроса друг от друга невозможно.*
*Без дополнительной информации. Распространенные методы определения того, есть ли живой человек, инициирующий трафик, — установка файлов cookie на предыдущих этапах (попытки убедиться, что запрос является естественным побочным продуктом пребывания пользователя на вашем веб-сайте) или использование капчи и файла cookie (проверка кого-либо). можно пройти тест).
Самый простой — установить куки, что на самом деле только гарантирует, что плохие программисты не пройдут, или программисты, которые не хотят тратить время на то, чтобы адаптировать свой парсер к вашему сайту.
Более проверенный и верный подход — это капча, поскольку она требует от пользователя взаимодействия, чтобы доказать, что в его жилах течет кровь.
Если изображение не является «загрузкой», а представляет собой скорее часть большего целого (скажем, просто изображение на вашем сайте), можно использовать капчу для проверки человека, прежде чем предоставить ему доступ к сайту в целом. Или, если это загрузка, она будет представлена перед разблокировкой загрузки.
К сожалению, капчи — это «боль» как для настройки, так и для конечного пользователя. Они не имеют большого смысла для общего доступа, они немного переборщили.
Для вещей общего назначения вы действительно можете ограничивать только IP-адреса, ограничения на загрузку и тому подобное. И даже там вы ничего не сможете сделать, если запросы будут раздаваться. Это перерывы, правда...
25.10.2014