Обнаружение робота требует более детального анализа пользовательского агента.
Предупреждение - следует контент, основанный на мнениях. Существуют и другие способы анализа пользовательского агента, например https://github.com/ua-parser/uap-php.
Вы можете использовать browscap-php до , лучше обнаружить браузер. Затем вы можете проверить различные свойства полученного объекта, чтобы увеличить вероятность обнаружения робота.
Я говорю лучше , поскольку роботы не могут эмулировать заголовок браузера HTTP_USER_AGENT
и таким образом избежать обнаружения.
$cache = new \Roave\DoctrineSimpleCache\SimpleCacheAdapter($doctrineFileCache); // or maybe any other PSR-16 compatible caches
$logger = new \Monolog\Logger('name'); // or maybe any other PSR-3 compatible logger
$browscap = new \BrowscapPHP\Browscap($cache, $logger);
$info = $browscap->getBrowser();
if (!($info->isfake || $info->crawler)) {
...
}
Пример результата browscap-php ($info
value) для браузера Chrome:
{
"browser_name_regex":"\/^mozilla\\\/5\\.0 \\(.*windows nt 10\\.0.*win64. x64.*\\).*applewebkit.*\\(.*khtml.*like.*gecko.*\\).*chrome\\\/.* safari\\\/.*$\/",
"browser_name_pattern":"mozilla\/5.0 (*windows nt 10.0*win64? x64*)*applewebkit*(*khtml*like*gecko*)*chrome\/* safari\/*",
"parent":"Chrome Generic",
"comment":"Chrome Generic",
"browser":"Chrome",
"browser_type":"Browser",
"browser_bits":"64",
"browser_maker":"Google Inc",
"browser_modus":"unknown",
"version":"0.0",
"majorver":"0",
"minorver":"0",
"platform":"Win10",
"platform_version":"10.0",
"platform_description":"Windows 10",
"platform_bits":"64",
"platform_maker":"Microsoft Corporation",
"alpha":false,
"beta":false,
"win16":false,
"win32":false,
"win64":true,
"frames":true,
"iframes":true,
"tables":true,
"cookies":true,
"backgroundsounds":false,
"javascript":true,
"vbscript":false,
"javaapplets":false,
"activexcontrols":false,
"ismobiledevice":false,
"istablet":false,
"issyndicationreader":false,
"crawler":false,
"isfake":false,
"isanonymized":false,
"ismodified":false,
"cssversion":"3",
"aolversion":"0",
"device_name":"Windows Desktop",
"device_maker":"unknown",
"device_type":"Desktop",
"device_pointing_method":"mouse",
"device_code_name":"Windows Desktop",
"device_brand_name":"unknown",
"renderingengine_name":"Blink",
"renderingengine_version":"unknown",
"renderingengine_description":"a WebKit Fork by Google",
"renderingengine_maker":"Google Inc"
}