Qual é a lista de valores possíveis para navigator.platform a partir de hoje?

94

Eu sei que isso muda com frequência, mas existe uma lista tão completa quanto possível dos possíveis valores retornados por navigator.platform?

Lista até agora:

  • HP-UX
  • Linux i686
  • Linux armv7l
  • Mac68K
  • MacPPC
  • MacIntel
  • SunOS
  • Win16
  • Win32
  • WinCE
  • Iphone
  • iPod
  • iPad
  • Android
  • Amora
  • Ópera
Thomasstephn
fonte
Você olhou para browscap.ini? O projeto foi reiniciado no início deste ano.
Robbert
1
Sim, mas não está fornecendo uma lista atualizada. Por exemplo, o iPad não está nele
thomasstephn

Respostas:

159

Aviso de isenção de responsabilidade: observe que esta propriedade é enviada pelo navegador e pode, portanto, ser falsificada, assim como as strings do agente do usuário. Nunca confie no navigatorobjeto para ser totalmente preciso.


A definição

Pelo que eu sei, não há uma única lista pública de todos os navigator.platformvalores possíveis , embora a propriedade já exista há bastante tempo. Para piorar as coisas, a definição do imóvel mudou ao longo dos anos. Costumava ser:

navigator.platform indica o tipo de máquina para o qual o navegador foi compilado.

Basicamente, isso significa que a propriedade pode ser retornada Win16quando o usuário está executando um navegador compilado para 16 bits, mesmo que o usuário esteja em uma máquina Windows de 32 ou 64 bits.

É claro que W3Schools lista a definição antiga (nem mesmo vou criar um link para elas). W3 e MDN concordaram com uma definição diferente:

navigator.platform representa a plataforma na qual o navegador está sendo executado.

Ainda assim, essa definição é um pouco vaga. Uma década atrás, uma 'plataforma' seria uma arquitetura de CPU ou um sistema operacional. Nos últimos anos, dispositivos portáteis e de mídia também podem ser plataformas.


A interpretação

Como tudo na web, nosso destino está nas mãos dos poderosos fornecedores de navegadores. Neste caso, todos os principais navegadores (IE, Safari, Firefox e Chrome) concordam que minha máquina Windows de 64 bits é umWin32 plataforma. Isso significa que eles estão aderindo à velha definição no que diz respeito ao Windows, porque nenhum deles foi compilado para 64 bits até agora. Mas olhe pelo lado bom: pelo menos todos eles concordam em algo pela primeira vez.

Parece que temos um pouco mais de sorte quando se trata de dispositivos portáteis e de mídia. Como você já afirmou em sua pergunta, o iPhone, o iPod e o iPad têm um valor único, embora estejam executando o mesmo sistema operacional. Todos os dispositivos da Nintendo e da Sony também estão retornando valores únicos. Então só agoranavigator.platform está começando a parecer interessante.

Mas então chega o Opera Mini para iPhone, bagunçando as coisas novamente. Na verdade, o Opera Mini retorna um número de versão do mecanismo de código, que é uma interpretação completamente diferente deplatform tudo o que encontramos até agora. Portanto, agora estamos de volta ao ponto de partida e começamos a entender por que há tão pouca informação sobre esse assunto por aí.

Mesmo que as interpretações variem e eu não tenha uma resposta completa para você, senti que deveria adicionar meus 2 centavos para qualquer outra pessoa que estiver pesquisando a navigator.platformpropriedade.


A lista

Abaixo está uma lista (definitivamente não definida) dos valores que eu conheço que eu poderia verificar com várias fontes. Por causa da definição vaga, não tenho certeza de qual é a melhor maneira de fazer o pedido. Por enquanto, eu os dividi em algumas categorias com base no sistema operacional ou marca do dispositivo e listei informações adicionais e datas de lançamento, quando aplicável.

Android

É muito difícil testar dispositivos Android. Os dispositivos Android retornarão com Androida mesma frequência que algumas versões do Linux. Por exemplo, em um telefone Nexus 5, o navegador Android e o Chrome retornam Linux armv7l. Em casos raros, os dispositivos Android podem até retornar null(em vez de undefined).

  • Android (2008)
  • Linux: veja as notas acima
  • null

maçã

No que diz respeito ao iOS: Safari, Chrome e Mercury concordam, mas o Opera bagunça as coisas.

  • iPhone (2007)
  • iPod (2007)
  • iPad (2010)
  • iPhone Simulator: simulador enviado com Xcode
  • iPod Simulator: simulador enviado com Xcode
  • iPad Simulator: simulador enviado com Xcode
  • Macintosh
  • MacIntel: Processador Intel (2005)
  • MacPPC: Processador PowerPC
  • Mac68K: 68000 processador
  • Pike v7.6 release 92: Opera Mini 5 em qualquer iPhone (2009)
  • Pike v7.8 release 517: Opera Mini 7 em qualquer iPhone (2012)

Amora

  • BlackBerry (2003)

