lookup - Comment obtenir le pays selon une certaine IP?

Translate

Quelqu'un connaît-il un moyen simple de récupérer le pays pour une adresse IP donnée? De préférence au format ISO_3166-1?

This question and all comments follow the "Attribution Required."

Toutes les réponses

Translate

Beaucoup de gens (y compris mon entreprise) semblent utiliser MaxMind GeoIP.

Ils ont une version gratuiteGeoLitece qui n'est pas aussi précis que la version payante, mais si vous recherchez juste quelque chose de simple, cela peut suffire.

La source
Translate

Il existe deux approches: utiliser un service Internet et utiliser une sorte de liste locale (peut-être enveloppée dans une bibliothèque). Ce que vous voulez dépendra de ce que vous construisez.

Pour les services:

Pour les listes:

La source
Translate

Voici un joli service gratuit avec une API publique:http://www.hostip.info/use.html

La source
Translate

ipinfodbfournit une base de données gratuite et une API pour la propriété intellectuelle au pays et vice versa. Ils utilisent des données gratuites de MaxMind. Les données sont mises à jour tous les mois, et c'est une excellente alternative gratuite avec une précision décente.

La source
Translate

Je ne sais pas à quel point ce site hostip.info est précis. Je viens de visiter ce site, et il a signalé que mon pays est le Canada. Je suis aux États-Unis et le FAI que mon bureau utilise fonctionne uniquement à partir des États-Unis. Il vous permet de corriger sa supposition, mais si vous utilisez ce service pour suivre les visiteurs du site Web par pays, vous n'aurez aucun moyen de savoir si les données sont correctes. Bien sûr, je ne suis qu'un point de données. J'ai téléchargé la base de données GeoLite Country, qui est juste un fichier .csv, et mon adresse IP a été correctement identifiée comme US.

Un autre avantage de la gamme de produits MaxMind (payant ou gratuit) est que vous avez les données, vous ne subissez pas la perte de performances en passant un appel de service Web vers un autre système.

La source
Translate

Le plus précis est Digital Elements NetAcuity ... pas gratuit mais vous en avez pour votre argent la plupart du temps ...Élément numérique

La source
Translate

googleclientlocation renvoie (mon exemple)

latlng = new google.maps.LatLng(google.loader.ClientLocation.latitude, google.loader.ClientLocation.longitude);
location = "IP location: " + getFormattedLocation();
document.getElementById("location").innerHTML = location;
La source
zak
Translate

Vous pouvez utiliser la solution fournie pourcette question.

Mais il renvoie un code de pays à 2 chiffres.

La source
Translate

Essayez ce code php

  <?php  $ip = $_SERVER['REMOTE_ADDR'];
    $json = file_get_contents("http://api.easyjquery.com/ips/?ip=".$ip."&full=true");
    $json = json_decode($json,true);
    $timezone = $json[localTimeZone];?>
La source
Translate

Vous pouvez utiliser mon service,http://ipinfo.io, pour ça. L'API renvoie tout un tas de détails différents sur une adresse IP:

$ curl ipinfo.io/8.8.8.8
{
  "ip": "8.8.8.8",
  "hostname": "google-public-dns-a.google.com",
  "loc": "37.385999999999996,-122.0838",
  "org": "AS15169 Google Inc.",
  "city": "Mountain View",
  "region": "CA",
  "country": "US",
  "phone": 650
}

Si vous recherchez uniquement le code du pays, il vous suffit d'ajouter / country à l'URL:

$ curl ipinfo.io/8.8.8.8/country
US

Voici une fonction PHP générique que vous pouvez utiliser:

function ip_details($ip) {
    $json = file_get_contents("http://ipinfo.io/{$ip}");
    $details = json_decode($json);
    return $details;
}

$details = ip_details("8.8.8.8");

echo $details->city;     // => Mountain View
echo $details->country;  // => US
echo $details->org;      // => AS15169 Google Inc.
echo $details->hostname; // => google-public-dns-a.google.com

