检测访问者是否是浏览器而不是爬虫

Kar*_*ten 2 c# browser http

如果网页用户是浏览器,我将如何检测服务器端?

检测到这一点的原因是,我正在存储有关访问页面的统计信息,并且当用户是爬虫时我不想存储任何统计信息.所以我不是要试图检测哪个浏览器供应商.我只想要一个布尔答案,用户是浏览器.

我假设答案与用户代理标题相关联,但是许多可能的值对我来说太难以理解了.我该如何检测它?一个90%的解决方案,我只检测最流行的Top5浏览器就足够了.

我正在使用C#ASP.Net,但我猜其他语言和框架中的大多数解决方案都可以翻译.

Row*_*wan 6

这段代码并非详尽无遗,但为您提供了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
}
?>
Run Code Online (Sandbox Code Playgroud)

  • 我不认为这会起作用,所有用户代理都从Mozilla开始(漫长而悲伤的故事),包括许多爬虫. (3认同)