Как получить имя устройства (или имя хоста) из расширения Chrome?

Есть ли способ получить имя устройства из расширения Chrome?

В идеале я хотел бы получить ту же строку, которая отображается в меню «Другие устройства» на новой вкладке... Доступна ли эта информация для расширений?

В качестве альтернативы, доступно ли имя хоста?

Что мне удалось получить, так это пользовательский агент, обратившись к window.navigator.userAgent, но это все...


person michele b    schedule 21.03.2013    source источник


Ответы (2)


Нет. Постоянный и уникальный идентификатор, связанный с оборудованием пользователя, по сути является неудаляемым файлом cookie. По соображениям конфиденциальности браузеры (и API-интерфейсы расширений браузера) не предоставляют такие идентификаторы.

Изменить: из Experiment.systemInfo.* вы можете создать что-то, что будет описывать определенные атрибуты системы пользователя. Например, он не будет достаточно отличительным, чтобы гарантировать уникальность в раскрывающемся меню, но это может быть шагом в правильном направлении. Обратите внимание, что эти API являются экспериментальными, поэтому вы не сможете распространять с их помощью расширения через интернет-магазин.

person sowbug    schedule 21.03.2013
comment
Ну, имена устройств в меню сеансов не уникальны, и иногда используется имя ОС (моя машина с Debian просто указана как Debian GNU/Linux 7.0 (wheezy)), поэтому я не думаю, что они выдают больше информации, чем пользовательские агенты. у вас есть ссылка? - person michele b; 22.03.2013
comment
Пользовательские агенты определенно пропускают информацию, и в любом случае стандартная ссылка «ничего не является приватным» — это panopticlick.eff.org. Просто для ясности: когда вы говорите имя устройства, вы имеете в виду что-то вроде Nexus 7 (что больше похоже на аппаратные возможности) или Nexus 7 Микеле (что больше похоже на уникальный идентификатор)? Поскольку вы спросили об именах хостов, я предположил последнюю интерпретацию. - person sowbug; 22.03.2013
comment
Было бы интересно узнать, как Chrome получает эти имена, они выглядят как части пользовательского агента, которым манипулируют, чтобы они выглядели более удобными для пользователя. Например, мои устройства Android перечислены с помощью имен их моделей (например, GT-I9100), тогда как моя виртуальная машина Windows 7 помечена MICHELE-LAPTOP7 (я думаю, это имя хоста? Сейчас не могу проверить). Я могу позволить пользователям разрешать конфликты имен, поэтому мне не нужна уникальность. Возможно, достаточно названия модели. Я подожду, чтобы увидеть, появится ли что-то еще, в противном случае я принимаю этот ответ, спасибо! - person michele b; 22.03.2013
comment
Спасибо. Извините, я не мог дать более полезный ответ. Chrome всегда будет более мощным, чем расширения Chrome, потому что это родное приложение. Вероятно, он вызывает API-интерфейсы уровня ОС (например, msdn.microsoft.com/en-us/library/windows/desktop/ в Windows). Но такая информация не будет предоставляться через API расширений по причинам, изложенным в моем ответе. - person sowbug; 22.03.2013

Да. Начиная с версии Chrome 43, выпущенной через некоторое время после вопроса и другого ответа здесь, вы можете получить уникальный идентификатор устройства в расширении Chrome с помощью chrome.instanceID.getID().

Имена устройств в меню «Другие устройства» (chrome://history/syncedTabs) можно найти с помощью chrome.sessions.getDevices(), но оно включает только все остальные ваши устройства, а не текущее!

person Pudica    schedule 24.02.2018