Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 11/12/2015, à 19:36

Compte supprimé

Détecter le S.E. en PHP pour proposer la meilleure version à installer

Détecter le S.E. en PHP pour proposer la meilleure version par défaut à télécharger pour installer.

Voici un morceau de script sous licence CC BY-NC-SA 3.0 (Code Juridique) http://creativecommons.org/licenses/by-nc-sa/3.0/fr/ récupéré sur http://www.dewep.net/Blog/Article-7/Rec … u-visiteur ; qui permet d'identifier le système d'exploitation (S.E.) et par exemple de proposer par défaut le téléchargement adapté au système d'exploitation installé.

Le script est à adapter et améliorer…

	// Récupérer l'OS (le système d'exploitation) 
	// http://www.dewep.net/Blog/Article-7/Recuperer-l-OS-et-le-navigateur-du-visiteur
	// licence CC BY-NC-SA 3.0 (Code Juridique) http://creativecommons.org/licenses/by-nc-sa/3.0/fr/

	if (preg_match_all("#Windows NT (.*)[;|\)]#isU", $_SERVER["HTTP_USER_AGENT"], $version))
	{
		if ($version[1][0] == '6.1')
		{
			$os = 'Windows Seven';
		}
		elseif($version[1][0] == '6.0')
		{
			$os = 'Windows Vista';
		}
		elseif($version[1][0] == '5.1')
		{
			$os = 'Windows XP';
		}
		elseif($version[1][0] == '5.2')
		{
			$os = 'Windows Server 2003';
		}
		else
		{
			$os = 'Windows ' . $version[1][0];
		}
	}
	elseif (preg_match_all("#Mac (.*);#isU", $_SERVER["HTTP_USER_AGENT"], $version))
	{
		$os = 'Mac ' . $version[1][0];
	}
	elseif (preg_match("#Windows 98#", $_SERVER["HTTP_USER_AGENT"]))
	{
		$os = 'Windows 98';
	}
	elseif (preg_match("#Mac#", $_SERVER["HTTP_USER_AGENT"]))
	{
		$os = 'Mac';
	}
	elseif (preg_match("#SunOS#", $_SERVER["HTTP_USER_AGENT"]))
	{
		$os = 'SunOS';
	}
	elseif (preg_match("#Fedora#", $_SERVER["HTTP_USER_AGENT"]))
	{
		$os = 'Fedora';
	}
	elseif (preg_match("#Haiku#", $_SERVER["HTTP_USER_AGENT"]))
	{
		$os = 'Haiku';
	}
	elseif (preg_match("#Ubuntu#", $_SERVER["HTTP_USER_AGENT"]))
	{
		$os = 'Linux Ubuntu';
	}
	elseif (preg_match("#FreeBSD#", $_SERVER["HTTP_USER_AGENT"]))
	{
		$os = 'FreeBSD';
	}
	elseif (preg_match("#Linux#", $_SERVER["HTTP_USER_AGENT"]))
	{
		$os = 'Linux';
	}
	else {
		$os = 'Inconnu';
	}
	echo "<br />Le système d'exploitation détecté est ".$os." avec : ".$_SERVER["HTTP_USER_AGENT"];

Voici juste l'exemple et affichage de la détection du système d'exploitation sur mon site en bas de page «À propos du site».

Le script est à améliorer, on peut comparer les chaînes de caractères pour retrouver les versions d'Ubuntu, ou de Debian, ou autre GNU/Linux…

Dernière modification par Compte supprimé (Le 11/12/2015, à 19:52)

#2 Le 11/12/2015, à 20:57

Compte anonymisé

Re : Détecter le S.E. en PHP pour proposer la meilleure version à installer

Ca dépend ce que balance l'user agent.
PHP : Dans ta superglobale $_SERVER['HTTP_USER_AGENT']; tu récupères la chaîne de caractères de l'user agent de ton navigateur.
Javascript : document.getElementById("l_element_html_identifié_par_id").innerHTML = "Platform: " + navigator.userAgent;

