Стандартный способ определения мобильных браузеров в веб-приложении на основе запроса http - PullRequest
56 голосов
/ 27 сентября 2008

Мы начинаем идти по пути поддержки мобильных браузеров для веб-приложения корпоративной электронной коммерции (на основе Java / Servlet). Конечно, нужно принять много решений, но мне кажется, что краеугольным камнем является способность надежно обнаруживать мобильные браузеры и принимать решения о контенте, который должен быть возвращен соответствующим образом. Существует ли стандартный способ сделать это определение (быстро) на основе http-запроса и в идеале собрать больше информации о данном браузере и устройстве, выполняющем запрос (размер экрана, возможности html и т. Д.).

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

[править] Я, конечно, понимаю заголовок запроса, и информация о базе данных стандартных пользовательских агентов очень полезна. Для тех, кто говорит о «других» свойствах заголовка запроса, если бы вы могли включить аналогичное стандартизированное имя / ресурс значений, это было бы большой помощью.

[править] Несколько пользователей предложили решения, предусматривающие вызов по проводной связи в какой-либо веб-сервис, который будет выполнять обнаружение. Хотя я уверен, что это работает, это не очень хорошее решение для сайта электронной коммерции предприятия по двум причинам: 1) скорость. Вызов по сети для каждого запроса страницы к третьей стороне будет иметь огромные последствия для производительности. 2) зависимость / законность. Мы привязали бы время отклика нашего веб-сайта и ключевые функции к его обслуживанию, что ужасно по юридическим причинам и из-за рисков.

Ответы [ 19 ]

42 голосов
/ 27 сентября 2008

Не будет ли стандартный способ проверить пользовательский агент? Вот база данных пользовательских агентов , которую вы можете использовать для обнаружения мобильных браузеров.

20 голосов
/ 04 октября 2008

@ В ответе Дэвида упоминается использование WURFL - это, вероятно, ваш лучший вариант. Будьте предупреждены, однако, вероятность успеха обычно составляет около 60% (из моего и чужого опыта). Поскольку операторы постоянно меняют UA и количество существующих профилей устройств (более 60 000?), Нет пуленепробиваемого способа получить все нужные данные.

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

8 голосов
/ 03 сентября 2010

Вы можете использовать Модернизатор для определения возможностей браузера

6 голосов
/ 27 сентября 2008

Хотя вы могли обнаружить мобильный браузер через его пользовательский агент, война браузеров на платформе ПК показала, что прослушивание пользовательских агентов на самом деле не такая уж хорошая вещь.

В идеале следует сделать так, чтобы определенные стили применялись на основе типа носителя или чтобы другой ответ отправлялся на основе заголовка, отличного от пользовательского агента, например, заголовка Accept, который сообщает, какой тип содержимого браузер предпочитает.

Прямо сейчас, возможно, будет достаточно кодировать сайт, который работает с iPhone и Opera, через перехват браузера - но Android Google Googles появится в любую минуту, и есть много других мобильных телефонов, которые будут иметь функции браузера, близкие к ближайшее будущее, и было бы бесполезно разрабатывать мобильный веб-сайт, который бы не поддерживал эти устройства с нуля.

5 голосов
/ 25 августа 2010

После нескольких дней поиска правильного способа обнаружения мобильного устройства я решил сделать его простым [глупым], и я поставлю кнопку «Сайт мобильного устройства» на моей странице индекса… это всего лишь один клик прочь !!

4 голосов
/ 31 мая 2012

Определение мобильных браузеров - фрагменты на разных языках программирования.

4 голосов
/ 27 сентября 2008

Эта статья (и ее продолжение ) кажется хорошей.

3 голосов
/ 03 ноября 2011

Следующая легкая конфигурация Apache делает довольно хорошую работу и запоминает пользовательские предпочтения, если они предпочитают версию для ПК

<VirtualHost (your-address-binding)>   

  (your-virtual-host-configuration)       

  RewriteEngine On     
  RewriteCond %{QUERY_STRING} !ui=pc
  RewriteCond %{HTTP_COOKIE} !ui=pc
  RewriteCond %{HTTP_USER_AGENT} "^.*(iphone|ipod|ipad|android|symbian|nokia|blackberry| rim |opera mini|opera mobi|windows ce|windows phone|up\.browser|netfront|palm-|palm os|pre\/|palmsource|avantogo|webos|hiptop|iris|kddi|kindle|lg-|lge|mot-|motorola|nintendo ds|nitro|playstation portable|samsung|sanyo|sprint|sonyericsson|symbian).*$" [NC,OR]

  RewriteCond %{HTTP_USER_AGENT} "^(alcatel|audiovox|bird|coral|cricket|docomo|edl|huawei|htc|gt-|lava|lct|lg|lynx|mobile|lenovo|maui|micromax|mot|myphone|nec|nexian|nook|pantech|pg|polaris|ppc|sch|sec|spice|tianyu|ustarcom|utstarcom|videocon|vodafone|winwap|zte).*$" [NC] 

  RewriteRule /(.*) http://bemoko.com/$1 [L]

  RewriteCond %{QUERY_STRING} "ui=pc"
  RewriteRule ^/ - [CO=ui:pc:(your-cookie-domain):86400:/]
  RewriteCond %{QUERY_STRING} "ui=default"
  RewriteRule ^/ - [CO=ui:default:(your-cookie-domain):86400:/]
</VirtualHost>

Больше информации об этом @ http://bemoko.com/training.team/help/team/pc-to-mobile-redirect

2 голосов
/ 30 июня 2009

Я предлагаю бесплатную систему обнаружения, основанную на uaprof и пользовательском агенте: http://www.mobilemultimedia.be UAprof должен быть основным ключом для обнаружения, когда он доступен, поскольку обычно для одного и того же uaprof существует несколько пользовательских агентов. Если вы хотите справиться с этим самостоятельно, вам следует обратиться к Wurfl, поскольку вы можете самостоятельно загрузить всю базу данных и управлять ею локально.

2 голосов
/ 12 октября 2009

Когда у меня недавно была похожая потребность, я нашел этот код , который использует HTTP_X_WAP_PROFILE, HTTP_ACCEPT и HTTP_USER_AGENT для идентификации браузера как мобильного или немобильного. Это PHP, но его можно довольно легко преобразовать во что угодно (я реализовал его в VBScript для классического ASP).

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

...