如何从php中的用户代理字符串中检测浏览器欺骗和机器人

use*_*508 9 php user-agent bots spoof

到目前为止,我能够通过将这些字符串与已知的用户代理进行匹配来检测用户代理字符串列表中的机器人,但我想知道使用php有什么其他方法可以做到这一点,因为我正在使用此方法检索比预期更少的机器人.

我还想了解如何检测浏览器或机器人是否使用用户代理字符串欺骗另一个浏览器.

任何建议表示赞赏.

编辑:这必须使用包含以下行的日志文件来完成:

129.173.129.168 - - [11/Oct/2011:00:00:05 -0300]"GET /cams/uni_ave2.jpg?time=1318302291289 HTTP/1.1"200 20240"http://faculty.dentistry.dal.ca /loanertracker/webcam.html""Mozilla/5.0(Macintosh; U; PPC Mac OS X 10.4; en-US; rv:1.9.2.23)Gecko/20110920 Firefox/3.6.23"

这意味着除了访问时间之外,我无法检查用户行为.

lai*_*ang 13

除了过滤用户代理字符串中的关键字之外,我还幸运地在所有页面上放置了隐藏的蜜罐链接:

<a style="display:none" href="autocatch.php">A</a>
Run Code Online (Sandbox Code Playgroud)

然后在"autocatch.php"中将会话(或IP地址)记录为bot.这个链接对用户来说是不可见的,但它的隐藏特性有望无法通过机器人实现.将style属性输出并将其放入CSS文件可能会有所帮助.


Iga*_*man 6

因为,如前所述,您可以欺骗用户代理和IP,这些不能用于可靠的机器人检测.

我在一家安全公司工作,我们的机器人检测算法看起来像这样:

  1. 第1步 - 收集数据:

    一个.交叉检查用户代理与IP.(两者都必须是正确的)

    湾 检查标题参数(缺少什么,订单是什么等等)

    C.检查行为(早期访问和遵守robots.txt,一般行为,访问的页数,访问率等)

  2. 第2步 - 分类:

    通过交叉验证数据,机器人被分类为"好","坏"或"可疑"

  3. 第3步 - 积极挑战:

    可疑机器人遇到以下挑战:

    一个.JS Challenge(可以激活JS吗?)

    湾 Cookie挑战(可以接受coockies吗?)

    C.如果仍然没有定论 - > CAPTCHA

这种过滤机制非常有效,但我并不认为它可以由一个人甚至是非专业的提供者复制(一方面,安全团队需要不断更新挑战和机器人数据库).

我们以Botopedia.org的形式提供某种"自己动手"的工具,我们的目录可以用于IP /用户名交叉验证,但是对于真正有效的解决方案,您将不得不依赖于专门的服务.

有几个免费的机器人监控解决方案,包括我们自己的,大多数将使用我上面描述的相同策略(或类似).

GL


小智 5

除了比较用户代理之外,您还将保留活动日志并查找机器人行为。通常,这将包括检查/robots.txt并不加载图像。另一个技巧是询问客户端是否有Java脚本,因为大多数机器人不会将其标记为已启用。

但是,当心,您很可能会偶然地得到一些真正的人。