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

StackOverflow https://stackoverflow.com/questions/142273

Вопрос

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

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

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

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

Это было полезно?

Решение

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

Другие советы

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

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

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

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

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

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

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

Эта статья (и его последующие меры) кажется милым.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Просто посмотрите в руководстве, "как это работает".

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top