根据ip地址获取地理位置_免费从IP地址获取地理信息

根据ip地址获取地理位置

假设您需要知道访问您网站的人来自哪个国家/地区,因为您拥有一个国际化的网站,并根据该国家/地区显示不同的内容。 您可以询问用户。 无论如何,您可能都想拥有该功能以确保访问者可以控制,但可以肯定的是,他们会尽其所能地欣赏它的正确性。

没有本机Web技术具有此信息。 JavaScript具有地理位置,但是用户必须批准该地理位置,即使那样,您也必须使用一些库将坐标转换为更可用的国家/地区。 即使后端语言以JavaScript不能访问IP地址的方式,也不会自动知道来源国。

加拿大。 我只要WANNA知道他们是否来自加拿大。

您必须要求某种知道这一点的服务。 IP Geolocation API是该服务,并且是免费的。

您针对API执行GET。 如果要测试它,可以在浏览器中完成它:

https://api.ipgeolocationapi.com/geolocate/184.149.48.32

但是,您不仅会得到这个国家。 您会获得一堆可能需要使用的信息。 我恰好坐在加拿大,这就是我获得IP的目的

{ 
   "continent":"North America",
   "address_format":"{{recipient}}\n{{street}}\n{{city}} {{region_short}} {{postalcode}}\n{{country}}",
   "alpha2":"CA",
   "alpha3":"CAN",
   "country_code":"1",
   "international_prefix":"011",
   "ioc":"CAN",
   "gec":"CA",
   "name":"Canada",
   "national_destination_code_lengths":[ 
      3
   ],
   "national_number_lengths":[ 
      10
   ],
   "national_prefix":"1",
   "number":"124",
   "region":"Americas",
   "subregion":"Northern America",
   "world_region":"AMER",
   "un_locode":"CA",
   "nationality":"Canadian",
   "postal_code":true,
   "unofficial_names":[ 
      "Canada",
      "Kanada",
      "Canadá",
      "カナダ"
   ],
   "languages_official":[ 
      "en",
      "fr"
   ],
   "languages_spoken":[ 
      "en",
      "fr"
   ],
   "geo":{ 
      "latitude":56.130366,
      "latitude_dec":"62.832908630371094",
      "longitude":-106.346771,
      "longitude_dec":"-95.91332244873047",
      "max_latitude":83.6381,
      "max_longitude":-50.9766,
      "min_latitude":41.6765559,
      "min_longitude":-141.00187,
      "bounds":{ 
         "northeast":{ 
            "lat":83.6381,
            "lng":-50.9766
         },
         "southwest":{ 
            "lat":41.6765559,
            "lng":-141.00187
         }
      }
   },
   "currency_code":"CAD",
   "start_of_week":"sunday"
}

有了这些信息,我可以轻松地决定将其重定向到我的网站的加拿大版本,或者以CAD显示价格,或者提供法文翻译,或者我能想到的任何其他内容。

假设您使用过PHP 您可以像这样获得IP ...

function getUserIpAddr() {
  if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
    $ip = $_SERVER['HTTP_CLIENT_IP'];
  } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
    $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
  } else {
    $ip = $_SERVER['REMOTE_ADDR'];
  }
  return $ip;
}

用于获取信息的cURL:

$url = "https://api.ipgeolocationapi.com/geolocate/184.149.48.32"; 
$ch = curl_init();  
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_URL, $url); 
$result = curl_exec($ch);

它以JSON形式返回,因此:

$json = json_decode($result);

然后$json->{'name'}; 如果我在加拿大,将会是“加拿大”。

所以我可以这样:

if ($json->{'name'} == "Canada") {
  // serve index-ca.php
} else {
  // server index.php
}

翻译自: https://css-tricks.com/get-geographic-information-from-an-ip-address-for-free/

根据ip地址获取地理位置

你可能感兴趣的:(根据ip地址获取地理位置_免费从IP地址获取地理信息)