Недавно я начал интересоваться такими сайтами, как http://thismachine.info/, которые получают информацию об операционной системе пользователя. Я не смог узнать, как это сделать с помощью PHP, и хотел попытаться понять это.
Я заметил, что они перечисляют user-agent
, что дает много информации о браузере. Оттуда они получают информацию об операционной системе или от чего-то еще? Есть ли API, с помощью которого я могу получить операционную систему пользователя?
Я вижу, как они получили браузер и IP, но не могу понять, что такое операционная система!
php
operating-system
user-agent
пирожок
источник
источник
echo $_SERVER['HTTP_USER_AGENT'];
покажет (в определенной степени) операционную систему пользователя. Для меня он обнаружилMozilla/5.0 (Windows NT 5.1; rv:22.0) Gecko/20100101 Firefox/22.0
, где я на самом деле использую Windows XP, так что это не точная наука.http://thismachine.info/
что я использую Windows XP? Этого я не знаю, однако они должны использовать скрипт, который найдет и заменит, а затем отобразит его. Насколько мне известно, нет ничего, что могло бы определить точную операционную систему, поскольку я вижу, что это относится к области ценных бумаг.Windows XP
от массива/windows nt 5.1/i' => 'Windows XP',
Ответы:
Приведенный ниже код может самостоятельно объяснять, как http://thismachine.info/ может показать, какую операционную систему кто-то использует.
Что он делает, так это то, что он нюхает вашу базовую модель операционной системы, например,
windows nt 5.1
как мою собственную.Затем он передает Windows NT 5.1 / i в Windows XP в качестве операционной системы.
Использование:
'/windows nt 5.1/i' => 'Windows XP',
из массива.Вы могли бы сказать догадки или приближение, но, тем не менее, в значительной степени ошиблись.
Заимствовано из ответа на SO https://stackoverflow.com/a/15497878/
Сноски: (я 19/14) Были на предложенное редактирование 18 января 2014 года , чтобы добавить
/msie|trident/i
на YJSoft нового члена на SO.Комментарий гласил:
Комментарий: поскольку ua msie11 не включает msie (вместо этого включает трезубец)
Я немного исследовал это и нашел несколько ссылок, объясняющих строку Trident.
Хотя правка была отклонена (не мной, а некоторыми другими редакторами), ее стоит прочитать по приведенным выше ссылкам и принять правильное решение.
Согласно вопросу, заданному об обнаружении SUSE, этот фрагмент кода был найден по следующему URL-адресу:
Дополнительный код:
Изменить: 12 апреля 2015 г.
Вчера я заметил вопрос, который может иметь отношение к этому вопросу и ответу и может быть полезным для некоторых. В связи с:
Mozilla/5.0 (Linux; Android 4.4.2; SAMSUNG-GT-I9505 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.96 Mobile Safari/537.36
Еще одно редактирование и добавление ссылочной ссылки, которую спросили (и ответили / приняли сегодня, 4/16 ноября), которая может быть полезна.
Проконсультируйтесь с вопросами и ответами здесь, в стеке:
источник
'/windows nt 6.3/i'
для Windows 8.1"mavericks HTTP_USER_AGENT"
погуглить @ben_aaron'/cros/i' => 'Chrome OS'
Когда вы заходите на веб-сайт, ваш браузер отправляет на веб-сервер запрос, содержащий много информации. Эта информация может выглядеть примерно так:
Вся эта информация используется веб-сервером для определения того, как обрабатывать запрос; предпочитаемый язык и разрешено ли сжатие.
В PHP вся эта информация хранится в
$_SERVER
массиве. Чтобы увидеть, что вы отправляете на веб-сервер, создайте новый файл PHP и распечатайте все из массива.Это даст вам хорошее представление обо всем, что отправляется на сервер, откуда вы можете извлечь желаемую информацию, например,
$_SERVER['HTTP_USER_AGENT']
чтобы получить операционную систему и браузер.источник
Взял следующий код из руководства по php для get_browser .
В
$browser
массивplatform
включена информация, которая дает вам конкретную используемую операционную систему.Обязательно посмотрите раздел «Примечания» на этой странице. Это может быть что-то (thismachine.info), если это не то, что уже указано в других ответах.
источник
На основании ответа по Фред-II я хотел бы поделиться своим взять на себя функции getOS, он избегает глобалам, объединяет оба списка и определяет архитектуру (x32 / x64)
источник
Если вы хотите получить всю эту информацию, вы можете прочитать это:
http://php.net/manual/en/function.get-browser.php
Вы можете запустить пример кода, и вы увидите, как он работает:
В приведенном выше примере будет выведено что-то подобное:
источник
Если вам нужно, например, очень мало информации, такой как класс в вашем html для распространенных браузеров, вы можете использовать:
который вернет 'safari', 'firefox' или 'chrome', или 'ie8', 'ie9', 'ie10', 'ie11'.
источник
Вы можете искать эту информацию
$_SERVER['HTTP_USER_AGENT']
, но ее формат является произвольным, не гарантируется отправка и может быть легко изменен пользователем по соображениям конфиденциальности или по другим причинам.Если вы не установили
browsecap
директиву, это вернет предупреждение. Чтобы убедиться, что он установлен, вы можете получить значение с помощьюini_get
и посмотреть, установлено ли оно.Как пояснил kba в своем ответе, ваш браузер отправляет на сервер много информации при загрузке веб-страницы. Большинство веб-сайтов используют эту информацию агента пользователя для определения операционной системы, браузера и различной информации посетителя.
источник