Обнаружение мобильного браузера PHP?

Мне нужен способ обнаружения мобильных браузеров на стороне сервера. Мне нужен способ, который требует, чтобы от меня мало что нужно было настраивать и немного поддерживать, но при этом он по-прежнему предоставлял бы мне точное определение (по крайней мере) браузеров Android, Mobile Safari и Blackberry, а также альтернатив, таких как Opera.

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


person Trey Keown    schedule 28.09.2010    source источник
comment
'немного в обслуживании' будет сложно, так как единственный полунадежный способ, который у нас есть, - это строки пользовательского агента, которые все время меняются в новых (бывших) версиях. Я действительно задаюсь вопросом о том "столкновении", которое вы ожидаете?   -  person Wrikken    schedule 29.09.2010
comment
Я подумал, что так и будет. Но ох, это результат попытки публикации из мечты htc. Должно быть просто обнаружение   -  person Trey Keown    schedule 29.09.2010
comment
Очень похоже на stackoverflow.com/questions/6636306/mobile-browser-detection, Его принятый ответ может сработать для вас, он основан на предложениях @Rick ниже, хотя может потребоваться некоторое обслуживание   -  person Sydwell    schedule 07.02.2012


Ответы (10)


WURLF - это лучший способ обнаружения мобильных браузеров, и доступен PHP API.

person kgiannakakis    schedule 28.09.2010
comment
+1, позвольте мне добавить, что он часто обновляется с появлением новых устройств и их возможностей - person Fanis Hatzidakis; 29.09.2010
comment
Я просто хотел отметить здесь (для всех, кто придет после меня в Google), что для WURLF требуется библиотека журнала PEAR. - person electblake; 27.01.2011
comment
К сожалению, похоже, что библиотека PHP обновляется не так часто, как библиотека Java. Я только что загрузил его, и он неправильно распознает хром на android как рабочий стол. Я поищу другую библиотеку - person Moshe Shaham; 06.08.2012
comment
WURFL больше не является бесплатным для коммерческого использования. Они берут неприличную сумму в год за использование своих услуг. - person Ryan; 09.05.2013

Я обнаружил, что с этим очень легко использовать php-mobile-detect

person Ali Nouman    schedule 12.04.2012
comment
Он регулярно обновляется, прост в использовании и спонсируется BrowserStack - похоже, приличная библиотека. - person tonyhb; 10.09.2012
comment
@tonyhb ... когда вы говорите, что он регулярно обновляется, я не понимаю, как его можно обновлять, поскольку я загрузил его (файл Mobile_Detect.php) на свой компьютер. Вы имеете в виду, что мне нужно будет регулярно возвращаться на сайт загрузки, чтобы проверять наличие более новых версий? - person dsdsdsdsd; 18.01.2013
comment
Да, вам нужно будет периодически повторно загружать файл, чтобы быть в курсе последних событий. - person tonyhb; 28.01.2013

(изменить: на данный момент проект возможностей браузера закрыт, т.е. атм этот ответ не является вариантом)

Все, что вам нужно, это get_browser () и последний файл browscap.ini, который сопоставляет строку агента пользователя с браузер / версия и ее возможности.

Обычно самую последнюю версию browscap.ini можно получить по адресу http://browsers.garykeith.com/downloads.asp

person VolkerK    schedule 28.09.2010

Это просто вопрос чтения заголовков (Как я могу читать любые заголовок запроса в PHP) и анализируя / интерпретируя это, чтобы прочитать «пользовательский агент», вы можете найти существующий PHP-скрипт или, может быть, просто регулярное выражение, которое поможет выяснить, какие пользовательские агенты являются мобильными. и которые являются обычными ПК / ноутбуками.

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

person Rick    schedule 28.09.2010
comment
Привет, спасибо за ответ, но я действительно больше искал библиотеку, чтобы избежать такой утомительной работы ... - person Trey Keown; 29.09.2010
comment
Вы можете просто проверить переменную $_SERVER['HTTP_USER_AGENT'] - person webbiedave; 29.09.2010

Некоторое время назад нашел эту библиотеку:

http://code.google.com/p/mobileesp/

Имеет версии PHP, Java, JavaScript и C #. Я рассматриваю его как «легкий» инструмент для обнаружения смартфонов / планшетов без зависимостей, который регулярно обновляется. У меня смешанные чувства по этому поводу, так как некоторые аспекты качества кода немного шатки.

Если вам нужно что-то еще более легкое, плагин WP Super Cache для WordPress содержит несколько длинных строк регулярных выражений, которые вы, вероятно, могли бы пролистать.

Обнюхивание браузера на основе строк пользовательского агента всегда будет ненадежным. Я посмотрел на WURFL, он сжат на несколько мегабайт. Использование этого - излишество. Лучше всего определить, какие устройства используются на веб-сайте, спроектировать для этих устройств, а затем прекратить работу.

person Positronic Network    schedule 19.08.2011


Zend Framework недавно представила Zend_Http_UserAgent.

Он может определять мобильное устройство и его возможности, обнаруживая UserAgent через Wurfl, TeraWurfl и DeviceAtlas API.

person Gordon    schedule 14.11.2010

Как насчет http://code.google.com/p/hdapi/? Обнаружение мобильных устройств на стороне сервера в PHP.

person Richard    schedule 13.10.2010

К сожалению, WURFL больше не бесплатен для коммерческих проектов.

Но есть OpenDDR с его экспериментальная реализация PHP.

person Adrian Ber    schedule 20.12.2012

Я когда-то использовал для временного хранения ip-адресов посетителей и значений csrf-session (предназначенных для подсчета текущих посетителей).

И я заметил, что у меня был побочный эффект, заключающийся в том, что я мог видеть, использовал ли посетитель мобильный телефон или компьютер: csrf мобильного телефона изменяется с каждой новой загрузкой страницы, а ПК - нет; и ip-адреса остаются в обоих случаях.

Конечно, вы обнаруживаете мобильный телефон только в том случае, если посетитель щелкает дважды, и я не проверял, насколько это надежно (поскольку мне это действительно не нужно), но это только на стороне php / сервера.

person araldh    schedule 20.02.2015