0

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

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

4

4 回答 4

1

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

于 2013-04-19T10:24:00.793 回答
1

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

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

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

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

注意:我绝不隶属于 cloudflare :)

于 2013-04-19T10:37:02.653 回答
0

只需检查“User-Agent”标题并将其与最常见的标题(http://www.user-agents.org/)进行比较!像这样的东西:

request.getHeader("User-Agent").contains(...)
于 2013-04-19T10:17:37.363 回答
-1

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

于 2013-04-19T10:19:55.437 回答