У меня нет представителя для комментариев, поэтому я отвечаю.
Когда я просматриваю журналы своего сервера и анализирую посещения с мобильных телефонов, я отмечаю, что помимопосещение с мобильного браузера пользователя, есть (часто? всегда?) посещение компонента операционной системы мобильного телефона.Вот пример (анонимный):
37.201.225.xxx - - [16/Apr/2018:09:01:39 +0200] "GET /favicon.ico HTTP/1.1" 200 318 "my.site.com" "Mozilla/5.0 (Linux; Android 7.0; Moto G (4) Build/NPJS25.93-14-10; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/55.0.2883.91 Mobile Safari/537.36 ACHEETAHI/1"
37.201.225.xxx - - [16/Apr/2018:09:01:40 +0200] "GET /favicon.ico HTTP/1.1" 200 318 "-" "Dalvik/2.1.0 (Linux; U; Android 7.0; Moto G (4) Build/NPJS25.93-14-10)"
Как вы видите, примерно через секунду после того, как браузер (Chrome) запросил значок моего сайта, виртуальная машина Dalvik запросилазначок также.Для телефонов и планшетов Apple я вижу запросы от CFNetwork помимо мобильных браузеров.Я предполагаю, что существуют другие подобные процессы ОС, запрашивающие значок на других мобильных устройствах.
Эти запросы позволили бы мне идентифицировать посетителя с мобильного устройства, независимо от того, что читает строка агента пользователя.
Еще одна возможность идентифицировать мобильное устройство - прочитать формат экрана с помощью Java Script.Мобильные устройства имеют разные размеры дисплея, что позволяет отличить их от настольных или портативных компьютеров.
Но это всего лишь предположение, поэтому это должен быть комментарий ...