Un excellent site : http://whatsmyuseragent.com/

#3 Le 12/12/2015, à 01:17

Compte supprimé

Re : Détecter le S.E. en PHP pour proposer la meilleure version à installer

jojo81 a écrit :

Ca dépend ce que balance l'user agent.
PHP : Dans ta superglobale $_SERVER['HTTP_USER_AGENT']; tu récupères la chaîne de caractères de l'user agent de ton navigateur.
Javascript : document.getElementById("l_element_html_identifié_par_id").innerHTML = "Platform: " + navigator.userAgent;

Un excellent site : http://whatsmyuseragent.com/

Le morceau de script rend une sortie comme :

Le système d'exploitation détecté est Linux Ubuntu avec : Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:42.0) Gecko/20100101 Firefox/42.0 

Ce qui permet de différencier Windows de Mac et de Sun et de FreeBSD et de GNU/Linux et de distinguer Ubuntu de Debian ou de Fedora…
Reste à compléter le script pour identifier les versions de Debian, ou de Fedora, ou d'Ubuntu… smile

Dernière modification par Compte supprimé (Le 12/12/2015, à 01:18)

#4 Le 12/12/2015, à 08:18

Compte supprimé

Re : Détecter le S.E. en PHP pour proposer la meilleure version à installer

jojo81 a écrit :

Ca dépend ce que balance l'user agent.
PHP : Dans ta superglobale $_SERVER['HTTP_USER_AGENT']; tu récupères la chaîne de caractères de l'user agent de ton navigateur.
Javascript : document.getElementById("l_element_html_identifié_par_id").innerHTML = "Platform: " + navigator.userAgent;

Un excellent site : http://whatsmyuseragent.com/

Jojo81 ? Saurais-tu adapter ce script en JavaScript s'il-te-plaît ?
(Je ne connais pas JavaScript et je n'ai pas le temps de l'apprendre, mais la détection de système va intéresser les sites qui mettent à disposition plusieurs exécutables en fonction des différentes plate-formes…)

#5 Le 12/12/2015, à 08:37

Compte anonymisé

Re : Détecter le S.E. en PHP pour proposer la meilleure version à installer

L_d_v_c@ a écrit :

Reste à compléter le script pour identifier les versions de Debian, ou de Fedora, ou d'Ubuntu… smile

Tu ne peux prendre plus d'infos sur l'OS que celles données par l'User Agent de chaque client web.
En outre, si l' user agent ne donne que "Linux x86_64", chaque visiteur de site peut l'overrider pour qu'il donne "Debian x86_64" , "Ubuntu x86_64"... mais vu la centaine de distro linux disponible, ce sera un sacré bordel wink
À ma connaissance, je ne pense pas qu'il existe d'autres méthodes pour identifier des OS basés sur Linux.

Par contre, tu peux différencier les versions 32 et 64 bits.
Il faudrait que quelqu'un teste http://whatsmyuseragent.com/ avec un plateforme Linux 32 bits pour savoir ce que l'user agent renvoie. J'ai que du 64 bits.

Dernière modification par Compte anonymisé (Le 12/12/2015, à 08:54)

#6 Le 12/12/2015, à 08:55

serged

Re : Détecter le S.E. en PHP pour proposer la meilleure version à installer

Reste aussi à détecter le processeur (x86 32 ou 64 bits, ARM etc.). Utile par exemple quand on propose un téléchargement !


LinuxMint Vera Cinnamon et d'autres machines en MATE, XFCE... 20.x , 21.x ou 19.x
Tour : Asus F2A55 / AMD A8-5600K APU 3,6GHz / RAM 16Go / Nvidia GeForce GT610 / LM21.1 Cinnamon
Portable : LDLC Mercure MH : Celeron N3450 /RAM 4Go / Intel HD graphics 500 i915 / biboot Win 10 (sur SSD) - LM21.1 MATE (sur HDD)

