机器人 - 检测JavaScript事件

时间:2011-09-30 05:42:18

标签: javascript bots

Bots可以找出网页的JavaScript部分吗?他们是否有可能通过网页的源代码进行解析(我猜测动态脚本将显示在源代码中)并确定javascript事件。

另外,我很好奇机器人除了解析源代码之外还能以其他方式做到这一点。例如,假设有一个脚本使用随机字符串填充文本字段,只要用户单击按钮即可。通过仅解析页面源,机器人无法确定字符串将是什么(因为只有一个rand()函数)。因此,机器人可以以任何方式猜测输入到文本字段中的字符串的实际内容。

P.S:我是研究网络机器人检测技术的研究生。

2 个答案:

答案 0 :(得分:5)

首先,机器人甚至不太可能在您的页面上执行任何JavaScript。在互联网上拥有如此众多的网页,通常更容易扫描更多的网页,而不是试图解决仅通过javascript公开内容的网页上的问题。

其次,通用机器人不会知道您的网页是如何工作的,也不会知道在对您的网页进行某些操作之前需要做什么。他们抓住并解析他们寻找感兴趣的东西。如果您的脚本中的URL是完整的URL,那么他们可能足够聪明地找到它。但是,如果URL是从脚本中的片段构建的,那么它几乎不可能比任何通用机器人都能够确定您的代码将URL和它的内容组合在一起。

第三,特定的攻击者可以分析您的页面,弄清楚它是如何工作的,并设计一种绕过某些用户操作的方法。但是,只有当某些攻击者决定专门攻击/规避您的网站时才会这样做。没有专门针对您网站的代码的通用机器人将无法做到这一点。这就是验证码类型操作进入图片的地方,因为脚本很难“读取”图像以从中获取代码然后必须提交给服务器 - 所以即使是为特定目的而构建的机器人也无法真正解决验证码类型的问题。他们可以使用真实的人来解决验证码问题,但现在它开始花钱,很少有网站值得这样做。有很多这些障碍的想法只是让绕过它们的成本超过了进入的好处。窥探是为了赚钱,所以当它花费超出它们的成本时,它们会以另一种方式运行。

第四,你问过“事件”。请记住,有程序化事件(计时器,页面加载事件等),还有用户事件。仅当存在导致它们的浏览器或者在类似浏览器的环境中执行javascript代码时才会发生程序化事件。用户事件(键,点击,鼠标移动等)仅在存在与网页交互的类似浏览器的环境中并且如果有实际用户创建这些事件时才会发生。当机器人读取您的页面时,这些通常都不存在。他们使用服务器端脚本来获取页面并解析它。他们可以通过编程方式驱动浏览器加载页面并创建一些程序化事件,但仍然没有用户在场创建任何用户事件。如果机器人知道它应该模拟的用户事件(例如按钮点击),它可以驱动受控浏览器这样做,但在那时,这不是任何方式的通用机器人,而是专门设计的机器人攻击你的网站。如果有人想要解决这个问题,那么设计一个如何从您的站点请求所需内容(因此它可以请求它的方向)而不是尝试模拟实际的浏览器页面可能要容易得多。


如果您想尝试检测(从您的网络服务器)访问您网页的内容可能是机器人还是人类,您所能做的就是从一个页面到下一个页面研究他们的访问模式。机器人将以某种程序化的方式“抓取”您的网站。

  • Bots通常会有相当规律的访问模式(每次访问页面之间有一定的时间)。真实用户可能具有非常不同的访问模式。
  • Bots通常不会与您网页上的控件(按钮,字段等等)进行交互,并且不会导致仅在使用这些控件时发生的事情发生,因此当这些控件无法以编程方式创建的URL时将被访问使用。
  • Bots不会知道如何按照页面上的书面说明进行操作。他们只会尝试访问他们在页面中找到的直接链接。
  • Bots可能会关注从未见过的链接 - 人们通常不会这样做。因此,如果您看到从主页面到页面中的链接的快速访问模式,但始终不可见(CSS样式规则显示:无),那么人类不太可能这样做。它可能是一些程序代理(例如机器人)。所以,你可以设置像人类不会去的机器人的陷阱。

答案 1 :(得分:0)

没有机器人无法猜出javascript生成的随机字符串。