【问题标题】:.htaccess Allow All from Specific User Agent.htaccess 允许所有来自特定用户代理
【发布时间】:2012-08-05 13:48:36
【问题描述】:

我正在开发一个网站,该网站也将被拉入网络应用程序。我的.htaccess 文件中有以下代码,以防止任何不在我允许的 IP 上的人访问:

Order deny,allow
Deny from all
AuthName "Restricted Area - Authorization Required" 
AuthUserFile /home/content/html/.htpasswd 
AuthType Basic
Require valid-user
Allow from 12.34.567.89 
Satisfy Any

问题: 我想添加一个Allow from 规则,该规则还允许特定的 HTTP 用户代理访问该站点。

如果不是用户代理,我发现此代码可以重定向:

RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} !=myuseragent
RewriteRule ^files/.*$ / [R=302,L]

但我似乎无法弄清楚如何将其变成Allow from 规则。帮忙?

更新

我发现下面的代码可以阻止特定的用户代理...我想说“如果不是 myuseragent,则阻止。”

<IfModule mod_rewrite.c>
SetEnvIfNoCase ^User-Agent$ .*(libwww-perl|aesop_com_spiderman) HTTP_SAFE_BADBOT
Deny from env=HTTP_SAFE_BADBOT
</ifModule>

【问题讨论】:

    标签: .htaccess user-agent


    【解决方案1】:
    SetEnvIfNoCase User-Agent .*google.* search_robot
    SetEnvIfNoCase User-Agent .*yahoo.* search_robot
    SetEnvIfNoCase User-Agent .*bot.* search_robot
    SetEnvIfNoCase User-Agent .*ask.* search_robot
    
    Order Deny,Allow
    Deny from All
    Allow from env=search_robot
    

    Htaccess SetEnvIf and SetEnvIfNoCase Examples

    【讨论】:

    • 我也找到了您刚刚发布在 SO 上的代码...我只想允许一个特定的用户代理而不是试图阻止所有用户代理(我不想错过一个机会.) 有什么想法吗?
    • 以防万一有人想知道:是的,这也可以直接在 apache vhost conf 文件中工作(至少在 Apache 2.4 上) - 我在 指令之前有“SetEnvIfNoCase ...”和“允许从...”里面。
    【解决方案2】:

    我只想允许一个特定的用户代理,而不是试图 全部屏蔽

    这是我只允许 wget 的配置:

    SetEnvIf User-Agent .*Wget* wget
    
    Order deny,allow
    Deny from all
    Allow from env=wget
    

    【讨论】:

      【解决方案3】:

      Allow fromRewrite* 是来自两个不同 Apache 模块的指令。

      第一个是mod_authz_host,另一个是mod_rewrite

      你可以使用mod_rewrite做你想做的事:

      RewriteEngine on
      RewriteCond %{HTTP_USER_AGENT} !=myuseragent
      RewriteRule .* - [F,L]
      

      【讨论】:

      • 那么使用您发布的代码,这适用于所有目录吗?或者我需要在每个目录中放置一个带有此代码的.htaccess 文件吗?
      • 这很好,我可以使用RewriteCond %{HTTP_USER_AGENT} !(Mozilla),它只允许那些使用浏览器用户代理/非机器人的人
      【解决方案4】:

      如果你不想使用 mode_rewrite,在 Apache 2.4 中你可以使用类似这样的东西:

      <Location />
                      AuthType Basic
                      AuthName "Enter Login and Password to Enter"
                      AuthUserFile /home/content/html/.htpasswd
                      <If "%{HTTP_USER_AGENT} == 'myuseragent'">
                      Require all granted
                      </If>
                      <Else>
                      Require valid-user
                      Require ip 12.34.567.89
                      </Else>
      </Location>
      

      【讨论】:

        【解决方案5】:

        我使用了类似 sys0dm1n 的答案的版本。

        这是我的 .htaccess 文件。它允许 Google 表格访问我服务器上的目录。

        AuthType Basic
        AuthName "Password Protected Area"
        AuthUserFile /var/tools/.htpasswd
        <If "%{HTTP_USER_AGENT} == 'Mozilla/5.0 (compatible; GoogleDocs; apps-spreadsheets; +http://docs.google.com)'">
        Require all granted
        </If>
        <Else>
        Require valid-user
        </Else>
        

        转到 apache 文件夹中的 access.log 文件,查看您需要允许或阻止哪个 User-Agent。

        【讨论】:

          【解决方案6】:

          我只想允许一个特定的用户代理,而不是试图阻止所有

          您需要在这里考虑的是,一些机器人(尤其是“更大”更突出的机器人)将使用多个用户代理来访问您的网站。 例如,Googlebot(爬虫)可以使用所有这些不同的用户代理:

          Googlebot-Image/1.0 
          Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
          DoCoMo/2.0 N905i(c100;TB;W24H16) (compatible; Googlebot-Mobile/2.1;+htt://www.google.com/bot.html)
          GoogleProducer 
          SAMSUNG-SGH-E250/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0 (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html)
          Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_1 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8B117 Safari/6531.22.7 (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html)
          Google-Site-Verification/1.0
          Google-Test
          Googlebot/2.1 (+http://www.google.com/bot.html) 
          

          我并不是在谈论 Google Plus 和 Google 使用的许多其他机器人。

          雅虎和其他公司也是如此。

          就在本周,我们公司(Incapsula)推出了Botopedia.org - a Community-Sourced bot directory。它是 100% 免费且对所有人开放的,您可以使用它来查找您想要允许的所有机器人的完整用户代理列表。

          如果需要,它还具有用于 Bot 验证的反向 IP 功能,因为正如我们的 recent study of Fake Googlebot visits 所示,一些垃圾邮件发送者甚至网络攻击者会使用合法的 bot 签名来轻松进入您的网站。

          希望这会有所帮助。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2014-07-15
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-11-02
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多