Подтвердить что ты не робот

.htaccess Разрешить все от конкретного агента пользователя

У меня есть веб-сайт, который я разрабатываю, который также будет загружен в веб-приложение. У меня есть следующий код в моем файле .htaccess, чтобы предотвратить доступ от ANYONE, который не находится на моем разрешенном 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. Помощь?

UPDATE

Я нашел код ниже, чтобы блокировать определенные пользовательские агенты... Вместо этого я хотел бы сказать "if NOT myuseragent, а затем заблокировать".

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

Ответ 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 и SetEnvIfNoCase

Ответ 2

Я просто хочу разрешить ОДИН КОНКРЕТНЫЙ пользовательский агент, а не пытаться заблокировать все

Здесь моя конфигурация позволяет только wget:

SetEnvIf User-Agent .*Wget* wget

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

Ответ 3

Allow from и Rewrite* являются директивами двух разных модулей Apache.

Первый - mod_authz_host, а другой - mod_rewrite.

Вы можете использовать mod_rewrite, чтобы сделать то, что вы хотите:

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

Ответ 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

Я просто хочу разрешить ОДИН КОНКРЕТНЫЙ пользовательский агент, а не пытаться заблокировать все

Привет

Что вам нужно учитывать, так это то, что некоторые боты (особенно "более крупные" более известные) будут использовать несколько пользовательских агентов для доступа к вашему сайту. Например, 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.

То же самое касается Yahoo и других.

Только на этой неделе наша компания (Incapsula) запустила Botopedia.org - справочник ботов сообщества-источников. Он на 100% свободен и открыт для всех, и вы можете использовать его, чтобы найти полный список пользовательских агентов для всех ботов, которые вы хотите разрешить.

При необходимости он также имеет функцию обратного IP-адреса для проверки ботов, поскольку, как показало наше недавнее исследование посещений Fake Googlebot, некоторые спамеры и даже кибер-атакующие будут использовать законные бот-подписи, чтобы облегчить им путь на ваш сайт.

Надеюсь, что это поможет.