什么样的算法网站,包括stackexchange用于捕捉机器人? 是什么让他们有时失败并向普通用户提供人工验证? 对于在PHP上运行的网络应用程序和网站,你会建议什么才能阻止机器人和机器人攻击,甚至内容窃取?
谢谢。
答案 0 :(得分:2)
查看http://www.captcha.net/以获取简单易用的人工验证工具。
防止内容窃取非常困难,因为您希望可以向访问者提供信息。
不禁用右键点击,它只会骚扰您的用户,而不会以任何方式阻止内容窃贼。
你将无法阻挡所有僵尸程序,但你将能够实现每个停止机器人的一部分的安全层。
一些提示和提示;
我确信可以考虑更多的安全层,但直接想到这些。
答案 1 :(得分:1)
我跑过an interesting article from Princeton University,提出了自动机器人检测的好主意。这个想法很简单。人类的行为与机器不同,自动化访问通常与人类的行为不同。
本文介绍了一些可以在几个请求过程中完成的基本检查。您花了一些请求收集有关客户端浏览方式的信息,并在一段时间后获取所有变量并进行断言。要包括的事项是:
鼠标移动:机器人很可能不会使用鼠标,因此不会在浏览器中生成鼠标移动事件。你可以准备一个javascript函数,比如" onBodyMouseMove()"只要鼠标移动到页面整个区域,就会调用它。如果调用此函数,则在会话计数器中计数+1。
Javascript:一些机器人不会花时间运行javascript(即curl,wget,axel和其他命令行工具),因为它们主要发送返回有用输出的特定请求。您可以准备在加载页面后调用的函数,并在会话计数器中计数+1。
Invisble links:爬虫机器人正在吸吮不关心网站内容的机器。它们旨在单击所有可能的链接并将所有内容吸入镜像位置。您可以在网页的某个位置插入不可见的链接 - 例如,几个页面底部的空格字符由锚标记包围。人类永远不会看到这个链接,但你会得到一个请求,在会话计数器中计算+1。
CSS,图像和其他可视组件:机器人很可能会忽略CSS和图像,因为他们对渲染网页不感兴趣。您可以隐藏以* .css或* .jpg结尾的URL内的链接(您可以使用Apache的重写或servlet映射)。如果访问这些特定链接,则很可能是浏览器加载CSS和JPG以供查看。
注意:* .css,*。js,* .jpg等通常在会话中每页加载一次。您需要在末尾附加一个唯一的计数器,以便浏览器在每次请求页面时重新加载这些链接。
一旦您在几个请求过程中收集了会话中的所有信息,您就可以进行断言。例如,如果您没有看到任何javascript,css或鼠标移动活动,您可以认为它是一个机器人。您可以根据自己的需要考虑这些计数器。因此您可以根据需要以这些变量对其进行编程。如果您认为某个客户端是机器人,您可以强制他解决一些验证码,然后再继续请求。
只需注意:平板电脑通常不会创建任何鼠标移动事件。所以我还在努力弄清楚如何处理它们。建议::)