到目前为止,我能够通过将这些字符串与已知的用户代理进行匹配来检测用户代理字符串列表中的机器人,但我想知道还有哪些其他方法可以使用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“
这意味着除了访问时间之外,我无法检查用户行为。
答案 0 :(得分:13)
除了过滤用户代理字符串中的关键字之外,我还幸运地在所有页面上添加了隐藏的蜜罐链接:
<a style="display:none" href="autocatch.php">A</a>
然后在“autocatch.php”中将会话(或IP地址)记录为机器人。这个链接对用户来说是不可见的,但它的隐藏特性有望无法通过机器人实现。将style属性输出并将其放入CSS文件可能会有所帮助。
答案 1 :(得分:6)
因为,如前所述,您可以欺骗用户代理&amp; IP,这些不能用于可靠的机器人检测。
我为一家安全公司工作,我们的机器人检测算法看起来像这样:
第1步 - 收集数据:
一个。交叉检查用户代理与IP。 (两者都必须是正确的)
湾检查标题参数(缺少什么,订单是什么等等)
℃。检查行为(早期访问和遵守robots.txt,一般行为,访问的页数,访问率等)
第2步 - 分类:
通过交叉验证数据,机器人被分类为“好”,“坏”或“可疑”
第3步 - 积极挑战:
可疑机器人遇到以下挑战:
一个。 JS Challenge(可以激活JS吗?)
湾Cookie挑战(可以接受coockies吗?)
℃。如果仍然没有定论 - &gt; CAPTCHA
这种过滤机制非常有效,但我并不认为它可以被一个人甚至一个非专业的提供者复制(一方面,安全团队需要不断更新挑战和僵尸DB)。
我们以Botopedia.org的形式提供某种“自己动手”的工具,我们的目录可以用于IP /用户名交叉验证,但是对于真正有效的解决方案,您将不得不依赖专业服务。
有几个免费的机器人监控解决方案,包括我们自己的,大多数将使用我上面描述的相同策略(或类似的)。
GL
答案 2 :(得分:4)
除了比较用户代理之外,您还会记录活动并查找机器人行为。通常这将包括检查/robots.txt而不是加载图像。另一个技巧是询问客户端是否有javascript,因为大多数机器人都不会将其标记为已启用。
但是,请注意,你可能会意外地得到一些真正有人的人。
答案 3 :(得分:2)
不可以欺骗用户代理,因此不会信任它们。
除了检查Javascript或图像/ css加载外,您还可以测量页面加载速度,因为机器人通常会抓取您的网站的速度比任何人类访问者都要快得多。但这仅适用于小型网站,在共享的外部IP地址(大型公司或大学校园)背后有大量访问者的热门网站可能会以类似机器人的速度访问您的网站。
我想你也可以测量它们加载的顺序,因为机器人会按照先到先得的爬行顺序进行爬行,因为人类用户通常不适合这种模式,但追踪的内容有点复杂
答案 4 :(得分:1)
您的问题特别涉及使用用户代理字符串进行检测。正如许多人所说,这可能是欺骗性的。
要了解欺骗行为的可能性,并了解检测的难度,最好建议您使用cURL学习PHP中的艺术。
本质上使用cURL几乎所有可以在浏览器(客户端)请求中发送的内容都可以用IP的明显例外来欺骗,但即使在这里,确定的欺骗者也会将自己隐藏在代理服务器后面以消除您对它们的检测IP
不言而喻,每次发出请求时使用相同的参数都可以检测到欺骗者,但是使用不同的参数进行旋转将使得在真正的流量日志中检测到任何欺骗者非常困难。 / p>