почему строка агента пользователя изменилась? - PullRequest
0 голосов
/ 28 августа 2018

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

Из информации журнала, в начале я увидел, что пользовательский агент - это «Mozilla / 5.0 (iPhone; CPU iPhone OS 11_4_1, как Mac OS X) AppleWebKit / 605.1.15 (KHTML, как Gecko) Версия / 11.0 Mobile / 15E148 Safari / 604.1 ", что должно быть Safari 11 на iOS 11. Затем через несколько минут информация о пользовательском агенте изменилась на" Mozilla / 5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit / 605.1.15 (KHTML, как Gecko) Версия / 11.1 Safari / 605.1.15 ", который должен быть Safari 11.1 на macOS (High Sierra). Из tealeaf я увидел, что пользователь не менял браузер или устройство.

Итак, мои вопросы:

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

  2. Для моего случая, почему это происходит?

  3. Какой самый надежный способ определить, находится ли пользователь на мобильном телефоне / планшете или настольном компьютере?

спасибо.

1 Ответ

0 голосов
/ 28 августа 2018
  1. YES . Это вполне возможно манипулировать строкой пользовательского агента без изменения браузера или устройства. Можно (и довольно тривиально) полностью подделать его, например, с помощью User Agent Switcher для Chrome. Сказав это, подавляющее большинство пользователей не пойдут на мошенничество.

  2. Учитывая, что строки User Agent считают, что браузер такой же, но не Операционная система ... Я бы предположил, что пользователь включил Device Toolbar и включен Responsive Mode в F12 Developer Tools . Это позволяет имитировать отображение веб-сайта в другом соотношении сторон и действительно манипулирует строкой User Agent при выборе одного из доступных устройств.

  3. Это зависит от того, что именно вы пытаетесь сделать. Если вы ищете другую логику в зависимости от устройства, я бы порекомендовал регулярное выражение. Вот несколько замечательных примеров для разных языков программирования: DetectMobileBrowsers . Однако, если вам нужен другой дисплей , я бы порекомендовал медиа-запросы . Вы можете обслуживать width, pixel ratio и даже orientation устройства. Большой список общих запросов можно найти по CSS Tricks .

...