Блокировка пользовательского агента - PullRequest
0 голосов
/ 29 ноября 2018

Может кто-нибудь сказать мне, как заблокировать следующий пользовательский агент с помощью перезаписи мода apache2 или любым другим способом,

Mozilla/5.0 (Windows NT 6.1; WOW64; rv:63.0) Gecko/20100101 Firefox/A1E1

1 Ответ

0 голосов
/ 30 ноября 2018

Чтобы заблокировать этот конкретный пользовательский агент в Apache vHost с помощью mod_rewrite, вы можете сделать что-то вроде этого:

RewriteEngine On

RewriteCond %{HTTP_USER_AGENT} "=Mozilla/5.0 (Windows NT 6.1; WOW64; rv:63.0) Gecko/20100101 Firefox/A1E1"
RewriteRule . - [F]

Это служит 403 Запрещено для любого запроса от этого точного пользовательского агента.

Префикс CondPattern (2-й аргумент директивы RewriteCond) с = делает его лексикографическим сравнением строк (т.е. точным соответствием), а не регулярным выражением.Окружающие двойные кавычки обязательны, поскольку строка, с которой мы сопоставляем, содержит пробелы.

Флаг F эквивалентен R=403.Флаг L не требуется, поскольку он подразумевается при возврате статуса не-3xx (или 2xx).

ОБНОВЛЕНИЕ: мы можем добавитьподстановочный знак, такой как последняя часть Mozilla/5.0 (Windows NT 6.1; WOW64; rv:63.0) Gecko/20100101 Firefox/A1E1, постоянно меняет /A1E1

Да, но вам нужно заменить приведенное выше CondPattern на регулярное выражение.

Например:

RewriteCond %{HTTP_USER_AGENT} "^Mozilla/5\.0 (Windows NT 6\.1; WOW64; rv:63\.0) Gecko/20100101 Firefox/"

Вышеуказанное соответствует любому пользовательскому агенту, который запускает Mozilla/5.0 (Windows NT 6.1; WOW64; rv:63.0) Gecko/20100101 Firefox/, оставляя конец переменной user-agent.

Обратите внимание, что, поскольку теперь это регулярное выражение, любые специальные метасимволы необходимо экранировать обратной косой чертой.В этом примере это могут быть только точки (.).Окружающие двойные кавычки все еще можно использовать, чтобы избежать необходимости выходить из пробелов.

...