calculer document
[PHP] Détecter un VPN, Proxy, VPS ou Serveur dédié à partir d’une adresse IP

[PHP] Détecter un VPN, Proxy, VPS ou Serveur dédié à partir d’une adresse IP

2024-11-13 [PHP] Détecter un VPN, un Proxy, un VPS ou un Serveur dédié à partir d'une adresse IP Rédigé par admin

Related articles

VPN ou proxy : pour quelle solution opter en 2024 ? (Comparaison) VPN : à quoi ça sert ? Définition et explication simple pour débutant Se connecter à un VPN dans Windows 10 Avis sur le VPN gratuit TunnelBear : test complet sur du VPN 10 extensions VPN gratuites pour Chrome Configurer TP-Link avec NordVPN

[PHP] Détecter un VPN, un Proxy, un VPS ou un Serveur dédié à partir d’une adresse IP


Rédigé par admin



1 commentaire

Depuis longtemps je recherchais un truc fiable sur Google pour détecter l’IP d’un visiteur en PHP savoir il is utilise utilise ip résidence , hébergeur serveur dédié VPS ( forcément détecte VPN , PROXY BNC ) .

J’ai donc trouvé 6 bons détecteurs de VPN (ce sont des APIs) :

Sommaire

  1. API IPHub
  2. API GetIPintel
  3. API Blackbox
  4. API IPHunter
  5. IP-API
  6. API Proxycheck.IO

1) Détecteur N°1 :l’API de https://iphub.info

Avantages :

  • Gratuit :1000 requests par jour.
  • Compatible avec IPv4/IPv6.

Inconvénients :

  • Payant au-delà de 1000 requests/jour.
  • Tarif très cher.

Vous is pouvez pouvez voir démo direct https://iphub.info tapant IP VPN haut droite site tester . utilisation is simple simple :

 

  • Il suffit de s’inscrire sur le site pour obtenir une clé API – Une version Free à 50 requêtes par minute c’est assez, il suffira juste de bidouiller le code php afin d’éviter qu’il s’exécute chez les abonnés Orange, Free, SFR etc.. car eux il faut les considérer directement comme des « block=0 ».
  • Récupérez votre clé API.
  • Testez ensuite ce code PHP (sans oublier d’entrer votre clé API ):

function getBooleanFAI($ip) {
 $host = @gethostbyaddr($ip); 
 $fai = false;
 if(substr_count($host, 'proxad')) $fai = true;
 if(substr_count($host, 'orange')) $fai = true;
 if(substr_count($host, 'wanadoo')) $fai = true;
 if(substr_count($host, 'sfr')) $fai = true;
 if(substr_count($host, 'club-internet')) $fai = true;
 if(substr_count($host, 'neuf')) $fai = true;
 if(substr_count($host, 'gaoland')) $fai = true;
 if(substr_count($host, 'bbox')) $fai = true;
 if(substr_count($host, 'bouyg')) $fai = true;
 if(substr_count($host, 'numericable')) $fai = true;
 if(substr_count($host, 'tele2')) $fai = true;
 if(substr_count($host, 'videotron')) $fai = true;
 if(substr_count($host, 'belgacom')) $fai = true;
 if(substr_count($host, 'bell.ca')) $fai = true;
 return $fai;
}


// ignore the French Internet Providers
if ( getBooleanFAI($_SERVER["REMOTE_ADDR"]) == false   ) {

$ip = gethostbyname($_SERVER["REMOTE_ADDR"]);
 $ch = curl_init();
 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 curl_setopt($ch, CURLOPT_URL, 'http://v2.api.iphub.info/ip/'.$ip);
 curl_setopt($ch, CURLOPT_HTTPHEADER, array('X-Key:[Entrer la clé API ici]')); // Obtenez votre clé en vous inscrivant sur https://iphub.info 
 $result = curl_exec($ch);
 curl_close($ch);

$obj = json_decode($result, true);

$isp = $obj['isp'];

if($obj['block'] == '0'){
 $block = "IP résidentielle / non classifiée (c'est-à-dire Safe IP)";
 }
 else if($obj['block'] == '1'){
 $block = "Détection d'un VPN ou PROXY ou VPS ou Serveur dédié ou hébergeur hosting...";
 }
 else if($obj['block'] == '2'){
 $block = "IP non résidentielle et résidentielle (avertissement, peut flagrant des personnes innocentes)";
 }
 else {
 $block = "Connexion inconnu";
 }

 echo $block;

}

La documentation :

Le bloc de paramètres a été conçu avec soin pour permettre à nos utilisateurs de déterminer leur propre «niveau de risque». Nous vous recommandons d’utiliser cette variable lorsque vous décidez de bloquer l’IP interrogée pour accéder à votre application.