Hors ligne

#7 Le 12/12/2015, à 08:57

Compte supprimé

Re : Détecter le S.E. en PHP pour proposer la meilleure version à installer

serged a écrit :

Reste aussi à détecter le processeur (x86 32 ou 64 bits, ARM etc.). Utile par exemple quand on propose un téléchargement !

Ça c'est bon : sur mon ordinateur le script retourne «Linux x86_64».

#8 Le 12/12/2015, à 09:05

Compte supprimé

Re : Détecter le S.E. en PHP pour proposer la meilleure version à installer

jojo81 a écrit :
L_d_v_c@ a écrit :

Reste à compléter le script pour identifier les versions de Debian, ou de Fedora, ou d'Ubuntu… smile

Tu ne peux prendre plus d'infos sur l'OS que celles données par l'User Agent de chaque client web.
En outre, si l' user agent ne donne que "Linux x86_64", chaque visiteur de site peut l'overrider pour qu'il donne "Debian x86_64" , "Ubuntu x86_64"... mais vu la centaine de distro linux disponible, ce sera un sacré bordel wink
À ma connaissance, je ne pense pas qu'il existe d'autres méthodes pour identifier des OS basés sur Linux.

Je pense que si, mais comme tu dis, ça va être compliqué : par comparaison de la version de Firefox installée par défaut ?

Il faudrait faire une base de données dans ce cas pour les distributions les plus répandues.

Firefox user agent string reference.

Oui, il faut trouver autre chose pour différencier les évolutions d'Ubuntu par exemple.

