Wie das Land zu bekommen nach einer bestimmten IP?

stimmen
57

Kennt jemand eine einfache Möglichkeit, das Land für eine bestimmte IP-Adresse abgerufen werden? Vorzugsweise in ISO_3166-1 Format?

Veröffentlicht am 04/08/2008 um 06:15
quelle vom benutzer
In anderen Sprachen...                            


14 antworten

stimmen
38

Es gibt zwei Ansätze: einen Internet-Dienst und eine Art lokaler Liste mit (vielleicht in einer Bibliothek eingewickelt). Was Sie hängen wollen, was Sie bauen.

Für Dienstleistungen:

Für Listen:

Beantwortet am 15/09/2008 um 20:45
quelle vom benutzer

stimmen
35

Viele Menschen (einschließlich meiner Firma) scheinen MaxMind GeoIP zu verwenden.

Sie haben eine kostenlose Version GeoLite , die nicht so genau wie die kostenpflichtige Version ist, aber wenn Sie nur nach etwas einfach sind, dann kann es gut genug sein.

Beantwortet am 04/08/2008 um 07:26
quelle vom benutzer

stimmen
10

Hier ist ein schöner kostenloser Service mit einer öffentlichen API: http://www.hostip.info/use.html

Beantwortet am 04/08/2008 um 06:21
quelle vom benutzer

stimmen
8

ipinfodb stellt eine freie Datenbank und API für IP zu Land und umgekehrt. Sie nutzen kostenlose Daten aus MaxMind. Die Daten werden jeden Monat aktualisiert, und es ist eine große kostenlose Alternative mit anständiger Genauigkeit.

Beantwortet am 13/01/2010 um 14:13
quelle vom benutzer

stimmen
5

Ich weiß nicht, wie genau, dass hostip.info Seite ist. Ich visted nur, dass vor Ort und berichtete, dass mein Land ist Kanada. Ich bin in den USA und der ISP, dass mein Büro verwendet funktioniert nur aus den USA. Es ermöglicht es Ihnen, es ist Vermutung zu korrigieren, aber wenn Sie diesen Service nutzen nach Land Website vistors zu verfolgen, werden Sie keine Möglichkeit zu wissen, wenn die Daten korrekt sind. Natürlich, ich bin nur ein Datenpunkt. Ich habe die GeoLite Country Datenbank, die nur eine CSV-Datei ist, und meine IP-Adresse wurde als US korrekt identifiziert.

Ein weiterer Vorteil der Produktlinie MaxMind (gegen Entgelt oder kostenlos) ist, dass Sie die Daten haben, können Sie nicht die Leistungseinbußen zur Herstellung eines Web-Service-Aufruf zu einem anderen System entstehen.

Beantwortet am 04/08/2008 um 15:02
quelle vom benutzer

stimmen
2

Sie können meinen Dienst, verwenden http://ipinfo.io , für diese. Die API gibt eine ganze Reihe von verschiedenen Details über eine IP - Adresse:

$ 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
}

Wenn Sie erst nach dem Ländercode sind brauchen Sie nur hinzufügen / Land in die URL:

$ curl ipinfo.io/8.8.8.8/country
US

Hier ist eine PHP-Funktion, die Sie verwenden können:

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

Ich habe die IP 8.8.8.8 in diesen Beispielen verwendet, aber wenn Sie Informationen wünschen für die IP des Benutzers nur in geben $_SERVER['REMOTE_ADDR']statt. Weitere Informationen finden Sie unter http://ipinfo.io/developers

Beantwortet am 26/08/2014 um 05:49
quelle vom benutzer

stimmen
2

Versuchen Sie, diese PHP-Code

  <?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];?>
Beantwortet am 30/07/2012 um 09:07
quelle vom benutzer

stimmen
2

Sie können die Lösung vorgesehenen Verwendung dieser Frage .

Aber es gibt einen 2-stellige Ländercode.

Beantwortet am 19/10/2011 um 15:04
quelle vom benutzer

stimmen
2

Googles clientlocation gibt ( mein Beispiel )

latlng = new google.maps.LatLng(google.loader.ClientLocation.latitude, google.loader.ClientLocation.longitude);
location = "IP location: " + getFormattedLocation();
document.getElementById("location").innerHTML = location;
Beantwortet am 13/01/2010 um 14:25
quelle vom benutzer

stimmen
2

Die genaueste ist Digital Element NetAcuity ... nicht kostenlos , aber Sie bekommen , was Sie für die meiste Zeit zahlen .... Digital Element

Beantwortet am 27/09/2008 um 04:04
quelle vom benutzer

stimmen
1

Sie können Web-Service-API verwenden, die diese Arbeit tun:

see example of service: http://ip-api.com and usage: http://whatmyip.info
Beantwortet am 26/05/2014 um 15:59
quelle vom benutzer

stimmen
1

Verwenden Sie die Funktion ipToCountry ($ ip) von http://www.mmtutorialvault.com/php-ip-to-country-function/

Beantwortet am 27/06/2013 um 18:54
quelle vom benutzer

stimmen
0

Sie können die kostenlose versuchen IP2Location LITE Datenbank

Um die Tabelle in MySQL zu erstellen

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;

So importieren Sie die Daten

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;

PHP-Code abfragen, um die 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);
 }
}
?>
Beantwortet am 27/02/2018 um 05:32
quelle vom benutzer

stimmen
0

Siehe ipdata.co , die Ihnen mehrere Datenpunkte aus einer IP - Adresse gibt.

Die API ist ziemlich schnell, mit 10 globalen Endpunkten jeder Griff der Lage> 800M Anrufe täglich.

Hier ist eine Kräuselung Beispiel;

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
    }
}⏎  
Beantwortet am 18/02/2018 um 19:05
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more