zaLinux.ru

Как получить User Agent в PHP. Как настроить browscap.ini


User Agent — это строка, которая характеризует программу, делающую запрос к веб-серверу. Пример такой строки:

Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36

Как можно увидеть, по User Agent можно определить операционную систему и версию веб-браузера.

По своей сути User Agent является одним из заголовков протокола HTTP. Причём этот заголовок присылает сам клиент. Отсюда очень важное следствие — строка User Agent может быть подменена на абсолютно любое значение или отсутствовать вовсе. В веб-браузерах это можно сделать с помощью плагинов.

Поэтому всегда помните о том, что Пользовательский Агент может быть спуфлен (заменён). Причём если вы, например, сохраняете полученные значения в базу данных, то помните о необходимости фильтрации данных, поскольку без должной фильтрации пользовательских данных это может стать причиной уязвимости SQL-инъекция.

Итак, получить значение User Agent в PHP скрипте можно используя переменную $_SERVER[‘HTTP_USER_AGENT’]. Например:

<?php

echo $_SERVER['HTTP_USER_AGENT'];

Как настроить PHP для работы с get_browser

Ещё один способ — это использовать функцию get_browser. На самом деле, суть функции get_browser в том, чтобы показать возможности (поддерживаемые технологии) веб-браузера на основе User Agent. Причём необязательно для текущего пользователя — функция get_browser может в качество ввода принимать произвольную строку User Agent.

По умолчанию функция get_browser НЕ работает, поскольку требует дополнительной настройки в конфигурации PHP. Если не выполнить эту настройку, то при попытке использовать функцию get_browser вы будете получать примерно такое предупреждение:

Warning: get_browser(): browscap ini directive not set in /srv/http/tests.php on line 5

Точнее говоря, требуется скачать специальный файл с перечнем свойств веб-браузера и указать путь до него в php.ini (главном конфигурационном файле PHP).

Эти файлы размещены на сайте http://browscap.org/. Всего для PHP имеется 3 варианта:

  • php_browscap.ini (17,095 KB). Стандартная версия файла, довольно полная.
  • full_php_browscap.ini (85,513 KB). Самая большая версия файла со всеми возможными свойствами.
  • lite_php_browscap.ini (463 KB). Облегчённый вариант, содержит основные браузеры и поисковые движки. Этот файл вполне подойдёт для большинства веб-сайтов.

Итак, скачайте один из этих файлов — тот, который больше подходит под ваши нужды.


Для примера я скачал файл full_php_browscap.ini. Переименуйте скаченный файл в browscap.ini.

Переместите этот файл в директорию /etc/php/

Теперь откройте файл /etc/php/php.ini. Найдите там раздел:

[browscap]
; http://php.net/browscap
;browscap = extra/browscap.ini

Удалите вторую строку, а третью раскомментируйте и в качестве значения укажите абсолютный путь до файла, чтобы получилось так:

[browscap]
browscap = /etc/php/browscap.ini

ПРИМЕЧАНИЕ: В некоторых дистрибутивах путь до файла php.ini иной и зависит от версии PHP. К примеру, сейчас в Debian путь до файла следующий: /etc/php/8.1/apache2/php.ini

Чтобы изменения вступили в силу, перезапустите веб-сервер Apache.

На Debain, Ubuntu, Linux Mint, Kali Linux и их производных:

sudo systemctl restart apache2.service

На Arch Linux, BlackArch и их производных:

sudo systemctl restart httpd.service

Пример выполнения кода:


<?php

$browser = get_browser(null, true);
print_r($browser);

Полученный вывод:

Array
(
    [browser_name_regex] => ~^mozilla/5\.0 \(.*linux.*x86_64.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*chrome/.* safari/.*$~
    [browser_name_pattern] => Mozilla/5.0 (*Linux*x86_64*)*applewebkit*(*khtml*like*gecko*)*Chrome/* Safari/*
    [parent] => Chrome Generic
    [browser_bits] => 64
    [platform] => Linux
    [platform_description] => Linux
    [platform_bits] => 64
    [platform_maker] => Linux Foundation
    [device_name] => Linux Desktop
    [device_code_name] => Linux Desktop
    [comment] => Chrome Generic
    [browser] => Chrome
    [browser_type] => Browser
    [browser_maker] => Google Inc
    [frames] => 1
    [iframes] => 1
    [tables] => 1
    [cookies] => 1
    [javascript] => 1
    [cssversion] => 3
    [aolversion] => 0
    [device_type] => Desktop
    [device_pointing_method] => mouse
    [renderingengine_name] => Blink
    [renderingengine_description] => a WebKit Fork by Google
    [renderingengine_maker] => Google Inc
    [browser_modus] => unknown
    [version] => 0.0
    [majorver] => 0
    [minorver] => 0
    [platform_version] => unknown
    [alpha] => 
    [beta] => 
    [win16] => 
    [win32] => 
    [win64] => 
    [backgroundsounds] => 
    [vbscript] => 
    [javaapplets] => 
    [activexcontrols] => 
    [ismobiledevice] => 
    [istablet] => 
    [issyndicationreader] => 
    [crawler] => 
    [isfake] => 
    [isanonymized] => 
    [ismodified] => 
    [device_maker] => unknown
    [device_brand_name] => unknown
    [renderingengine_version] => unknown
)

Обратите внимание, что в последних версиях PHP драмматически (в сотню раз) увеличена скорость работы функции get_browser.

При выборе нужного файла browscap.ini помните об их размерах, поскольку облегчённая версия от самой полной по размеру отличается примерно в 200 раз! При этом помните о расходе оперативной памяти на каждый процесс веб-сервера. Причём может быть повышенной потребление оперативной памяти даже если вы фактически не используете функцию get_browser.

Также помните о том, что вам нужно заботиться об обновлении файла browscap.ini.


Рекомендуемые статьи:

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *