Meu Sistema Operacional: a mesma fonte de dados do navegador, o mesmo cuidado necessário
Identificar o sistema operacional usa a mesma fonte de informação já
documentada na página de Meu
Navegador: o cabeçalho User-Agent enviado pelo próprio navegador.
A ordem de checagem aqui é ainda mais crítica que na detecção de
navegador, porque os marcadores de sistema operacional têm
sobreposição real: um User-Agent de Android inclui literalmente a
palavra Linux nele (porque Android é tecnicamente
construído sobre um kernel Linux), então checar por "Linux" antes de
checar especificamente por "Android" identificaria incorretamente
qualquer celular Android como um desktop Linux.
Casos onde a ordem de checagem decide o resultado
Além do caso Android/Linux, versões específicas do Windows aparecem no User-Agent como números de versão NT internos, não o nome comercial — "Windows NT 10.0" corresponde tanto a Windows 10 quanto a Windows 11 (a Microsoft não incrementou o número de versão NT na transição entre os dois, mantendo compatibilidade com sistemas que checam essa string), então um identificador correto não consegue diferenciar os dois só pelo User-Agent — precisa reportar "Windows 10/11" como uma faixa, não um valor único, porque a informação simplesmente não está disponível nessa fonte de dados com esse nível de precisão.
Por que isso é heurística "best-effort", não garantia
Como qualquer detecção baseada em User-Agent, esta é uma aproximação de melhor esforço, não uma verificação criptográfica — coberta pela mesma ressalva de spoofing já discutida na página do navegador: o valor é fornecido pelo próprio cliente e pode ser alterado livremente. Usar essa informação para adaptar a experiência (por exemplo, sugerir o instalador correto de um software para o SO detectado) é um uso apropriado; usar como base de uma decisão que precise de garantia real (bloqueio de acesso, verificação de compatibilidade crítica) exige uma fonte de dados mais confiável do que um cabeçalho auto-declarado.