J'ai utilisé l'IP 8.8.8.8 dans ces exemples, mais si vous voulez des détails sur l'IP de l'utilisateur, passez simplement$_SERVER['REMOTE_ADDR']au lieu. Plus de détails sont disponibles surhttp://ipinfo.io/developers

La source
Verna Lee
Translate

utilisez la fonction ipToCountry ($ ip) dehttp://www.mmtutorialvault.com/php-ip-to-country-function/

La source
Translate

vous pouvez utiliser des API de service Web qui font ce travail comme:

see example of service: http://ip-api.com and usage: http://whatmyip.info
La source
Translate

Voiripdata.coqui vous donne plusieurs points de données à partir d'une adresse IP.

L'API est assez rapide, avec 10 points de terminaison mondiaux capables chacun de gérer plus de 800 millions d'appels par jour.

Voici un exemple de curl;

curl https://api.ipdata.co/78.8.53.5
{
    "ip": "78.8.53.5",
    "city": "G\u0142og\u00f3w",
    "region": "Lower Silesia",
    "region_code": "DS",
    "country_name": "Poland",
    "country_code": "PL",
    "continent_name": "Europe",
    "continent_code": "EU",
    "latitude": 51.6461,
    "longitude": 16.1678,
    "asn": "AS12741",
    "organisation": "Netia SA",
    "postal": "67-200",
    "currency": "PLN",
    "currency_symbol": "z\u0142",
    "calling_code": "48",
    "flag": "https://ipdata.co/flags/pl.png",
    "emoji_flag": "\ud83c\uddf5\ud83c\uddf1",
    "time_zone": "Europe/Warsaw",
    "is_eu": true,
    "suspicious_factors": {
        "is_tor": false
    }
}⏎  
La source
Translate

Vous pouvez essayer le gratuitBase de données IP2Location LITE

Pour créer la table dans MySQL

CREATE DATABASE ip2location;
USE ip2location;
CREATE TABLE `ip2location_db1`(
    `ip_from` INT(10) UNSIGNED,
    `ip_to` INT(10) UNSIGNED,
    `country_code` CHAR(2),
    `country_name` VARCHAR(64),
    INDEX `idx_ip_to` (`ip_to`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

Pour importer les données

LOAD DATA LOCAL
    INFILE 'IP2LOCATION-LITE-DB1.CSV'
INTO TABLE
    `ip2location_db1`
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 0 LINES;

Code PHP pour interroger MySQL

<?php
// Replace this MYSQL server variables with actual configuration
$mysql_server = "mysql_server.com";
$mysql_user_name = "UserName";
$mysql_user_pass = "Password";

// Retrieve visitor IP address from server variable REMOTE_ADDR
$ipaddress = $_SERVER["REMOTE_ADDR"];

// Convert IP address to IP number for querying database
$ipno = Dot2LongIP($ipaddress);

// Connect to the database server
$link = mysql_connect($mysql_server, $mysql_user_name, $mysql_user_pass) or die("Could not connect to MySQL database");

// Connect to the IP2Location database
mysql_select_db("ip2location") or die("Could not select database");

// SQL query string to match the recordset that the IP number fall between the valid range
$query = "SELECT * FROM ip2location_db1 WHERE $ipno <= ip_to LIMIT 1";

// Execute SQL query
$result = mysql_query($query) or die("IP2Location Query Failed");

// Retrieve the recordset (only one)
$row = mysql_fetch_object($result);

// Keep the country information into two different variables
$country_code = $row->country_code;
$country_name = $row->country_name;

echo "Country_code: " . $country_code . "<br/>";
echo "Country_name: " . $country_name . "<br />";

// Free recordset and close database connection
mysql_free_result($result);
mysql_close($link);

// Function to convert IP address (xxx.xxx.xxx.xxx) to IP number (0 to 256^4-1)
function Dot2LongIP ($IPaddr) {
 if ($IPaddr == "")
 {
   return 0;
 } else {
   $ips = explode(".", $IPaddr);
   return ($ips[3] + $ips[2] * 256 + $ips[1] * 256 * 256 + $ips[0] * 256 * 256 * 256);
 }
}
?>
La source