我的要求是知道对我的网页的请求是真正的请求(通过浏览器)还是通过某些 Java 程序生成的自动请求。我在哪里可以区分请求类型?
实际上,我需要阻止从程序生成的所有请求,从而寻找差异。
我的要求是知道对我的网页的请求是真正的请求(通过浏览器)还是通过某些 Java 程序生成的自动请求。我在哪里可以区分请求类型?
实际上,我需要阻止从程序生成的所有请求,从而寻找差异。
对此没有 100%、万无一失的解决方案。许多人建议使用User-Agent
标题,但它很容易被伪造。当您(可能手动)检测到假客户端时,您可以添加 IP 过滤器。但这只是一场猫捉老鼠的游戏。如果您想限制对您网站的访问,也许您最好建立一些真正的授权?
没有万无一失的方法可以做到这一点。对我来说最有效的解决方案是:
在 Web 服务器级别实施用户代理检查(是的,这不是万无一失的)。目标是阻止人们用来访问 URL 的已知/常见程序。像 libperl、httpclient 等。您应该能够从访问日志中构建这样的列表。
根据您的情况,您可能希望也可能不希望搜索引擎蜘蛛抓取您的网站。相应地将 robots.txt 添加到您的服务器。并非所有蜘蛛/爬虫都遵循 robots.txt 的说明,但大多数都遵循。
使用专门的工具来检测对您网站的异常访问。像https://www.cloudflare.com/这样的东西可以跟踪对您网站的所有访问,并将其与不断增长的已知和可疑机器人数据库相匹配。
注意:我绝不隶属于 cloudflare :)
只需检查“User-Agent”标题并将其与最常见的标题(http://www.user-agents.org/)进行比较!像这样的东西:
request.getHeader("User-Agent").contains(...)
您可以检查用户代理。搜索 java 用户代理检测。