現在の位置: ホーム> 最新記事一覧> DNS_GET_RECORDおよびGEOIPと組み合わせてDNSクエリに基づいて地理的位置を取得する方法は?

DNS_GET_RECORDおよびGEOIPと組み合わせてDNSクエリに基づいて地理的位置を取得する方法は?

M66 2025-06-22

PHP開発では、ドメイン名のDNSレコード情報を取得する一般的な方法は、 DNS_GET_RECORD関数を使用し、IPアドレスに対応する地理的位置を取得することです。通常、GEOIPライブラリまたはサードパーティインターフェイスを使用して達成されます。この記事では、これら2つを組み合わせ、DNSクエリを介してIPアドレスを取得し、GEOIPサービスを使用してDNSクエリに基づいて地理的位置取得を実現する方法を紹介します。


1.DNS_GET_RECORDを使用して、ドメイン名のIPアドレスを取得します

DNS_GET_RECORDは、指定されたドメイン名のDNSレコード情報を返すことができる組み込みのPHP関数です。 Aレコード、つまりドメイン名に対応するIPv4アドレスをフィルタリングできます。

サンプルコード:

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

// 得る DNS A 記録
$dnsRecords = dns_get_record($domain, DNS_A);

if (!empty($dnsRecords)) {
    $ip = $dnsRecords[0]['ip'];
    echo "ドメイン名 $domain の IP アドレスはです: $ip\n";
} else {
    echo "未找到ドメイン名 $domain の A 記録。\n";
}
?>

上記のコードでは、ドメイン名のAレコードを要求しました。複数の場合、最初のIPアドレスが取得されます。


2。geoipを使用して、IPの地理的位置を取得します

IPを取得した後、GEOIPサービスを呼び出して地理的位置情報を照会できます。ここに2つの一般的な方法があります。

  • PHPを使用したGEOIP拡張機能( GEOIPGEOIP2など)

  • サードパーティのWeb APIインターフェイス(IP-API.com、IPStack、Taobao IPアドレスライブラリなど)を介して

以下は、サードパーティのAPIを呼び出すことにより、地理的なインターフェイスを使用する仮想インターフェイスの使用を示しています。

 <?php
$ip = "8.8.8.8"; // 例 IP 住所

// サードパーティを想定します API 住所,実際の利用可能なインターフェイスに置き換えます
$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 の地理的位置: " . $data['country'] . ", " . $data['city'] . "\n";
    } else {
        echo "ジオロケーション情報を解析できませんでした。\n";
    }
} else {
    echo "電話 GeoIP インターフェイスが失敗しました。\n";
}
?>

特定のサービスに従って$ APIURLを交換し、インターフェイスコールの周波数制限および承認要件に注意してください。


3.包括的な例:DNS_GET_RECORDとGEOIPを組み合わせて完全なプロセスを実現する

上記の2つのステップを統合し、ドメイン名からIPを取得し、ジオロケーションを照会する方法を示す完全な例を次に示します。

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

// 1. 得る DNS A 記録
$dnsRecords = dns_get_record($domain, DNS_A);

if (!empty($dnsRecords)) {
    $ip = $dnsRecords[0]['ip'];
    echo "ドメイン名 $domain の IP アドレスはです: $ip\n";

    // 2. クエリ IP の地理的位置
    $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 "地理的位置: " . $data['country'] . ", " . $data['city'] . "\n";
        } else {
            echo "ジオロケーション情報を解析できませんでした。\n";
        }
    } else {
        echo "電話 GeoIP インターフェイスが失敗しました。\n";
    }
} else {
    echo "未找到ドメイン名 $domain の A 記録。\n";
}
?>

4。概要

  • DNS_GET_RECORDは、PHPでDNS情報を取得するための効果的なツールです。

  • GEOIPサービスと組み合わせて、対応する地理的位置情報はIPを介して照会できます。

  • 実際のアプリケーションでは、サービスインターフェイスに基づいて適切な地理的位置クエリスキームを選択する必要があり、インターフェイス認証と呼び出し頻度の制限に注意を払う必要があります。

  • より正確な地理配分については、MaxmindのGeoIP2データベースまたは同様の有料サービスの使用を検討してください。

このようにして、PHPプロジェクトにドメイン名ベースのジオロケーションクエリ関数を実装して、ウェブサイト分析、ユーザーポジショニング、その他のシナリオのデータサポートを提供できます。