Dispositivo affidabile / browser / rilevamento del sistema operativo [chiuso]

-4

Esiste un modo affidabile per rilevare il dispositivo / browser / sistema operativo dei visitatori di una pagina Web ad eccezione dell'utilizzo della stringa dell'agente utente?

Questo non è per il rendering / funzionalità della pagina web / dell'applicazione, ma solo per le statistiche (quante percentuali di visitatori usano ipad, iphone, pc, mac, chrome, edge, firefox ecc.)

Questo può essere fatto dal lato client JavaScript o dal lato server.

    
posta Mr Zach 01.02.2018 - 15:45
fonte

2 risposte

2

Prima di tutto, non ci si può fidare delle stringhe dell'Agente Utente. I browser possono, e vogliono, mentire a voi - in particolare i browser per dispositivi mobili, poiché spesso dispongono di funzionalità che possono essere considerate la versione desktop come una casella di controllo facile da trovare. Ma sono l'unico modo per ottenere qualsiasi informazione di sistema da ogni browser.

Suppongo che, dal momento che stai guardando le statistiche, potrai salvare tutte le stringhe UA che ricevi da qualche parte.

Grazie a decenni di standard incoerenti hai bisogno di rassegnarti al fatto che i produttori di browser hanno riempito le loro stringhe UA con un sacco di assurdità e che dovrai sbrogliare quel casino e fare un po 'di analisi e, anche mettendoci un sacco di tempo, non sarà mai perfetto.

Per prima cosa devi capire il formato delle stringhe UA. Le stringhe UA dovrebbero essere del formato:

Mozilla/5.0 (platform(comment); ...; ...) extension/version ... ... 

Internet Explorer si riporta sotto la sezione "Piattaforma", nell'elenco dei punti delimitati da parentesi tra parentesi, la maggior parte degli altri browser riporta se stessi nell'area "Estensione".

Secondo la guida alle stringhe User-Agent su MDN e l'elenco completo su UserAgentString.com segue come segue adesso :

  • L'ultima estensione di Edge è "Edge (versione)"
  • Internet Explorer contiene la stringa "MSIE (versione)" nella sezione "Prodotto"
    • Alcuni browser, come il browser incorporato AOL, riportano MSIE e lo seguono con AOL (versione)
  • Safari termina sempre con "Safari / (versione)", e non includi "Chrome" come estensione
  • Firefox finisce sempre con "Firefox / (versione)"
  • Chrome termina sempre con "Chrome / (versione) Safari / (versione)"
  • Altri browser meno conosciuti (come Opera) spesso imitano la stringa UA di Chrome o di Firefox, ma aggiungono il loro browser alla fine, quindi sarebbe "Firefox / (versione) (MyBrowser) / (versione)"

Da qui dovresti essere in grado di scrivere un programma che comprenda, con una precisione decente, ciò che ciascun browser ti sta dicendo. Otterrai falsi positivi e probabilmente alcuni falsi negativi, ma spetta a te decidere quanto lavoro impiegare per migliorare la tua precisione.

Ad esempio, la stringa UA che hai postato in risposta a Jorg

"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"

è più che probabile da Chrome, non da Edge, poiché non termina con Edge / (versione). Infatti non include Edge in nessuna parte della stringa UA. Anche in questo caso, se ha venuto da Edge, è probabile che si verifichi qualche spoofing UA e, in tal caso, non puoi discerne in modo affidabile.

[Modifica] (Come per il commento qui sotto, Edge non riporta sempre 'Edge', ma riporta "Windows NT 10.0; Win64; x64" nella sua area Piattaforma.)

Ora, se questo sembra un sacco di lavoro (e lo è) potresti semplicemente andare con un sistema standard, come Google Analytics *, che ha già messo in opera per te e funziona abbastanza bene e fare molto di più rispetto alla semplice segnalazione sull'utilizzo del browser.

* (sono disponibili altri servizi di analisi)

    
risposta data 06.02.2018 - 16:51
fonte
0

No.

Questa è la natura fondamentale della comunicazione basata sui messaggi. Puoi solo osservare ciò che l'altra parte sceglie di dirti. Se scelgono di mentirti (per qualsiasi motivo), allora non c'è modo per te di scoprire la verità, infatti, non c'è nemmeno un modo per farti sapere che questa non è la verità (e persino se ti è stato detto la verità, non ci sarebbe stato modo per te di sapere che ).

Puoi indovinare, puoi usare l'euristica, puoi scegliere di fidarti sempre dell'altra parte, ma non può essere una soluzione "affidabile".

    
risposta data 02.02.2018 - 09:09
fonte

Leggi altre domande sui tag