(Pas de problème pour les processeurs : le Raspberry PI 2 est reconnu armv7l avec Ubuntu - C'est effectivement Ubuntu Mate sur processeur armv7l - BCM2836).

Dernière modification par Compte supprimé (Le 12/12/2015, à 09:30)

#9 Le 12/12/2015, à 10:11

Compte anonymisé

Re : Détecter le S.E. en PHP pour proposer la meilleure version à installer

Ludo a écrit :

Il faudrait faire une base de données dans ce cas pour les distributions les plus répandues.

Elle te servirait à quoi cette DB ? À faire sélectionner une distro par qqn ?

L_d_v_c@ a écrit :

Jojo81 ? Saurais-tu adapter ce script en JavaScript s'il-te-plaît ?
(Je ne connais pas JavaScript et je n'ai pas le temps de l'apprendre, mais la détection de système va intéresser les sites qui mettent à disposition plusieurs exécutables en fonction des différentes plate-formes…)

Ceci par exemple ?

<!DOCTYPE html>
<html>
	<body>
		<div id="infos"><!-- div identifiée par "infos" où seront écrites les infos sorties de JS--></div>
		<script>
			//J'initialise une variable à vide
			var txt = "";
			
			// Je concatène
			txt += "<p>Browser Code Name: " + navigator.appCodeName + "</p>";
			txt += "<p>Browser Name: " + navigator.appName + "</p>";
			txt += "<p>Browser Version: " + navigator.appVersion + "</p>";
			txt += "<p>Cookies Enabled: " + navigator.cookieEnabled + "</p>";
			txt += "<p>Browser Language: " + navigator.language + "</p>";
			txt += "<p>Browser Online: " + navigator.onLine + "</p>";
			txt += "<p>Platform: " + navigator.platform + "</p>";
			txt += "<p>Engine : " + navigator.product + "</p>";
			
			// Je prends la résolution disponible dans la fenêtre du navigateur
			txt += "<p>Window Available Width : " + window.innerWidth + "</p>";
			txt += "<p>Window Available Height : " + window.innerHeight + "</p>";
			
			txt += "<p><strong>User-agent header: " + navigator.userAgent + "</strong></p>";
			
			//J'applique à la div identifiée "infos" la valeur finale de txt;
			document.getElementById("infos").innerHTML = txt;
		</script>
	</body>
</html>

Dernière modification par Compte anonymisé (Le 12/12/2015, à 10:32)

#10 Le 12/12/2015, à 12:46

Compte supprimé

Re : Détecter le S.E. en PHP pour proposer la meilleure version à installer

Merci jojo81, j'ai mis les deux scripts (PHP et Java Script) bout à bout :

	// Récupérer l'OS (le système d'exploitation) 
	// http://www.dewep.net/Blog/Article-7/Recuperer-l-OS-et-le-navigateur-du-visiteur
	// licence CC BY-NC-SA 3.0 (Code Juridique) http://creativecommons.org/licenses/by-nc-sa/3.0/fr/

	if (preg_match_all("#Windows NT (.*)[;|\)]#isU", $_SERVER["HTTP_USER_AGENT"], $version))
	{
		if ($version[1][0] == '6.1')
		{
			$os = 'Windows Seven';
		}
		elseif($version[1][0] == '6.0')
		{
			$os = 'Windows Vista';
		}
		elseif($version[1][0] == '5.1')
		{
			$os = 'Windows XP';
		}
		elseif($version[1][0] == '5.2')
		{
			$os = 'Windows Server 2003';
		}
		else
		{
			$os = 'Windows ' . $version[1][0];
		}
	}
	elseif (preg_match_all("#Mac (.*);#isU", $_SERVER["HTTP_USER_AGENT"], $version))
	{
		$os = 'Mac ' . $version[1][0];
	}
	elseif (preg_match("#Windows 98#", $_SERVER["HTTP_USER_AGENT"]))
	{
		$os = 'Windows 98';
	}
	elseif (preg_match("#Mac#", $_SERVER["HTTP_USER_AGENT"]))
	{
		$os = 'Mac';
	}
	elseif (preg_match("#SunOS#", $_SERVER["HTTP_USER_AGENT"]))
	{
		$os = 'SunOS';
	}
	elseif (preg_match("#Fedora#", $_SERVER["HTTP_USER_AGENT"]))
	{
		$os = 'Fedora';
	}
	elseif (preg_match("#Haiku#", $_SERVER["HTTP_USER_AGENT"]))
	{
		$os = 'Haiku';
	}
	elseif (preg_match("#Ubuntu#", $_SERVER["HTTP_USER_AGENT"]))
	{
		$os = 'Linux Ubuntu';
	}
	elseif (preg_match("#FreeBSD#", $_SERVER["HTTP_USER_AGENT"]))
	{
		$os = 'FreeBSD';
	}
	elseif (preg_match("#Linux#", $_SERVER["HTTP_USER_AGENT"]))
	{
		$os = 'Linux';
	}
	else {
		$os = 'Inconnu';
	}

	echo "<br /><br />Le système d'exploitation détecté est ".$os." avec : ".$_SERVER["HTTP_USER_AGENT"];
	?>	
	<br />
	<div id="infos"><!-- div identifiée par "infos" où seront écrites les infos sorties de JS--></div>
			<script>
				//J'initialise une variable à vide
				var txt = "";
				
				// Je concatène
				txt += "<p>Browser Code Name: " + navigator.appCodeName + "</p>";
				txt += "<p>Browser Name: " + navigator.appName + "</p>";
				txt += "<p>Browser Version: " + navigator.appVersion + "</p>";
				txt += "<p>Cookies Enabled: " + navigator.cookieEnabled + "</p>";
				txt += "<p>Browser Language: " + navigator.language + "</p>";
				txt += "<p>Browser Online: " + navigator.onLine + "</p>";
				txt += "<p>Platform: " + navigator.platform + "</p>";
				txt += "<p>Engine : " + navigator.product + "</p>";
				
				// Je prends la résolution disponible dans la fenêtre du navigateur
				txt += "<p>Window Available Width : " + window.innerWidth + "</p>";
				txt += "<p>Window Available Height : " + window.innerHeight + "</p>";
				
				txt += "<p><strong>User-agent header: " + navigator.userAgent + "</strong></p>";
				
				//J'applique à la div identifiée "infos" la valeur finale de txt;
				document.getElementById("infos").innerHTML = txt;
			</script>

et j'obtiens :

Le système d'exploitation détecté est Linux Ubuntu avec : Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:42.0) Gecko/20100101 Firefox/42.0

Browser Code Name: Mozilla

Browser Name: Netscape

Browser Version: 5.0 (X11)

Cookies Enabled: true

Browser Language: fr

Browser Online: true

Platform: Linux x86_64

Engine : Gecko

Window Available Width : 1920

Window Available Height : 860

User-agent header: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:42.0) Gecko/20100101 Firefox/42.0

