1. Как отличить бота вконтакте (который парсит страницу при клике на «Поделиться»/«Мне нравится» на этой странице)?
2. Есть ли какое-то общее свойство, объединяющее всех поисковых ботов (User-Agent'ы могут кардинально отличаться, хотелось бы еще что-нибудь)?
Объясню, откуда взялся вопрос. Используем для авторизации на сайте CAS (Central Authorization Service), который затрудняет жизнь ботам — при любом запросе мы автоматически отправляем пользователя 302-м редиректом на сервер авторизации проверяя, не авторизован ли уже этот пользователь. Это здорово мешает поисковым ботам (и ботам facebook, vk) парсить страницу. Хочется для них создать специальные условия.
Вы пишете "Вконтакте использует строку типичную для браузера.". Это значит что юзерагент официального приложения это стандартный юзерагент браузера мобильного устройства?
У вас кривая система авторизации — вам ее исправлять надо, а не ботов различать. Например, как быстрое решение, вместо принудительного редиректа можно в ифрейме показывать форму авторизации.
Была такая проблема. В итоге просто переписали систему аутентификации, чтобы не было редиректа. Обычно, если фреймворк сравнительно прямой, это не так сложно сделать.
Честно говоря, деталей собственно CAS не знаю, но всегда можно, например, сделать JS-обвязку и редиректить через скрипты. Пытаться распознать всех роботов — занятие неблагодарное. Потом вам этот список ещё и поддерживать придётся…