如何知道我的网站的URL请求是来自浏览器还是来自自动程序

时间:2013-04-19 10:15:04

标签: java httpwebrequest httprequest webpage spam-prevention

我的要求是知道对我的网页的请求是真实的请求(通过浏览器)还是通过某些Java程序生成的自动请求。我在哪里可以区分请求类型?

实际上我需要阻止从程序生成的所有请求,从而搜索差异。

4 个答案:

答案 0 :(得分:1)

对此没有100%的傻瓜式解决方案。许多人建议使用User-Agent标题,但它很容易被伪造。当您(可能是手动)检测假客户端时,您可以添加IP过滤器。但它只是一个猫捉老鼠的游戏。如果您想限制对您网站的访问,也许您最好在某些真正的授权下建立?

答案 1 :(得分:1)

没有万无一失的做法。 对我来说最有效的解决方案是:

  1. 在Web服务器级别实施用户代理检查(是的,这不是万无一失的)。目标是阻止人们用来命中URL的已知/常用程序。像libperl,httpclient等。您应该能够从访问日志中构建这样的列表。

  2. 根据您的具体情况,您可能希望也可能不希望搜索引擎蜘蛛抓取您的网站。相应地将robots.txt添加到您的服务器。并非所有蜘蛛/爬虫都遵循robots.txt的说明,但大多数都是这样做的。

  3. 使用专门的工具检测对您网站的异常访问。像https://www.cloudflare.com/这样可以跟踪您网站的所有访问权限,并将其与不断增长的已知和可疑机器人数据库进行匹配。

  4. 注意:我与cloudflare无关::)

答案 2 :(得分:0)

只需选中“User-Agent”标题,然后将其与最常见的标题进行比较(http://www.user-agents.org/)!这样的事情:

request.getHeader("User-Agent").contains(...)

答案 3 :(得分:-1)

您可以检查用户代理。搜索java用户代理检测。

相关问题