FreeBSD

  • FreeBSD
  • FreeBSD i386: processador x86 (IA-32)
  • FreeBSD amd64: Processador AMD x86-64

Linux

Sério não confiável porque muitas plataformas são construídas sobre isso. Por exemplo, o Chrome no ChromeOS ou Linux x86-64 retornam Linux i686como foi para o qual foram compilados.

Nota Linux ARM lista sinalizadores de arquitetura, por exemplo armv5tej, denotaria uma arquitetura ARM v5 com suporte a Thumb ('T'), um conjunto de instruções DSP ('E') e suporte Jazelle ('J').

  • Linux
  • Linux aarch64
  • Linux armv5tejl
  • Linux armv6l
  • Linux armv7l
  • Linux i686
  • Linux i686 on x86_64
  • Linux i686 X11: baseado no sistema de janelas X11
  • Linux MSM8960_v3.2.1.1_N_R069_Rev:18: Sony Xperia V
  • Linux ppc64
  • Linux x86_64
  • Linux x86_64 X11: baseado no sistema de janelas X11

Microsoft

Mesmo em um Windows 8 de 64 bits, todos eles aderem Win32.

  • OS/2 (1994 †)
  • Pocket PC
  • Windows
  • Win16: Windows 3.1x (1992 †)
  • Win32: Windows 95 e superior
  • WinCE

Mozilla (Firefox OS)

Uma string vazia é retornada no navegador da web no Firefox OS. Veja este relatório de bug .

KaiOS

O navegador da web no KaiOS (baseado no Firefox) também retorna a string vazia (igual ao Firefox OS). Veja este relatório de bug .

Nintendo

  • New Nintendo 3DS (2014)
  • Nintendo DSi (2008)
  • Nintendo 3DS (2011)
  • Nintendo Wii (2006)
  • Nintendo WiiU (2012)

OpenBSD

  • OpenBSD amd64

Symbian / S40

  • Nokia_Series_40 (1999 †)
  • S60 (2002 †)
  • Symbian: Opera em Symbian
  • Symbian OS

Palma

  • PalmOS (1996)
  • webOS (2009)

Solaris

  • SunOS
  • SunOS i86pc
  • SunOS sun4u: Processador SPARC

Sony

  • PLAYSTATION 3 (2006)
  • PlayStation 4 (2013)
  • PSP: PlayStation Portable (2004)

Vários

  • HP-UX: Hewlett-Packard UniX
  • masking-agent: o valor muda para este ao usar o Masking Agent for Firefox
  • WebTV OS
  • X11: Sistema de janelas X11

Tem um dispositivo que não está nesta lista? Deixe um comentário listando as propriedades do seu dispositivo e seu navigator.platformvalor (sinta-se à vontade para usar este JSFiddle para encontrar o valor).

Espero que isto ajude.

Robbert
fonte
Fico feliz em ajudar, Thomas.
Robbert de
Para sua informação, existem alguns navegadores de 64 bits, até mesmo o IE, se você conseguir descobrir. Portanto, às vezes pode aparecer Win64. Meu farejador de navegador está configurado para vê-lo e sinalizar o navegador como executando 64 bits. Lista muito abrangente de outra forma .. obrigado. :)
Bezelith
Existem mais alguns nesta lista: books.google.com/…
hexalys
@Bezelith: obrigado! Também vi pessoas tentando detectar sistemas de 64 bits com navigator.cpuClasse navigator.appVersion, mas nenhum deles parece confiável até agora. @hexalys: obrigado também, adicionei essas strings à lista.
Robbert
1
Não estou conseguindo verificar no momento, mas não haveria um para Xbox 360, Xbox One, PS4 também?
John Odom
21

Posso adicionar a esta lista valores definitivos para dispositivos específicos que testei.

