Приветствую! Собственно требуется определить, до отдачи php страницы целиком, не программой ли скачивается в данный момент сайт.
Сайт всегда качается программой, ибо человеческий мозг не приспособлен для восприятия волн вай-фая в чистом виде.
Задача, которая стоит передо мной не включает изучение работы мозга, так что ограничусь определением различия между посетителем сайта и специальной программой для скачивания сайта и использованием его впоследствии оффлайн или еще как-то.
Технически невозможно. Исключение составляет вариант с предварительным прохождением посетителем теста Тьюринга до отдачи контента страницы, если это вас как-то обнадежит, тс.
А что в вашем понимании пользователь ? User-agent ? Хотите чтобы сайт не скачивался программой - капчуйте на каждый чих.
Навскидку, например, что с одного IP большая частота посещений за час. На сайте больше 1000 страниц. Переход по кнопке без наведения на неё курсором? Я так понимаю, что моднее делать программы для скачивания, чем их вычислять, но тем не менее прошу мне помочь.
просто вариант как уже писали выше, через User-agent, но это не 100%. ну а насчет перехода не наводя мышь, ну надо писать на JS такую штуку, в принципе можно, не так уж и сложно, правда геморройно.
Продвинутые боты умеют имитировать мышку везде, где это возможно. С другой стороны, тупо запрещать пользоваться сайтом, если чел пару раз кликнул Tab и потом Enter. Такие сайты как Google анализируют поведение. Можно положиться на ИНС: обучать её по нескольким параметрам (частота переходов, время просмотра, скроллинг и т.д.), и если клиент выбивается из группы Люди, то требовать с него каждый раз каптчу.
А как насчёт перехода по скрытой ссылке, например картинка прозрачная размер 1px, посетитель врятли перейдет по такой, а парсер наткнется
А тебя какой бот интересует? Поисковик перейдет, ибо он всё скачивает, а если он выполняет конкретные действия, то зачем ему левые ссылки?
Теоретизм подсказывает что поисковикам это не понравится, хз. Мне кажется достаточно капчи через 15-20 запросов в минуту. Если не поможет это, то ничего не поможет. Ну окромя всяких сервисов предлагающих прогон через их фильтр, а потом доступ к сайту.
Хочу защитить сайт от скачивания спецпрогой. Она проходит по всем ссылкам. Так попытаться вычислить её. Добавлено спустя 1 минуту 42 секунды: Нет, но помчался делать =)
Давай закончим на том, что достаточно много людей, в том числе и я, уверенно парсят яшу в любых местах, а что до тебя, то как бы ты не пытался вычислить и подстроить алгоритм, всегда найдётся свободная прокся.
Проблема в том, что бота можно сделать на основе расширения для хрома. Оно пишется легко и имеет доступ к DOM через JS (так работет адблок и т.д.), так что все JS отработают, сложносочиненные кнопки проявятся и т.д.
Если вопрос чист сторить инфу с сайта, то кроме каких-то невероятных ботов существуют вполне реальные и навороченные оффлайн-браузеры.
Ладно, вопрос поставлю по-другому, как сделать, чтобы контент был скачан, но локально не запускался? В моём случае сайт скачивают, чтобы пользовать для себя на винчестере. Другую тему не нужно заводить для этого?
ну разве что сделать какую-то самодостаточную программу которая уничтожится если будет запущена вне сайта. текст который передан от сервера к клиенту - уже у клиента. он уже может им пользоваться. когда захочет.
Например файл определяет, что запущен локально и удаляет себя. Только я не уверен, что такое можно сделать с помощью js...
Запилить замудренный rich-client на чем-то вроде React. Если изобретешь таблетку от пиратства, толкни Михалкову за лиард.