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

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

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

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

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

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

Для браузера 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:

   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 (ax)

   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 Кб)

0 2019 PHP
captcha