Position actuelle: Accueil> Derniers articles> Comment obtenir un emplacement géographique basé sur la requête DNS en combinaison avec DNS_GET_RECORD et GEOIP?

Comment obtenir un emplacement géographique basé sur la requête DNS en combinaison avec DNS_GET_RECORD et GEOIP?

M66 2025-06-22

Dans le développement de PHP, la manière courante d'obtenir des informations d'enregistrement DNS d'un nom de domaine est d'utiliser la fonction DNS_GET_RECORD , et d'obtenir l'emplacement géographique correspondant à l'adresse IP est généralement obtenu en utilisant la bibliothèque GEOIP ou une interface tiers. Cet article présentera comment combiner ces deux, obtenir l'adresse IP via la requête DNS, puis utiliser le service GEOIP pour obtenir une acquisition de localisation géographique basée sur la requête DNS.


1. Utilisez dns_get_record pour obtenir l'adresse IP du nom de domaine

DNS_GET_RECORD est une fonction PHP intégrée qui peut renvoyer les informations d'enregistrement DNS pour un nom de domaine spécifié. Nous pouvons filtrer l'enregistrement A , c'est-à-dire l'adresse IPv4 correspondant au nom de domaine.

Exemple de code:

 <?php
$domain = "m66.net";

// Obtenir DNS A Enregistrer
$dnsRecords = dns_get_record($domain, DNS_A);

if (!empty($dnsRecords)) {
    $ip = $dnsRecords[0]['ip'];
    echo "nom de domaine $domain de IP L&#39;adresse est: $ip\n";
} else {
    echo "未找到nom de domaine $domain de A Enregistrer。\n";
}
?>

Dans le code ci-dessus, nous avons demandé un enregistrement du nom de domaine. S'il y a plusieurs, la première adresse IP sera prise.


2. Utilisez GEOIP pour obtenir l'emplacement géographique de l'IP

Après avoir obtenu l'IP, nous pouvons appeler le service GEOIP pour interroger les informations de localisation géographique. Voici deux méthodes courantes:

  • Extensions GEOIP à l'aide de PHP (comme GEOIP ou GEOIP2 )

  • Grâce aux interfaces API Web tierces (telles que IP-API.com, IPSTACK ou Taobao IP Library)

Ce qui suit démontre l'utilisation d'une interface hypothétique pour obtenir la géolocalisation en appelant une API tiers:

 <?php
$ip = "8.8.8.8"; // Exemple IP adresse

// Assumer un tiers API adresse,Remplacer par l&#39;interface disponible réelle
$apiUrl = "http://m66.net/api/geoip?ip=" . $ip;

$response = file_get_contents($apiUrl);
if ($response !== false) {
    $data = json_decode($response, true);
    if ($data && isset($data['country'], $data['city'])) {
        echo "IP $ip deEmplacement géographique: " . $data['country'] . ", " . $data['city'] . "\n";
    } else {
        echo "Échec de l&#39;analyse des informations de géolocalisation。\n";
    }
} else {
    echo "Appel GeoIP L&#39;interface a échoué。\n";
}
?>

Veuillez remplacer $ apiurl en fonction du service spécifique et faire attention à la limite de fréquence et aux exigences d'autorisation des appels d'interface.


3. Exemple complet: combinez dns_get_record et geoip pour obtenir un processus complet

Voici un exemple complet de l'intégration des deux étapes ci-dessus, démontrant comment obtenir une IP à partir d'un nom de domaine, puis interrogez la géolocalisation:

 <?php
$domain = "m66.net";

// 1. Obtenir DNS A Enregistrer
$dnsRecords = dns_get_record($domain, DNS_A);

if (!empty($dnsRecords)) {
    $ip = $dnsRecords[0]['ip'];
    echo "nom de domaine $domain de IP L&#39;adresse est: $ip\n";

    // 2. Requête IP deEmplacement géographique
    $apiUrl = "http://m66.net/api/geoip?ip=" . $ip;

    $response = file_get_contents($apiUrl);
    if ($response !== false) {
        $data = json_decode($response, true);
        if ($data && isset($data['country'], $data['city'])) {
            echo "Emplacement géographique: " . $data['country'] . ", " . $data['city'] . "\n";
        } else {
            echo "Échec de l&#39;analyse des informations de géolocalisation。\n";
        }
    } else {
        echo "Appel GeoIP L&#39;interface a échoué。\n";
    }
} else {
    echo "未找到nom de domaine $domain de A Enregistrer。\n";
}
?>

4. Résumé

  • DNS_GET_RECORD est un outil efficace pour obtenir des informations DNS dans PHP.

  • Combiné avec les services GEOIP, les informations de localisation géographique correspondantes peuvent être interrogées via IP.

  • Dans les applications pratiques, les schémas de requête géographique appropriés doivent être sélectionnés en fonction de l'interface de service, et l'attention doit être accordée à l'autorisation d'interface et aux limitations de fréquence d'appel.

  • Pour une géolocalisation plus précise, envisagez d'utiliser la base de données GEOIP2 de Maxmind ou des services payants similaires.

De cette façon, vous pouvez implémenter la fonction de requête de géolocalisation basée sur un nom de domaine dans les projets PHP pour fournir une prise en charge des données pour l'analyse du site Web, le positionnement des utilisateurs et d'autres scénarios.