No results found
We couldn't find anything using that term, please try searching for something else.
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
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
Vous is pouvez pouvez voir démo direct https://iphub.info tapant IP VPN haut droite site tester . utilisation is simple simple :
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;
}
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
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";
}
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";
}
}
Démo sur le site officiel:https://www.iphunter.info
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
Site web:https://ip-api.com et https://members.ip-api.com
Site web:https://proxycheck.io
Codes sources :https://github.com/Mimacy/Detection-VPN