#11 Le 12/12/2015, à 12:49

Compte supprimé

Re : Détecter le S.E. en PHP pour proposer la meilleure version à installer

On dispose de la même sortie du User-agent header, qu'il faudra tester pour identifier le système d'exploitation.
Pause repas. 12h49.

Dernière modification par Compte supprimé (Le 12/12/2015, à 12:50)

#12 Le 12/12/2015, à 13:46

Compte anonymisé

Re : Détecter le S.E. en PHP pour proposer la meilleure version à installer

Oh tiens, c'est rigolo ça. Mon script te dit que tu as Ubuntu alors qu'il ne me précise pas l'OS, ni quand je suis avec Debian, ni avec Archlinux.

Suivant les distros qui fournissent Firefox, il semblerait que certaines modifient l'user agent. D'ailleurs, la dernière fois que j'ai manipulé un Firefox sous Ubuntu, celui-ci avait pour page d'accueil Ubuntu Start Page avec Google. Je pense bien qu'Ubuntu a du modifier les user agent de firefox afin que Google puisse rediriger les utilisateurs d'ubuntu vers Ubuntu Start Page, grâce au paquet Ubuntu Firefox Modifications.

Quoi qu'il en soit, je n'ai jamais vu de site web évolué détecter une distribution linux spécifique.

#13 Le 15/12/2015, à 08:31

Compte anonymisé

Re : Détecter le S.E. en PHP pour proposer la meilleure version à installer

L_d_v_c@ a écrit :

Tu peux sûrement mettre ton nom en entête dans le script, je te demandais si tu pouvais convertir le script PHP en Java Script.

Oh pardon, j'avais compris que tu me demandais de retrouver en JS toutes les informations glanées par whatsmyuseragent.com.
Je regarde ce que je peux te filer de concret.

Ludo a écrit :

Les informations que tu apportes en Java Sciript sont intéressantes, il y a les commandes PHP correspondantes, mais le but est de se concentrer sur la famille de systèmes d'exploitations, des sites comme celui de Ring ne travaillent qu'en Java Script.

Ils ont raison de choisir JS. PHP est un langage serveur, tant qu'on peut, on fait bosser les clients avec JS

Ludovic a écrit :

Il faudrait convertir le script PHP en Java

JavaScript n'est pas Java ! Tu me copies ça 100 fois wink
Non, je rigole, mais trop de monde fait cette erreur.

Ludovic a écrit :

Quant à récupérer les informations tailles d'écrans, systèmes d'exploitations, etc, et les stocker dans une base de données pour les statistiques du site, c'est interdit. FREE avait bloqué mon site LDVC@ en me disant que si je voulais redevenir visible, je devais désactiver mes enregistrements de statistiques…

Pourquoi stocker ? Je donnais ces informations en JS pour le fonctionnement du site et pas pour faire des stats.
Concernant la résolution, celle que mon JS donne, c'est celle disponible à l'intérieur la fenêtre du navigateur.

#14 Le 15/12/2015, à 08:45

Compte supprimé

Re : Détecter le S.E. en PHP pour proposer la meilleure version à installer

