Как я обнаружил бы серверную страницу, если пользователь веб-страницы является браузером?
Причиной обнаружения этого является то, что я храню статистику посещаемых страниц, и я не хочу сохранять статистику, когда пользователь является искателем. Поэтому я не пытаюсь определить, какого поставщика браузера. Мне нужен только логический ответ, пользовательский браузер.
Я предполагаю, что ответ связан с заголовком user-agent, но многочисленные возможные значения слишком велики для меня, чтобы понять. Как я могу его обнаружить? 90% -ное решение, в котором я обнаружил только самый популярный браузер Top5, будет достаточно хорошим.
Я использую С# ASP.Net, но я предполагаю, что большинство решений на других языках и фреймворках могут быть переведены.
Этот код ни в коем случае не является исчерпывающим, но дает вам базовое основание в PHP. Я не могу гарантировать, что некоторые из них не проскользнут через сеть, но это должно уловить большинство браузеров и игнорировать большинство ботов.
<?php
// Regular expression to match common browsers
$browserlist = '/(opera|aol|msie|firefox|chrome|konqueror|safari|netscape|navigator|mosaic|lynx|amaya|omniweb|avant|camino|flock|seamonkey|mozilla|gecko)+/i';
// Test for browsers
if (preg_match($browserlist, $_SERVER['HTTP_USER_AGENT'])) {
// ...is a browser
} else {
// ...is not a browser
}
?>
strtolower
пользовательский агент сначала .. просто исправить
это даст вам 99% -ную точность.
Regex.IsMatch(Request.UserAgent, @"bot|crawler|baiduspider|80legs|ia_archiver|voyager|curl|wget|yahoo! slurp|mediapartners-google", RegexOptions.IgnoreCase);
В моем ответе я привел больше решений:
Если вы используете PHP, попробуйте $_SERVER['HTTP_USER_AGENT']
или get_browser()
.
Здесь класс, доступный для загрузки, который делает этот процесс невероятно легким. Пример использования:
$browser = new Browser();
if( $browser->getBrowser() == Browser::BROWSER_FIREFOX && $browser->getVersion() >= 2 ) {
echo 'You have FireFox version 2 or greater';
}
Я не уверен, почему вы это делаете.
Однако вы не хотите даже притворяться, что можете говорить между человеком и роботом, основанным на заголовке User-agent
. Возможно, вам удастся добиться успеха в анализе шаблона и времени запросов.
Perl имеет модуль HTTP:: BrowserDetect. Согласно документам, у этого есть метод, который проверяет, является ли пользовательский агент роботом. Я думаю, что все, что не является роботом, вероятно, является браузером.
Если вам нужно решить, следует ли возвращать (скажем) исходный текст для script по сравнению с HTML для браузера, возможно, вам следует проверить Accept- Кодирование заголовка запроса?