J'ai récemment commencé à m'interroger sur les sites comme http://thismachine.info/ qui obtiennent les informations sur le système d'exploitation de l'utilisateur. Je n'ai pas été en mesure de savoir comment faire cela avec PHP et je voulais essayer de le comprendre.
J'ai remarqué qu'ils répertorient le user-agent
, ce qui donne beaucoup d'informations sur le navigateur. Obtiennent-ils les informations sur le système d'exploitation à partir de cela ou de quelque chose d'autre? Existe-t-il une API que je pourrais utiliser pour obtenir le système d'exploitation de l'utilisateur?
Je vois comment ils ont obtenu le navigateur et l'adresse IP, mais n'ont pas pu comprendre la partie du système d'exploitation!
php
operating-system
user-agent
Pattyd
la source
la source
echo $_SERVER['HTTP_USER_AGENT'];
montrera (dans une certaine mesure) le système d'exploitation de l'utilisateur. Pour moi, il a détectéMozilla/5.0 (Windows NT 5.1; rv:22.0) Gecko/20100101 Firefox/22.0
, où j'utilise en fait Windows XP, donc ce n'est pas une science exacte.http://thismachine.info/
savoir que j'utilise Windows XP? Cela je ne sais pas, mais ils doivent utiliser un script qui trouvera et remplacera puis le fera écho par la suite. À ma connaissance, rien ne déterminera le système d'exploitation exact, car je vois que cela relèverait du domaine des valeurs mobilières.Windows XP
du tableau/windows nt 5.1/i' => 'Windows XP',
Réponses:
Le code ci-dessous pourrait expliquer à lui seul comment http://thismachine.info/ est capable de montrer quel système d'exploitation quelqu'un utilise.
Ce qu'il fait, c'est qu'il renifle votre modèle de système d'exploitation de base, par exemple
windows nt 5.1
comme le mien.Il transmet ensuite Windows nt 5.1 / i à Windows XP comme système d'exploitation.
Utilisation: à
'/windows nt 5.1/i' => 'Windows XP',
partir d'un tableau.Vous pourriez dire des conjectures ou une approximation, mais néanmoins à peu près tout.
Emprunté à une réponse sur SO https://stackoverflow.com/a/15497878/
Notes de bas de page: ( 19 janvier 2014 ) Il y a eu une modification suggérée le 18 janvier 2014 pour ajouter
/msie|trident/i
par YJSoft un nouveau membre sur SO.Le commentaire se lisait comme suit:
Commentaire: parce que l'UA de msie11 n'inclut pas msie (il inclut le trident à la place)
J'ai fait des recherches sur cela pendant un moment et j'ai trouvé quelques liens expliquant la chaîne Trident.
Bien que la modification ait été rejetée (pas par moi-même, mais par certains des autres éditeurs), il vaut la peine de lire les liens ci-dessus et d'utiliser votre bon jugement.
Selon une question posée sur la détection de SUSE, nous avons trouvé ce morceau de code à l'URL suivante:
Code supplémentaire:
Edit: 12 avril 2015
J'ai remarqué hier une question qui pourrait être pertinente pour cette Q&R et qui pourrait être utile pour certains. En ce qui concerne:
Mozilla/5.0 (Linux; Android 4.4.2; SAMSUNG-GT-I9505 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.96 Mobile Safari/537.36
Une autre modification , et l'ajout d'un lien de référence qui a été demandé (et répondu / accepté aujourd'hui, 4/16 novembre) qui peut être utile.
Consultez les questions-réponses ici sur Stack:
la source
'/windows nt 6.3/i'
est pour Windows 8.1"mavericks HTTP_USER_AGENT"
Googling @ben_aaron'/cros/i' => 'Chrome OS'
Lorsque vous accédez à un site Web, votre navigateur envoie une requête au serveur Web contenant de nombreuses informations. Ces informations peuvent ressembler à ceci:
Ces informations sont toutes utilisées par le serveur Web pour déterminer comment traiter la demande; la langue préférée et si la compression est autorisée.
En PHP, toutes ces informations sont stockées dans le
$_SERVER
tableau. Pour voir ce que vous envoyez à un serveur Web, créez un nouveau fichier PHP et imprimez tout ce qui se trouve dans le tableau.Cela vous donnera une belle représentation de tout ce qui est envoyé au serveur, d'où vous pourrez extraire les informations souhaitées, par exemple
$_SERVER['HTTP_USER_AGENT']
pour obtenir le système d'exploitation et le navigateur.la source
A pris le code suivant du manuel php pour get_browser .
Le
$browser
tableau contient desplatform
informations qui vous donnent le système d'exploitation spécifique utilisé.Veuillez vous assurer de voir la section «Notes» sur cette page. Cela pourrait être quelque chose que (thismachine.info) utilise sinon quelque chose déjà indiqué dans d'autres réponses.
la source
Sur la base de la réponse de Fred-II, je voulais partager mon point de vue sur la fonction getOS, cela évite les globaux, fusionne les deux listes et détecte l'architecture (x32 / x64)
la source
Si vous souhaitez obtenir toutes ces informations, vous pouvez lire ceci:
http://php.net/manual/en/function.get-browser.php
Vous pouvez exécuter l'exemple de code et vous verrez comment cela fonctionne:
L'exemple ci-dessus affichera quelque chose de similaire à:
la source
Si vous voulez très peu d'informations comme une classe dans votre html pour les navigateurs courants par exemple, vous pouvez utiliser:
qui renverra "safari" ou "firefox" ou "chrome", ou "ie ie8", "ie ie9", "ie ie10", "ie ie11".
la source
Vous pouvez rechercher ces informations dans
$_SERVER['HTTP_USER_AGENT']
, mais son format est de forme libre, l'envoi n'est pas garanti et pourrait facilement être modifié par l'utilisateur, que ce soit pour des raisons de confidentialité ou pour d'autres raisons.Si vous n'avez pas défini la
browsecap
directive, cela renverra un avertissement. Pour vous assurer qu'il est défini, vous pouvez récupérer la valeur à l'aide deini_get
et voir si elle est définie.Comme kba l'a expliqué dans sa réponse, votre navigateur envoie beaucoup d'informations au serveur lors du chargement d'une page Web. La plupart des sites Web utilisent ces informations utilisateur-agent pour déterminer le système d'exploitation, le navigateur et diverses informations du visiteur.
la source