Стандартный способ обнаружения мобильных браузеров в веб-приложении на основе HTTP-запроса

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

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

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

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

Ответ 2

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

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

Ответ 3

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

Ответ 4

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

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

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

Ответ 5

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

Ответ 8

Следующая легкая конфигурация 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

Ответ 9

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

Ответ 10

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

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

Ответ 11

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

Ответ 12

ОК, вот очень простой ответ - как насчет того, чтобы позволить пользователю решить? на ваш логин к вашему ap, укажите ссылку на мобильный сайт. на мобильном сайте, дайте ссылку "вернуться на главный сайт" - попробуйте www.fazolis.com на мобильном устройстве - они хорошо справляются с этим.

затем, по ссылке на мобильный сайт с сайта браузера, зарегистрируйте свой "голос" и их пользовательский агент. Вы можете создать свой собственный надежный список ВАШИХ клиентов, которым нужен мобильный сайт. Используйте это в соответствии со спецификациями на размер экрана для этих мобильных устройств, и вы можете создать довольно хорошую логику для удовлетворительного пользовательского опыта. Я НИКОГДА не отправлял бы в сетевой источник что-то столь же элементарное, как это.

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

Ответ 13

Я не вижу его здесь, но другой вариант, который я сейчас просматриваю, - www.detectmobilebrowser.com

Ответ 14

Самый простой способ - создать массив с регулярными тегами, связанными с мобильными браузерами. По крайней мере, большинство мобильных пользовательских агентов должны иметь слово mobile, mini, nokia, java ME, android, iphone, мобильная ОС и т.д. Если какой-либо из них совпадает с пользовательским агентом, используя php strpos, напечатайте мобильную кнопку вверху страницы, Оставьте пользователя выбрать. Мне нравится полный сайт, потому что мой мобильный браузер дает мне тот же опыт, за исключением того, что мне нужно масштабировать или прокручивать большую часть времени.

Ответ 15

Вам нужно будет проверить строку пользовательского агента с ранее определенным списком как этот

Ответ 16

вы можете использовать веб-сервис для обнаружения мобильных браузеров, таких как handsetdetection.com.

Ответ 17

Дело в том, что просто полагаться на useragent недостаточно для обнаружения мобильных браузеров.

Конечно, несколько лет назад вы могли искать его для определенных строк и догадываться, что это Nokia или что-то в этом роде, но сейчас там так много телефонов, и многие из них притворяются, что это не что-то более сложное необходимо.

Я нашел отличный сайт в текст ссылки, основанный на том же решении, которое MTV использует для всех своих мобильных веб-сайтов. Он ДЕЙСТВИТЕЛЬНО хорош, так как имеет независимый от устройства язык разметки, но, что более важно, он предлагает вызов webservice для isMobileDevice().

Просто загляните в руководство, а затем "как это работает".

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

Ответ 18

Просто наткнулся на Обнаружение устройств и функций в мобильной сети с этим содержимым:

  • Использование устройства и функции для улучшения работы пользователей в мобильной сети.
  • Введение в обнаружение устройства
  • Подходы к разработке мобильных сайтов
    • Ничего не делать
    • Предоставление общего мобильного сайта
    • Проектирование с учетом мобильных устройств и адаптации.
  • Стратегии адаптации контента и группировки устройств
    • Группирование устройств
    • Контентная адаптация
  • Минимизация необходимости адаптации в первую очередь
  • Общие подходы к обнаружению устройств
    • Адаптация на стороне сервера
    • Клиентская адаптация
    • Пользовательский агент на стороне сервера (UA) и просмотр заголовков
    • Серверная строка UA в сочетании с поиском базы данных устройств
    • Обнаружение профилей пользовательских агентов на стороне сервера (UAProf)
    • Обнаружение на основе технологии JavaScript
    • Типы носителей CSS
    • Запросы мультимедиа CSS
  • Дополнительные рекомендации
    • Перенаправление + ручная ссылка
    • Целевая страница + ручная ссылка
  • Загружаемая страница с образцами

Ответ 19

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

http://wurfl.sourceforge.net/wurfl_schema.php

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