Apache 是否有任何模块可以阻止根本不请求图形元素(jpg、gif、css)的客户端?当然,这必须通过分析许多成功的 http 请求并在请求数超过 X 且图形下载比例低于 X % 时进行阻止来实现。
答案1
不。HTTP 客户端将首先请求 HTML 内容,然后对其进行处理,请求按照指定方式呈现页面所需的其他对象。
如果 HTTP 客户端已经缓存了图形元素,那么完全可以不请求任何图形元素。
无论你尝试做什么,都不会成功。
答案2
这不是一个好主意。代理可以将请求发送到各种上游代理,缓存可能会阻止下载某些资源,使用受限资源(如手机)的用户可能会禁用图片下载,而途中的其他技术问题也会阻止您做任何您想做的事情。
如果您无论如何都想继续,那么您将无法单独使用 Apache 来完成此操作,但您可以在日志解析器的帮助下完成此操作。
你必须解析特定 IP 地址发出的每个请求的日志文件,统计所有文本请求(HTML、脚本、CSS、XML)和图形元素。如果文本/图形的比例低于某个阈值,您可以通过将客户端的 IP 添加到 .htaccess 文件中来阻止该客户端:
Order Deny,Allow
Deny from 50.60.70.80
Deny from 80.70.60.50
请注意,如果一些受阻如果用户位于 NAT 或代理后面,您将阻止整个网络访问您的站点。
您可以编写代码mod_rewrite
来创建更细粒度的阻止。获取 IP 地址、用户代理和自定义 cookie 的组合。阻止此组合。
本网站有 8 种方法可以将用户列入黑名单。这很有用。
答案3
除了这里的其他答案之外,请注意,仍然有人使用基于文本的浏览器,例如 lynx 或 w3m,而这些客户端永远不会下载图像。