2011-08-25 95 views
1

我们正在努力为访问我们网站的自动化请求的数量获得更好的指标。我们的网站提供大量数据,但也提供网页。很容易区分服务的数据文件提供的网页,但一些数据文件服务是通过网页手动请求生成的。自动请求通常使用curl或wget等程序直接获取数据。检测自动化网页请求

我们目前的做法是定期查看用户代理字符串并根据用户代理(例如wget)作出判断,这是一个自动请求。问题是新代理商一直在增加,所以我们落后于曲线。而且,其中一些以自动方式检索数据的方式通过使用用户代理字符串来伪造数据,当用户代理字符串不是时,它们声称它们是浏览器。

我想到,如果基于Apache日志条目,我们可以确定“Javascript已启用”,那么人类发送请求。这并不完美,但它会比现在更好,更便携。如果我们检测到它已关闭,我们可以将其视为自动请求。

是这样的可能吗?有没有足够的代码或库可以为我们做这项工作,并且定期维护?

回答

1

你可以保持一个白名单,而不是黑名单。如果用户无法使用浏览器xyz获取您的内容,并且您可以添加它们,用户将会通知您。

+0

我们需要让所有人都能通过,除非他们经常碰到我们,否则他们可能会使系统崩溃。 – Mark

1

如果客户端已激活JS,没有直接的方法可以使Apache检测到。

最有用的方法是查看哪些IP负责异常高的请求计数,并禁止它们。事实上,这可以是自动的,例如,通过计算IP并在IP过于活跃时发送403错误。

+0

谢谢。这是我的怀疑。我们不想禁止这些知识产权,只是能够准确地说出它是来自人工还是自动化流程。 – Mark