Программирование, радиоэлектроника,
саморазвитие и частичка из моей жизни здесь...

Класс PHP Class - User Agent String

Решил поделиться своей достаточно старой разработкой на PHP - классом для генерации идентификационных строчек браузеров (User Agent String).

Он умеет генерировать как случайные, так и с указанными параметрами строчки идентификации интернет-браузеров. Класс очень прост в использовании и модификации, без проблем можно добавить свои шаблоны и варианты для генерации строчек UserAgent.

Скрипт был написан снуля, поскольку я не нашел ничего аналогичного по функционалу ни на PHPClasses ни на других сайтах и форумах программистов того времени, а нужна была гибкость и многовариантность. Вариант с базой готовых сгенерированных строчек UserAgent сразу отпал, поэтому и появилась идея написать этот класс.

Содержание:

  1. Что такое User Agent ?
  2. Генерация строки UserAgent String с указанными параметрами
  3. Генерация строки UserAgent String с частично указанными параметрами
  4. Генерация абсолютно случайной по всем параметрам UserAgent String
  5. Получаем список доступных значений параметров для генерации
  6. Заключение

Что такое User Agent ?

В википедии достаточно подробно описано что это такое, повторяться не буду, вся суть хорошо описана вот тут - Wiki: Что такое User Agent.

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

Каждый браузер в отсылаемых серверу запросах предоставляет свою уникальную идентификационную строку (user agent string), ее структура зависит от используемой платформы, ядра браузера, версии и т.п.

Строку идентификации имеют не только пользовательские браузеры. Каждый сервис или веб-робот, который посещает веб-страницы, также пересылает свою уникальную для данного типа сервиса строку идентификации.

Например, роботы Google и Yandex - гуляют по сайтам и индексируют их содержимое, при этом также отсылая свои строки идентификации вместе с каждым запросом.

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

Вы также можете использовать для своих приложений уникальные строки идентификации, которые говорят что в гости на сайт зашли через IE или Opera.

Вот несколько примеров строк идентификации для разных платформ и версий браузеров:

Для браузера Samsung Galaxy S Android 2.2:

Mozilla/5.0 (Linux; U; Android 2.2; ru-ru; GT-I9000 Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1

Для браузера Opera 11.10 под Windows 7:

Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.8.131 Version/11.10

Для браузера Mozilla Firefox 4.0 под Windows XP:

Mozilla/5.0 (Windows; I; Windows NT 5.1; ru; rv:1.9.2.13) Gecko/20100101 Firefox/4.0

Робот от Гугла - Google Bot:

Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)

Теперь перейдем к делу и попробуем наш класс в действии. Приведу несколько примеров вызова класса с параметрами, чтобы стало ясно как его использовать.

Генерация строки UserAgent String с указанными параметрами

Перейдем сразу к не сложному примеру использования класса.

require_once('user_agent_string.php');
$user_agent = new UserAgentString();
$user_agent->browser_type = 'Firefox';     // браузер должен быть Mozilla Firefox
$user_agent->os = 'FreeBSD';                  // операционная система FreeBSD
$user_agent->country_iso = 'RU';             // русская локаль
$user_agent->browser_version = '3.5.3';   // версия нашего браузера 3.5.3
print $user_agent->Compile();

В результате работы мы получим строку:

  • Mozilla/5.0 (X11; U; FreeBSD i386; ru-RU; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3

Генерация строки UserAgent String с частично указанными параметрами

require_once('user_agent_string.php');
$user_agent = new UserAgentString();
$user_agent->browser_type = 'Firefox';
$user_agent->country_iso = 'RU';
$user_agent->randomize = true; // включение режима случайной генерации
print $user_agent->Compile();

В результате запусков скрипта мы получим строки с случайно сгенерированными параметрами browser_version и os, язык и тип браузера мы указали:

  • Mozilla/5.0 (X11; U; Linux x86_64; ru-RU; rv:1.9.0.2) Gecko/20090327 Firefox/3.1
  • Mozilla/5.0 (Windows NT 5.2; ru-RU; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3
  • Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; ru-RU; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1

Генерация абсолютно случайной по всем параметрам UserAgent String

require_once('user_agent_string.php');
$user_agent = new UserAgentString();
$user_agent->randomize = true;
print $user_agent->Compile();

В результате каждого запуска скрипта мы получим строки:

  • Mozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.7.2) Gecko/20040804 Navigator/7.2
  • Mozilla/4.0 (compatible; MSIE 7.0; Windows; U; Windows NT 6.0; MAXTHON 2.0; )
  • Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.222.0 Safari/532.2
  • Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.7.5) Gecko/20060127 Navigator/8.1
  • и т.п.

Как получить список возможных параметров (os, browser_type, country_iso, browser_version)? - для этого есть специальные методы, которые возвращают массив со списком всех доступных значений для заданных параметров.

Получаем список доступных значений параметров для генерации

require_once('user_agent_string.php');
$user_agent = new UserAgentString();
print_r($user_agent->available_oses()); // список ОС
print_r($user_agent->available_browsers()); // список типов браузеров
print_r($user_agent->available_browser_versions('Opera')); //доступные версии Opera
print_r($user_agent->available_languages()); // доступные языки: RU, EN, UK....

Добавить в класс новые браузеры и их версии, а также версии ОС не сложно. Все построено на основе массивов, модифицировать/добавить нужные данные в класс, я думаю, не составит большого труда.

Заключение

Таким образом, комбинируя разные типы ОС, языки, типы и версии браузеров мы получаем достаточно большое количество комбинаций строк UserAgent String.

Также в классе предусмотрены исключения - чтобы не было такого, что строка идентифицирует браузер, например Internet Explorer, который запущен на ОС FreeBSD.

Скачать класс UserAgentString с примерами можно тут: Скачать класс UserAgentString  (zip, 3 Кб).

Если статья оказалась полезной - помочь проекту можно тут: 👍 ПОМОЩЬ, 🎁 DONATE
8 20960 PHP