拒绝使用 mod_proxy 的 apache 中的用户代理

拒绝使用 mod_proxy 的 apache 中的用户代理

我想阻止网络爬虫使用配置为将所有请求转发到 ProxyPass 的 Apache 站点。我尝试使用 BrowserMatchNoCase 指令来设置环境变量 block_spider。当我将 Web 浏览器中的用户代理更改为伪装成搜索机器人时,它仍然允许我访问该站点。

BrowserMatchNoCase "^bingbot" block_spider
BrowserMatchNoCase "^msnbot" block_spider
    <Proxy *>
      Order deny,allow
      Deny from env=block_spider
      Allow from all
    </Proxy>
RewriteEngine On
RewriteOptions Inherit

答案1

这真是令人尴尬。我一直以为“拒绝、允许”的顺序意味着列表被视为 ACL 或防火墙规则,但事实并非如此。最后一条规则是“允许所有人”,它覆盖了我拒绝的所有内容。正确的配置是这样的:

    BrowserMatchNoCase "^bingbot" block_spider
    BrowserMatchNoCase "^msnbot" block_spider
    <Proxy *>
      Order Allow,Deny
      Allow from all
      Deny from env=block_spider
    </Proxy>

相关内容