.htaccess允许来自特定用户代理的所有用户

cbeh67ev  于 2022-12-27  发布在  其他
关注(0)|答案(6)|浏览(155)

我有一个网站,我正在开发,也将被拉到一个Web应用程序。我有以下代码在我的.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>
s71maibg

s71maibg1#

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

hsvhsicv

hsvhsicv2#

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

SetEnvIf User-Agent .*Wget* wget

Order deny,allow
Deny from all
Allow from env=wget
gkn4icbw

gkn4icbw3#

Allow fromRewrite*是来自两个不同Apache模块的指令。
第一个是mod_authz_host,另一个来自mod_rewrite
您可以使用mod_rewrite来执行您想要的操作:

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

qacovj5a4#

如果你不想使用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>
bejyjqdl

bejyjqdl5#

我使用了类似sys0dm1n的答案的版本。
这是我的.htaccess文件。它允许Google Sheets访问我服务器上的一个目录。

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文件,查看需要允许或阻止哪个用户代理。

shstlldc

shstlldc6#

我只想允许一个特定的用户代理,而不是试图阻止所有
你好
这里你需要考虑的是一些机器人(特别是"大"的更突出的机器人)会使用几个用户代理来访问你的网站。例如,一个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%免费的,对所有人开放,你可以用它来找到你想要允许的所有机器人的完整用户代理列表。
如果需要,它还具有反向IP功能,用于机器人验证,因为正如我们的recent study of Fake Googlebot visits所示,一些垃圾邮件发送者甚至网络攻击者将使用合法的机器人签名来轻松进入您的网站。
希望这个有用。

相关问题