我们正在尝试为访问我们网站的自动请求数量制定更好的指标。我们的网站提供大量数据,但也提供网页。可以很容易地区分所提供的网页和所服务的数据文件,但是一些服务的数据文件是通过网页手动请求生成的。自动请求通常使用curl或wget等程序直接获取数据。
我们目前的做法是定期查看用户代理字符串,并根据用户代理(例如wget)判断这是一个自动请求。问题是新的代理商一直在增加,所以我们落后于曲线。但是,其中一些以自动方式检索数据的人通过使用用户代理字符串来伪装它,声称他们不是浏览器。
如果我发现基于Apache日志条目,我们可以确定“Javascript已开启”,然后人发送了请求。它并不完美,但它比我们现在拥有的更好,更便携。如果我们检测到它已关闭,我们可以将其视为自动请求。
这样的事情可能吗?是否有足够智能的代码或库可以为我们完成这项工作,并定期维护?
答案 0 :(得分:2)
答案 1 :(得分:1)
您可以维护白名单而不是黑名单。如果使用浏览器xyz无法获取您的内容,用户会通知您,并且您可以添加它们。
答案 2 :(得分:1)
如果客户端已激活JS,则无法直接检测Apache。
最有用的方法是只查看哪些IP导致异常高的请求计数,并禁止它们。事实上,这可以是自动化的,例如计算IP并在IP过于活跃时发送403错误。