а 100% варианта и нету... если у ТС задача определять поисковых ботов, то у более менее известных ПМ как правило есть стандартная сигнатура для $_SERVER['HTTP_USER_AGENT'] и принадлежность тому либо иному проверяется на вхождение этой сигнатуры в $_SERVER['HTTP_USER_AGENT'].
100% только ip. Но имейте ввиду, что у одного поисковика не один ip адрес и они могут меняться время от времени.
и того способ тоже не 100%, походу в web очень тяжело что-то сказать о пользователе со 100% вероятностью, ибо все это можно подменить. Можно просто проверить возможный максимум каких-то параметров, которым можно доверять, и все время добавлять разные механизмы проверок информации что бы что-то знать о пользователе..
а если проверять браузер через который смотрели и если браузер не известен, то значит бот а как сервисы статистики ботов определяют?
тут сигнатуры http://www.fromtlt.ru/news/3/5/ для http_user_agent погуглиш найдёш для браузеров - т.е. обычных пользователей (не факт!) 100% ничего не узнаеш прими это как есть
а может проверять http_user_agent на наличие записи о Windows - заметил, что у ботов версия винды не указана
USER AGENT можно указать любой, с IP непонятно как определить откуда следует ожидать поисковых ботов, REFFERER не все браузеры проставляют, по винде тоже понятно почему не стоит проверять. А можно поинтересоваться, зачем вам это нужно? Обычно поисковые боты проставляют свой user agent, так что я бы склонялся к этому варианту. Но опять же вопрос, зачем? Если вы хотите запретить индексировать определенные страницы вашего сайта, я бы предложил прописать эти страницы в robots.txt ну и вообще, двигаться в этом направлении
Определить можно только тех ботов, кто этого хочет, яндекс спайдер, гуголь спайдер итд, они не скрываются, а вот если я напише паука который эмулирует все на 100% как у броузера, тогда уж извини, никак не определишь, я это или паук))