$obj[‘block’] = 0 – IP résidentiel / non classifié (c’est-à-dire IP sécurisé)

$obj[‘block’] = 1 – IP non résidentiel (fournisseur d’hébergement, proxy, etc.)

$ obj[‘block ‘ ] = 2 – IP non résidentiel résidentiel ( avertissement , flagrant personnes innocentes )

Nous recommandons généralement aux gens d’utiliser le niveau de risque 1 (c’est-à-dire, seul bloc sur bloc == 1). Il offre le meilleur équilibre entre arrêter les utilisateurs malveillants et éviter les faux positifs.   Les variables retournées par l’API sont:

$obj[‘ip’] :IP du visiteur (Inutile dans mon cas car j’utilise $ _ SERVER[‘REMOTE_ADDR ‘ ] )

$obj[‘hostname’] : Hostname visiteur ( mieux utilisergethostbyname($ _ SERVER[‘REMOTE_ADDR ‘ ]) )

$obj[‘countryCode’] : Code du pays du visiteur (équivalent à geoip_country_code_by_name($ _ SERVER[‘REMOTE_ADDR ‘ ]) )

$ obj[‘countryName ‘ ] : Nom du pays

$obj[‘asn’] : Récupère ASN is Récupère ( Autonomous System Numbers )

$obj[‘isp’] : Récupère ISP , dirait nom F.A.I hébergeur c’ is utile utile .

$ obj[‘block ‘ ] : Déjà expliqué. Le plus utile pour détecter un VPN c’est la valeur « 1 ».

	"ip":"8.8.8.8", 
	"hostname":"google-public-dns-a.google.com", 
	"countryCode":"US", 
	"countryName":"United States", 
	"asn":15169, 
	"isp":"GOOGLE - Google Inc.", 
	"block":1

 

2) Détecteur N°2 :l’API de http://check.getipintel.net

Avantages :

  • Gratuit :500 requests par jour maximum.
  • Compatible IPv4/IPv6

Inconvénients :

  • Limité à 15 requests par minute

http://check.getipintel.net/check.php?ip=xx.xx.xx.xx&contact=AdresseEmail@site.com La valeur « 0 » indique que l’IP est fiable (type résidentiel), la valeur « 2 » indique que l’IP est probablement un serveur ou un vps ou tout autres choses en rapport avec les hébergeurs comme les vpn/proxys/bnc etc… Voir la documentation complète:http://getipintel.net Les requêtes sont t’elles limitées ? Aucune idée. Voici un exemple de script PHP pour l’utiliser:



$ip = gethostbyname($_SERVER["REMOTE_ADDR"]);
 $ch = curl_init();
 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 curl_setopt($ch, CURLOPT_URL, 'http://check.getipintel.net/check.php?ip='.$ip.'&contact=AdresseEmail@VotreDomaine.com');
 $result = curl_exec($ch);
 curl_close($ch);

if($result == '0'){
 echo "IP résidentielle / non classifiée (c'est-à-dire Safe IP)";
}
else if($result == '1'){
 echo "Détection d'un VPN ou PROXY ou VPS ou Serveur dédié ou hébergeur hosting...";
}
else {
 echo "Connexion inconnue";
}

3) Détecteur N°3 :l’API de https://blackbox.ipinfo.app

Avantages :

  • Requests illimité
  • IPv4
  • IPv6

Inconvénients :

https://blackbox.ipinfo.app/lookup/xx.xx.xx.xx – La valeur « Y » indique que l’IP est un VPN/ServeurDédié… et la valeur « N » indique que l’IP est fiable de type résidentielle, le « X » indique une erreur. Aucune idée si les requêtes sont limités ou non mais il semblerait que c’est illimité ce qui est bien.
Le site officiel:https://blackbox.ipinfo.app


function getBooleanFAI($ip) {
 $host = @gethostbyaddr($ip);
 $fai = false;
 if(substr_count($host, 'proxad')) $fai = true;
 if(substr_count($host, 'orange')) $fai = true;
 if(substr_count($host, 'wanadoo')) $fai = true;
 if(substr_count($host, 'sfr')) $fai = true;
 if(substr_count($host, 'club-internet')) $fai = true;
 if(substr_count($host, 'neuf')) $fai = true;
 if(substr_count($host, 'gaoland')) $fai = true;
 if(substr_count($host, 'bbox')) $fai = true;
 if(substr_count($host, 'bouyg')) $fai = true;
 if(substr_count($host, 'numericable')) $fai = true;
 if(substr_count($host, 'tele2')) $fai = true;
 if(substr_count($host, 'videotron')) $fai = true;
 if(substr_count($host, 'belgacom')) $fai = true;
 if(substr_count($host, 'bell.ca')) $fai = true;
 return $fai;
}


