lookup - Wie bekomme ich das Land nach einer bestimmten IP?

Translate

Kennt jemand eine einfache Möglichkeit, das Land für eine bestimmte IP-Adresse abzurufen? Am besten im ISO_3166-1-Format?

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

Alle Antworten

Translate

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

Sie haben eine kostenlose VersionGeoLiteDas ist nicht so genau wie die kostenpflichtige Version, aber wenn Sie nur nach etwas Einfachem suchen, kann es gut genug sein.

Quelle
Translate

Es gibt zwei Ansätze: Verwenden eines Internetdienstes und Verwenden einer lokalen Liste (möglicherweise in einer Bibliothek verpackt). Was Sie wollen, hängt davon ab, was Sie bauen.

Für Dienstleistungen:

Für Listen:

Quelle
Translate

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

Quelle
Translate

ipinfodbbietet eine kostenlose Datenbank und API für IP to Country und umgekehrt. Sie verwenden kostenlose Daten von MaxMind. Die Daten werden jeden Monat aktualisiert und sind eine großartige kostenlose Alternative mit angemessener Genauigkeit.

Quelle
Translate

Ich weiß nicht, wie genau diese hostip.info-Site ist. Ich habe gerade diese Seite besucht und es wurde berichtet, dass mein Land Kanada ist. Ich bin in den USA und der ISP, den mein Büro nutzt, arbeitet nur in den USA. Sie können zwar die Vermutung korrigieren, aber wenn Sie diesen Dienst verwenden, um Website-Besucher nach Ländern zu verfolgen, können Sie nicht feststellen, ob die Daten korrekt sind. Natürlich bin ich nur ein Datenpunkt. Ich habe die GeoLite Country-Datenbank heruntergeladen, bei der es sich nur um eine CSV-Datei handelt, und meine IP-Adresse wurde korrekt als US identifiziert.

Ein weiterer Vorteil der MaxMind-Produktlinie (kostenpflichtig oder kostenlos) besteht darin, dass Sie über die Daten verfügen und nicht den Leistungseinbruch erleiden, wenn Sie einen Webdienst auf ein anderes System aufrufen.

Quelle
Translate

Am genauesten ist Digital Elements NetAcuity ... nicht kostenlos, aber Sie bekommen die meiste Zeit das, wofür Sie bezahlen ...Digitales Element

Quelle
Translate

Googleclientlocation gibt zurück (mein Beispiel)

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

Sie können die vorgesehene Lösung verwendendiese Frage.

Es wird jedoch ein zweistelliger Ländercode zurückgegeben.

Quelle
Translate

Versuchen Sie diesen 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];?>
Quelle
Translate

Sie können meinen Service nutzen,http://ipinfo.io, dafür. Die API gibt eine ganze Reihe verschiedener Details zu einer IP-Adresse zurück:

$ 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 nur nach dem Ländercode suchen, müssen Sie der URL nur / country hinzufügen:

$ curl ipinfo.io/8.8.8.8/country
US

Hier ist eine generische 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 in diesen Beispielen die IP 8.8.8.8 verwendet, aber wenn Sie Details zur IP des Benutzers wünschen, geben Sie diese einfach ein$_SERVER['REMOTE_ADDR']stattdessen. Weitere Details finden Sie unterhttp://ipinfo.io/developers

Quelle
Verna Lee
Translate

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

Quelle
Translate

Sie können Webdienst-APIs verwenden, die dies wie folgt tun:

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

Sehenipdata.coDas gibt Ihnen mehrere Datenpunkte von einer IP-Adresse.

Die API ist ziemlich schnell, mit 10 globalen Endpunkten, die jeweils> 800 Millionen Anrufe täglich verarbeiten können.

Hier ist ein Curl-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
    }
}⏎  
Quelle
Translate

Sie können das kostenlos ausprobierenIP2Location LITE-Datenbank

So erstellen Sie die Tabelle in 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;

Daten importieren

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 zum Abfragen von 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);
 }
}
?>
Quelle