есть способ заблокировать некоторый пользовательский агент через php-скрипт? Пример по mod_security
SecFilterSelective HTTP_USER_AGENT "Agent Name 1" SecFilterSelective HTTP_USER_AGENT "Agent Name 2" SecFilterSelective HTTP_USER_AGENT "Agent Name 3"
Также мы можем заблокировать их с помощью htaccess или robots.txt на примере, но я хочу в php. Любой пример кода?
Мне нравится @ Nerdling ответ, но в случае, если это полезно, если у вас есть очень длинный список пользовательских агентов, которые необходимо заблокировать:
$badAgents = array('fooAgent','blahAgent', 'etcAgent'); foreach($badAgents as $agent) { if(strpos($_SERVER['HTTP_USER_AGENT'],$agent) !== false) { die('Go away'); } }
Еще лучше:
$badAgents = array('fooAgent','blahAgent', 'etcAgent'); if(in_array($_SERVER['HTTP_USER_AGENT'],$badAgents)) { exit(); }
Вам следует избегать использования регулярных выражений для этого, так как это добавит много ресурсов, чтобы решить заблокировать соединение. Вместо этого просто проверьте, есть ли строка с strpos ()
if (strpos($_SERVER['HTTP_USER_AGENT'], "Agent Name 1") !== false || strpos($_SERVER['HTTP_USER_AGENT'], "Agent Name 2") !== false || strpos($_SERVER['HTTP_USER_AGENT'], "Agent Name 3") !== false) { exit; }