// ignore the French Internet Providers
if ( getBooleanFAI($_SERVER["REMOTE_ADDR"]) == false   ) {

	$ip = gethostbyname($_SERVER["REMOTE_ADDR"]);
	 $ch = curl_init();
	 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
	 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
	 curl_setopt($ch, CURLOPT_URL, 'https://blackbox.ipinfo.app/lookup/'.$ip);
	 $result = curl_exec($ch);
	 curl_close($ch);
	
	if($result == 'N'){
	 echo "IP résidentielle / non classifiée (c'est-à-dire Safe IP)";
	}
	else if($result == 'Y'){
	 echo "Détection d'un VPN ou PROXY ou VPS ou Serveur dédié ou hébergeur hosting...";
	}
	else {
	 echo "Connexion inconnue";
	}

}


 

4) Détecteur N°4 :l’API de IPhunter.info

Démo sur le site officiel:https://www.iphunter.info

Avantages :

  • Gratuit : Jusqu’à 1000 requests par jour pendant 15 jours.
  • Aucune limitation à la minute.
  • Compatible IPv4 / IPv6 .
  • Prix très correct (jusqu’à 60 000 requests/jour pour 3€99 par mois).
  • PayPal accepté.

Inconvénients :

  • Payant au-delà de 1000 requests/jour

Comment utiliser l’API ?


function getBooleanFAI($ip) {
 $host = @gethostbyaddr($ip); 
 $fai = false;
 if(substr_count($host, 'proxad')) $fai = true;
 if(substr_count($host, 'orange')) $fai = true;
 if(substr_count($host, 'wanadoo')) $fai = true;
 if(substr_count($host, 'sfr')) $fai = true;
 if(substr_count($host, 'club-internet')) $fai = true;
 if(substr_count($host, 'neuf')) $fai = true;
 if(substr_count($host, 'gaoland')) $fai = true;
 if(substr_count($host, 'bbox')) $fai = true;
 if(substr_count($host, 'bouyg')) $fai = true;
 if(substr_count($host, 'numericable')) $fai = true;
 if(substr_count($host, 'tele2')) $fai = true;
 if(substr_count($host, 'videotron')) $fai = true;
 if(substr_count($host, 'belgacom')) $fai = true;
 if(substr_count($host, 'bell.ca')) $fai = true;
 return $fai;
}


$ip = $_SERVER["REMOTE_ADDR"]; //-- IP à consulter
	
// ignore les FAIs
if ( getBooleanFAI($ip) == false   ) {


	$apiKey = 'your_api_key'; // Votre clef API (inscription requise)
	
	$headers = [
		'X-Key:'.$apiKey, 
	];
	$ch = curl_init("https://www.iphunter.info:8082/v1/ip/".$ip);
	curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
	
	$output = json_decode(curl_exec($ch), 1);
	$http_status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
	curl_close($ch);
	
	 if($output['data']['block'] == 0){
	 	$block = "IP résidentielle / non classifiée (c'est-à-dire Safe IP)";
	 }
	 else if($output['data']['block'] == 1){
	 	$block = "Détection d'un VPN ou PROXY ou VPS ou Serveur dédié ou hébergeur hosting...";
	 }
	 else if($output['data']['block'] == 2){
	 	$block = "IP non résidentielle et résidentielle (avertissement, peut flagrant des personnes innocentes)";
	 }
	 else {
	 	$block = "Connexion inconnu";
	 }
	 
	 echo $block;


}

Plus d’informations ici :https://www.iphunter.info/docs/jsonkeys

5) Détecteur N°5 :l’API de ip-api.com

Site web:https://ip-api.com et https://members.ip-api.com

Avantages :

  • Gratuit : Jusqu’à 45 requests par minute.
  • Compatible IPv4 / IPv6 .
  • Prix 13 € mois ( requests illimités ) .
  • PayPal accepté.

Inconvénients :

6) Détecteur N°6 :l’API de proxycheck.io

Site web:https://proxycheck.io

Avantages :

  • Gratuit : Jusqu’à 1000 requests par jour.
  • Compatible IPv4 / IPv6 .
  • Prix d’environ 4$ par mois (jusqu’à 20 000 requests par jour).
  • PayPal accepté sur demande.

Inconvénients :

 

Codes sources :https://github.com/Mimacy/Detection-VPN

 

 

 


Classé dans :
Accueil, Accueil, Codes PHP

Mots clés :
detection VPN, detect vpn php, detect proxy php, anti vpn php, anti vpn api, anti vpn detection, anti vpn javascript, anti vpn proxy, vpn detection tool, détection ip serveur dédié