Merci jojo81, sinon tu m'écris trois premières lignes de test en Java Script, et je copie-collerai en adaptant les tests.
Le but est d'obtenir un script qui permettent d'obtenir une variable de système d'exploitation, si possible la version :
Windows 7, 8, 10, …
Mac (version ? je ne connais pas Mac)
GNU/Linux, Fedora, Centos, Debian, Ubuntu, … (éventuellement s'intéresser aux systèmes de paquets ? .deb ou rpm ? - ça pourrait aider les sites qui proposent un téléchargement ? )
et la cerise sur le gâteau : si on trouve pour Ubuntu, par exemple, comment différencier une 14.04, d'une 14.10, 15.04, 15.10… big_smile

#15 Le 15/12/2015, à 12:22

Compte anonymisé

Re : Détecter le S.E. en PHP pour proposer la meilleure version à installer

Voici
Désolé, je ne connais pas Mac.
J'ai bien envie de dire gtfo aux vieilles versions de windows antérieures à Vista incluse.
J'crois bien que l'algorithme est correct, c'est juste les/des chaînes de caractères qui peuvent être fausses et/ou manquantes.

<!DOCTYPE html>
<html xml:lang="fr" lang="fr" dir="ltr">
	<!-- Ah oui, quand on code sous Windows et que l'on copie colle le code vers une machine Linux, nous n'avons pas les mêmes caractères-->
	<!-- Donc, je n'oublierai plus jamais de déclarer l'encodage dans les <head></head>-->
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<title>Jojo81's OS Detector</title> <!-- Un titre, c'est toujours mieux -->
	</head>
	<body>
		<!-- Toute amélioration/modification est acceptée-->
		<div id="info"></div>
		<script>
		/* Récupération de l'User Agent */
			var userAgentHeader = navigator.userAgent;
			var infos="";
			infos += "Javascript fonctionne";
			infos += "<p> USER AGENT HEADER : " + userAgentHeader + "</p>";
		
		/* Recherche de l'OS dans l'user agent de type String  */	
			var patternOS = /\w/g;
			var resultOS= userAgentHeader.match("Linux") 
			|| userAgentHeader.match("Windows")
			|| userAgentHeader.match("Mac");
			/* Ne pas hésiter à rajouter d'autres matches, je ne les connais pas tous : || userAgentHeader.match("autre OS")
			Attention à la place du ; , toutes ces lignes ne sont qu'une seule instruction */
			if (distro == null)
			{
				distro = "OS inconnu";
			}
			
		/* Recherche de la distribution dans l'user agent de type String  */	
			var distro;
			var patternDistro = /\w/g;
			distro = userAgentHeader.match("Ubuntu")
			|| userAgentHeader.match("Debian")
			|| userAgentHeader.match("Fedora")
			|| userAgentHeader.match("Arch");
			/* Ne pas hésiter à rajouter d'autres matches, je ne les connais pas tous : || userAgentHeader.match("autre distribution")
			Attention à la place du ; , toutes ces lignes ne sont qu'une seule instruction */
			if (distro == null)
			{
				distro = "";
			}
			
		/* Recherche du type de processeur dans l'user agent de type String  */	
			var proc6432;
			var patternProc = /\w/g;
			if ( userAgentHeader.match("x86_64")
			|| userAgentHeader.match("WOW64"))
			{
				proc6432 = "64 bits";
			}
			else if ( userAgentHeader.match("32") 
			|| userAgentHeader.match("i686")
			|| userAgentHeader.match("i386")
			)
			{
				proc6432 = "32 bits";
			}
			/* Ne pas hésiter à rajouter d'autres matches, je ne les connais pas tous : || userAgentHeader.match("autre processeur") dans une condition else if*/
			else 
			{
				proc6432 = "(Processeur inconnu)";
			}
			infos += "<p> OS détecté :<br>" + resultOS + " " + distro+ " " +proc6432+ "</p>";
		
		/* Retour des résultats dans la div identifiée par "info" */
			document.getElementById("info").innerHTML = infos;
		</script>
	</body>
</html>

EDIT : Petites modifications

Dernière modification par Compte anonymisé (Le 15/12/2015, à 16:53)

#16 Le 15/12/2015, à 12:53

Compte supprimé

Re : Détecter le S.E. en PHP pour proposer la meilleure version à installer

Et tu fais quoi des professionnels qu continuent d'utiliser windows XP ? (avec les mises à jour bien évidemment) tongue

#17 Le 15/12/2015, à 12:54

Compte supprimé

Re : Détecter le S.E. en PHP pour proposer la meilleure version à installer

Merci pour ce début de script jojo81, je vais essayer de le compléter, avec les processeurs ARM, etc… wink

#18 Le 15/12/2015, à 16:56

Compte anonymisé

Re : Détecter le S.E. en PHP pour proposer la meilleure version à installer

L'UAH de Ludo a écrit :

User-agent header: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:42.0) Gecko/20100101 Firefox/42.0