Onde a string está Linux armv7l, ela termina em minúsculas L(para "Linux, presumivelmente?), Em vez de ser um número 1ou minúsculasI .

Para os dispositivos iOS, o teste foi realizado no Safari. Para os dispositivos Android, o teste foi realizado no navegador padrão ou Chrome se nenhum navegador padrão foi instalado.

Dos tablets Windows, o Nokia Lumia estava executando o Windows RT 8.1 com IE 11.0.9600.16476, e o MS Surface estava executando o Windows 8.1 Pro com IE 11.0.9600.16438.

Dos dispositivos Windows phones, o Nokia Lumia estava executando o Windows Phone 8.1 e o IE 11.

Telefones

Device                           OS               window.navigator.platform
---------------------------------------------------------------------------
iPhone 4                         iOS 7.1          iPhone
iPhone 5                         iOS 7.1.1        iPhone
iPhone 5c                        iOS 7.1          iPhone
iPhone 5s                        iOS 7.1          iPhone

Samsung Galaxy S2                Android 4.1.2    Linux armv7l
Samsung Galaxy S3 Mini           Android 4.1.2    Linux armv7l
Samsung Galaxy S3                Android 4.3      Linux armv7l
Samsung Galaxy S4                Android 4.4.2    Linux armv7l
Samsung Galaxy Note 3            Android 4.4.2    Linux armv7l
Samsung Galaxy S6                Android 5        Linux aarch64

Nexus 4                          Android 4.4.2    Linux armv7l
Nexus 5                          Android 4.4.2    Linux armv7l

HTC One                          Android 4.4.2    Linux armv7l
Sony Xperia Z                    Android 4.2.2    Linux armv7l
Motorola Moto G                  Android 4.4.2    Linux armv7l

Nokia Lumia 1520                 Windows 8.1      Win32

Tablets

Device                           OS               window.navigator.platform
---------------------------------------------------------------------------
iPad 2nd generation              iOS 6.1.3        iPad
iPad 2nd generation              iOS 7.0.3        iPad
iPad 4th generation              iOS 6.1.2        iPad
iPad 4th generation              iOS 6.1.3        iPad
iPad mini (non retina)           iOS 6.1.3        iPad
iPad mini (retina)               iOS 7.0.3        iPad

Samsung Galaxy Tab 2 7"          Android 4.0.3    Linux armv7l
Samsung Galaxy Tab 3 7"          Android 4.1.2    Linux armv7l
Samsung Galaxy Tab 3             Android 4.2.2    Linux i686
Samsung Galaxy Note 10.1 (2012)  Android 4.1.2    Linux armv7l
Samsung Galaxy Note 10.1 (2014)  Android 4.3      Linux armv7l

Nexus 7 (2012) 7"                Android 4.4.3    Linux armv7l
Nexus 7 (2013) 7"                Android 4.3      Linux armv7l
Nexus 10                         Android 4.4.2    Linux armv7l

Lenovo Yoga                      Android 4.2.2    Linux armv7l
Sony Xperia Z                    Android 4.3      Linux armv7l
Tesco Hudl 7"                    Android 4.2.2    Linux armv7l
Kindle Fire 7" (2012)            Unknown          Linux armv7l
Kindle Fire HDX 7" (2013)        Unknown          Linux armv7l

Asus Transformer Pad TF300T      Android 4.0.3    Linux armv7l

Nokia Lumia 2520                 Windows RT 8.1   Win32
MS Surface Tablet Pro            Windows 8.1 Pro  Win64

Desktop PC (HP)                  Windows 7 Ent.   Win32
Desktop PC (iMac)                OSX 10.8.5       MacIntel
BillyRayPreachersSon
fonte
Grande adição à minha tentativa de lista inicial, bom trabalho! Mesmo o iOS ainda pode retornar um identificador diferente em um navegador diferente - notavelmente o Opera Mini. Precisamos de um site que teste todas as combinações de dispositivo / sistema operacional / navegador ou algo assim ...
Robbert
As arquiteturas ARM usam sufixos em minúsculas para significar recursos variantes. Pelo que eu sei, lsignifica little-endian (armazenar o LSB no menor endereço, se isso fizer sentido). No entanto, existem variantes demais para controlar.
Robbert
9

Não pude postar um comentário, então deixo estes que acho que não foram mencionados acima:

+-----+--------------+--------------------------------------+
| iid | item         | value                                |
+-----+--------------+--------------------------------------+
| 448 | nav_platform | Linux armv7l                         |
| 454 | nav_platform | ARM                                  |
| 455 | nav_platform | Linux x86_64                         |
| 457 | nav_platform | PlayStation 4                        |
| 459 | nav_platform | masking-agent                        |
| 460 | nav_platform | OpenBSD amd64                        |
| 464 | nav_platform | FreeBSD amd64                        |
| 465 | nav_platform | Linux armv5tejl                      |
| 466 | nav_platform | Symbian OS                           |
| 467 | nav_platform | New Nintendo 3DS                     |
| 470 | nav_platform | Linux armv6l                         |
| 471 | nav_platform | FreeBSD                              |
| 472 | nav_platform | Symbian                              |
| 473 | nav_platform | Linux MSM8960_V3.2.1.1_N_R069_Rev:18 |
| 476 | nav_platform | Linux aarch64                        |
| 479 | nav_platform | Linux i686 on x86_64                 |
| 480 | nav_platform | Linux ppc64                          |
+-----+--------------+--------------------------------------+

"masking-agent" é uma extensão de privacidade do navegador que muda a plataforma por padrão.

O estranho e longo é um Sony Z10

justin
fonte
Muito obrigado por essas adições. Eu os adicionei à lista. Sony Z10agora mantém a coroa para o navigator.platformvalor mais longo .
Robbert
@justin Por acaso você sabe qual extensão de privacidade do navegador altera o valor para "agente de máscara"? editar: deixa para lá, vejo addons.mozilla.org/en-US/firefox/addon/masking-agent , mas suponho que ainda estou me perguntando sobre o Chrome ou outros navegadores, se alguém souber.
user4851
@ user4851 addons.mozilla.org/en-US/firefox/addon/masking-agent não está mais disponível
Christophe Roussy