Browscap ini что это
Перейти к содержимому

Browscap ini что это

  • автор:

Как настроить PHP для работы с get_browser (browscap.ini) в Windows

Функция get_browser выводит информацию о возможностях веб-браузера, основываясь на полученной строке User Agent. К примеру: поддерживает ли данный веб-браузер JavaScript, какую версию CSS поддерживает, поддерживает ли iframes и frames, умеет ли работать с кукиз и отображать таблицы, работает ли на устройствах с сенсорным экраном и так далее.

При этом помните, что если вам всего лишь нужно получить User Agent пользователя (соответствующее значение заголовка HTTP), то вам не нужна функция get_browser, вам достаточно использовать соответствующую переменную:

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

Будет ничего не выведет кроме предупреждения:

Как настроить browscap.ini

Требуется скачать данный файл с перечнем свойств веб-браузера и указать путь до него в 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.

У меня веб-сервер на Windows установлен по этой инструкции. Если вы устанавливали другим образом или используете готовую сборку WAPM, то отредактируйте пути до файлов — но суть всегда будет одна и та же.

Downloads

This is the standard version of browscap.ini file for IIS 5.x and greater.

This is a larger version of browscap.ini with all the new properties.

This is a smaller version of browscap.ini file containing major browsers & search engines. This file is adequate for most websites.

PHP Versions

This is a special version of browscap.ini for PHP users only!

This is a larger version of php_browscap.ini with all the new properties.

This is a smaller version of php_browscap.ini file containing major browsers & search engines. This file is adequate for most websites.

Other files (XML/CSV/JSON/ZIP)

This is the standard version of browscap.ini file in XML format.

This is an industry-standard comma-separated-values version of browscap.ini. Easily imported into Access, Excel, MySQL & others.

This is a JSON (JavaScript Object Notation) version of browscap.ini. This is usually used with JavaScript.

This archive combines all the above files into one download that is smaller than all eight files put together.

Other file versions that used to be available (property-name-docs.xml, known_agents.zip) are no longer supported.

Important Information

Using Browscap

Supported — with PHP

We only officially support using the browscap-php library. Other methods of loading the files are not supported, but we’ll do our best to help when time permits.

Other Languages

You can visit our wiki page on Using Browscap to find a library to use for your programming language. Libraries exist for Perl, Python, ASP, C#, Pascal, ColdFusion, Ruby, and Java (although none are officially supported).

Rate Limiting

Downloading the INI files here implies you agree to our fair usage policy. Any repeat attempts to download the files will be banned. We highly recommend that you request the version URL and compare your current version against the latest version before requesting the download URL.

We have implemented rate limiting and banning with the following rules:

  • You may download 30 files per 1 hour period. If you exceed this you will be temporarily banned for 1 hour.
  • You are allowed up to 5 temporary bans in a 3 day period. If you exceed this, you will be permanently banned.
  • If you are permanently banned, please contact us via the our GitHub tracker to discuss your situation.
  • Rate limiting is not applied to requests to /version or /version-number requests.

Download URLs

Previous Versions

We do not offer previous versions of the files. If you require a previous version, you must build the files yourself for the appropriate tag. Reading the Browscap wiki may help.

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

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

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

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

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

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

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

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

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

Точнее говоря, требуется скачать специальный файл с перечнем свойств веб-браузера и указать путь до него в 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. Найдите там раздел:

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

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

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

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

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

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

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

Что PHP может узнать о браузере посетителя?

Возможно ли узнать более детальную информацию о браузере посетителя кроме строки, содержащейся в $_SERVER[«HTTP_USER_AGENT»]: поддерживает ли яву, апплеты, таблицы стилей и фреймы? А может это вообще гуглобот зашел?

Предистория

Захотелось заказчику, чтобы при заходе на сайт отображался его любимый логотип с пробегающей по нему искоркой света… Уговорить отказаться от этой идеи человека я так и не смог, но в итоге мы решили, что радость эта будет отображаться только раз, и только при заходе на главную страницу. Если человек попал на сайт с поисковика, он сразу переходит на страницу. Если он руками вписывает адрес в браузер, он перенаправляется на страницу с анимацией. После успешного отображения в куки пишется маркер, и видео больше не грузится. Но… Если на сайт зайдет не человек, а поисковик, то писать себе куки он не будет. Поэтому он всегда будет натыкаться на страницу с анимацией, и в выдаче поисковиков мы себя так и не увидим. Да и зачем поисковику логотип компании видеть 🙂

Как можно узнать что-либо о браузере клиента

Проблема в итоге была решена методом поиска подстроки имен пауков нескольких известных поисковиков в переменной $_SERVER[«HTTP_USER_AGENT»]. Но перед этим я походил по ману и обнаружил интересную функцию get_browser(). Она умеет выдавать массив параметров браузера гостя нашего сайта, назначения половины которых, правда, я так и не понял 🙂 Единственная тонкость работы этой функции в том, что она требует наличия на хосте свежей версии файла browscap.ini, а также настройки php.ini. Очевидно что нашим ленивым (просьба не обижаться) админам влом постоянно обновлять этот файлик, так что на это обычно забивают и функция попросту недоступна. Проверить это можно, заглянув в phpinfo(), отыскав там диррективу browscap, и ничуть не удивившись что напротив нее гордо красуется надпись «no value», приступить к прочтению следующего параграфа.

Что же делать

if(ini_get(‘browscap’))
<
//неленивые админы попались

/* старт шутки */
//вероятность выполнение участка кода стремится к нулю поэтому пишем сюда
echo «Начальство — ты меня задрало!»;
/* конец шутки — всем смеяться :)*/

>
else
<
//используем нашу библиотеку
require_once(‘browscap.php’);
$bc = new Browscap(‘path/to/the/cache/dir’);
$browserInfo=$bc->getBrowser();

в результате чего получим примерно следующее
stdClass Object
(
[browser_name] => Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_2; en-us) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.1 Safari/525.18
[browser_name_regex] => ^mozilla/5\.0 \(macintosh; .; .*mac os x.*\) applewebkit/.* \(.*\) version/3\.1.* safari/.*$
[browser_name_pattern] => Mozilla/5.0 (Macintosh; ?; *Mac OS X*) AppleWebKit/* (*) Version/3.1* Safari/*
[Parent] => Safari 3.1
[Platform] => MacOSX
[Browser] => Safari
[Version] => 3.1
[MajorVer] => 3
[MinorVer] => 1
[Frames] => 1
[IFrames] => 1
[Tables] => 1
[Cookies] => 1
[BackgroundSounds] => 1
[JavaApplets] => 1
[JavaScript] => 1
[CSS] => 2
[CssVersion] => 2
[supportsCSS] => 1
[Alpha] =>
[Beta] =>
[Win16] =>
[Win32] =>
[Win64] =>
[AuthenticodeUpdate] =>
[CDF] =>
[VBScript] =>
[ActiveXControls] =>
[Stripper] =>
[isBanned] =>
[WAP] =>
[isMobileDevice] =>
[isSyndicationReader] =>
[Crawler] =>
[AOL] =>
[aolVersion] => 0
[netCLR] =>
[ClrVersion] => 0
)

Добавить комментарий

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