Ludo, est-ce que mon nouveau scrpit marche quand ton UAH déclare à tout le monde que tu as installé Ubuntu ?

Dernière modification par Compte anonymisé (Le 15/12/2015, à 16:56)

#19 Le 16/12/2015, à 16:34

serged

Re : Détecter le S.E. en PHP pour proposer la meilleure version à installer

L_d_v_c@ a écrit :

Et tu fais quoi des professionnels qu continuent d'utiliser windows XP ? (avec les mises à jour bien évidemment) tongue

Et les aéroports qui utilisent Windows 3.1 ?


LinuxMint Vera Cinnamon et d'autres machines en MATE, XFCE... 20.x , 21.x ou 19.x
Tour : Asus F2A55 / AMD A8-5600K APU 3,6GHz / RAM 16Go / Nvidia GeForce GT610 / LM21.1 Cinnamon
Portable : LDLC Mercure MH : Celeron N3450 /RAM 4Go / Intel HD graphics 500 i915 / biboot Win 10 (sur SSD) - LM21.1 MATE (sur HDD)

Hors ligne

#20 Le 27/02/2016, à 19:14

Sabina75

Re : Détecter le S.E. en PHP pour proposer la meilleure version à installer

Tu dois aussi pouvoir récupérer les données de appversion, oscpu et platform. J'ai vu que certains user-agent changers ne changeaient pas ces données, ce qui permet, avec javascript (et surement en php ou via Flash) de récupérer le véritable système d'exploitation caché derrière ce genre de manip. Je ne parle même pas du fingerprint canvas.

De plus, j'ai vu que random user-agent changer ne spoofait pas correctement le BuildID sur firefox, ce qui rend donc le spoofing détectable. Une firefox avec un BuildID de "0" est donc une firefox spoofée. D'autant plus que c'est le numéro BuildID utilisé par le navigateur firefox de Tor.

Et enfin, sur Chrome et consors, on ne peut que spoofer l'useragent, pas tout le reste, ce qui le rend quasiment inutile.

Donc peut-être quelques pistes pour compléter ton script, si ça t'intéresse ?!

Dernière modification par Sabina75 (Le 27/02/2016, à 19:16)


My Hardened Ubuntu 14.04 LTS 64 bits / Grsecurity & AppArmor / Laptop Dell Latitude.
VirtualBox : Windows 7 32 bits.
Next : Moving to ArchLinux ?

Hors ligne

#21 Le 27/02/2016, à 21:53

Compte supprimé

Re : Détecter le S.E. en PHP pour proposer la meilleure version à installer

Merci.
Le but de ce sujet n'est que de présélectionner des variables pour les systèmes non-trafiqués, afin de proposer le bon téléchargement sans passer par un choix multiple GNU/Linux | *BSD | Mac | Microsoft.

Mais de proposer d'afficher lors d'un accès aux téléchargements :

Votre système d'exploitation détecté est …, voulez vous télécharger la version présélectionnée ? ou autre choix manuel ?

Dernière modification par Compte supprimé (Le 27/02/2016, à 21:58)