Ich möchte Informationen wie Stadt, Bundesland und Land eines Besuchers von seiner IP-Adresse abrufen, damit ich meine Webseite an ihren Standort anpassen kann. Gibt es eine gute und zuverlässige Möglichkeit, dies in PHP zu tun? Ich verwende JavaScript für clientseitiges Scripting, PHP für serverseitiges Scripting und MySQL für die Datenbank.
php
geolocation
ip
geoip
Ben Dowling
quelle
quelle
Antworten:
Sie können eine kostenlose GeoIP-Datenbank herunterladen und die IP-Adresse lokal nachschlagen, oder Sie können einen Drittanbieter-Service verwenden und eine Remote-Suche durchführen. Dies ist die einfachere Option, da keine Einrichtung erforderlich ist, jedoch eine zusätzliche Latenz entsteht.
Ein Drittanbieter-Service, den Sie verwenden können, ist meiner, http://ipinfo.io . Sie bieten Hostnamen, Geolocation, Netzwerkbesitzer und zusätzliche Informationen, z.
Hier ist ein PHP-Beispiel:
Sie können es auch clientseitig verwenden. Hier ist ein einfaches jQuery-Beispiel:
quelle
null
meinen Städtenamen. Es ist nicht wie eine kleine Stadt oder so, aber es konnte es immer noch nicht finden. Wenn es in den USA nicht gut funktioniert, bezweifle ich, wie oft es auch außerhalb der USA null zurückgibt.Ich dachte, ich würde posten, da anscheinend niemand Informationen zu dieser bestimmten API gegeben hat, aber sie gibt genau das zurück, wonach ich suche, und Sie können sie in mehreren Formaten zurückgeben
json, xml and csv
.Dies gibt Ihnen alle Dinge, die Sie möglicherweise wollen könnten:
quelle
Ein reines Javascript-Beispiel mit den Diensten von https://geolocation-db.com Sie bieten eine JSON- und JSONP-Rückruflösung.
Keine jQuery erforderlich!
quelle
https://geoilocation-db.com
API?Verwenden von Google APIS:
quelle
The geolocation functionality in the Loader hasn't been retired, per se. We stopped documenting it several years ago and have recommended the HTML-based solutions due to their improved accuracy, but the functionality itself has not been removed from the Loader at this time.
code.google.com/p/google-ajax-apis/issues/detail?id=586Sie müssen einen externen Dienst verwenden, z. B. http://www.hostip.info/. Wenn Sie bei der Google-Suche nach "Geo-IP" suchen, erhalten Sie weitere Ergebnisse.
Die Host-IP-API basiert auf HTTP, sodass Sie sie je nach Bedarf entweder in PHP oder JavaScript verwenden können.
quelle
Ich habe einen Bot mit einer API von ipapi.co geschrieben. So erhalten Sie den Speicherort für eine IP-Adresse (z. B.
1.2.3.4
) inphp
:Kopfzeile setzen:
JSON-Antwort abrufen
von erhalten ein bestimmtes Feld (Land, Zeitzone usw.)
quelle
Diese Frage ist geschützt, was ich verstehe. Allerdings sehe ich hier keine Antwort. Ich sehe, dass viele Leute zeigen, was sie sich aus derselben Frage ausgedacht haben.
Derzeit gibt es fünf regionale Internetregister mit unterschiedlichem Funktionsumfang, die als erste Anlaufstelle für die Inhaberschaft von geistigem Eigentum dienen. Der Prozess ist im Fluss, weshalb die verschiedenen Dienste hier manchmal funktionieren und zu anderen Zeiten nicht.
Who Is ist jedoch (offensichtlich) ein altes TCP-Protokoll - ursprünglich funktionierte es über die Verbindung zu Port 43, was es problematisch macht, es über geleaste Verbindungen, über Firewalls usw. weiterzuleiten.
In diesem Moment haben die meisten Who Is über RESTful HTTP und ARIN, RIPE und APNIC RESTful-Dienste, die funktionieren. LACNIC gibt einen 503 zurück und AfriNIC hat anscheinend keine solche API. (Alle haben jedoch Online-Dienste.)
Damit erhalten Sie - die Adresse des registrierten IP-Eigentümers, aber - nicht den Standort Ihres Kunden - müssen Sie diese von ihm erhalten und müssen auch danach fragen. Außerdem sind Proxys die geringste Sorge bei der Validierung der IP, von der Sie glauben, dass sie der Urheber ist.
Die Leute schätzen die Vorstellung, dass sie verfolgt werden, nicht, also - meine Gedanken sind - holen Sie sie direkt und mit ihrer Erlaubnis von Ihrem Kunden und erwarten, dass viel gegen die Vorstellung verstößt.
quelle
Schauen Sie sich die API von hostip.info an - sie enthält viele Informationen.
Beispiel in PHP:
Wenn Sie hostip.info vertrauen, scheint dies eine sehr nützliche API zu sein.
quelle
Der Service in der Antwort von Ben Dowling hat sich geändert und ist jetzt einfacher. Um den Standort zu finden, gehen Sie einfach wie folgt vor:
Die Koordinaten kehren in einer einzelnen Zeichenfolge wie '31, -80 'zurück, sodass Sie von dort aus einfach:
quelle
Angenommen, Sie möchten dies selbst tun und sich nicht auf andere Anbieter verlassen, bietet IP2Nation eine MySQL-Datenbank mit den Zuordnungen, die aktualisiert werden, wenn die regionalen Register Änderungen vornehmen .
quelle
Ich führe den Dienst auf IPLocate.io aus , in den Sie sich mit einem einfachen Anruf kostenlos einbinden können:
Das
$res
Objekt enthält Ihre Geolocation - Felder mögencountry
,city
usw.Weitere Informationen finden Sie in den Dokumenten .
quelle
Ich mag die kostenlose GeoLite City von Maxmind, die für die meisten Anwendungen funktioniert und von der Sie auf eine kostenpflichtige Version upgraden können, wenn sie nicht präzise genug ist. Es gibt eine PHP-API sowie für andere Sprachen. Und wenn Sie Lighttpd als Webserver ausführen, können Sie sogar ein Modul verwenden , um die Informationen in der SERVER-Variablen für jeden Besucher abzurufen, wenn Sie dies benötigen.
Ich sollte hinzufügen, dass es auch ein kostenloses Geolite-Land (das schneller wäre, wenn Sie die Stadt, aus der die IP stammt, nicht genau bestimmen muss) und Geolite-Lieferavis (wenn Sie wissen möchten, wem die IP gehört) gibt, und dass dies schließlich alles ist Sie können auf Ihren eigenen Server heruntergeladen werden, werden jeden Monat aktualisiert und können mit den bereitgestellten APIs schnell nachgeschlagen werden, da sie "Tausende von Suchvorgängen pro Sekunde" angeben.
quelle
PHP hat dafür eine Erweiterung.
Von PHP.net:
Beispielsweise:
quelle
Ipdata.co ist eine schnelle, hochverfügbare IP-Geolocation-API mit zuverlässiger Leistung.
Es ist extrem skalierbar mit 10 Endpunkten auf der ganzen Welt, die jeweils> 10.000 Anfragen pro Sekunde verarbeiten können!
In php
Hier ist ein clientseitiges Beispiel, das zeigt, wie Sie das Land, die Region und die Stadt erhalten.
Haftungsausschluss;
Ich habe den Service aufgebaut.
Beispiele in mehreren Sprachen finden Sie in den Dokumenten
Sehen Sie sich auch diese detaillierte Analyse der besten IP-Geolocation-APIs an.
quelle
Falls jemand auf diesen Thread stößt, ist hier eine andere Lösung. Bei timezoneapi.io können Sie eine IP-Adresse anfordern und mehrere Objekte zurückerhalten (ich habe den Dienst erstellt). Es wurde erstellt, weil ich wissen musste, in welcher Zeitzone sich meine Benutzer befanden, wo auf der Welt und wie spät es derzeit ist.
In PHP - gibt Ort, Zeitzone und Datum / Uhrzeit zurück:
Verwenden von jQuery:
quelle
Das Folgende ist eine modifizierte Version eines gefundenen Snippets, das http://ipinfodb.com/ip_locator.php verwendet , um seine Informationen abzurufen . Beachten Sie, dass Sie bei ihnen auch einen API-Schlüssel beantragen und die API direkt verwenden können, um die bereitgestellten Informationen zu erhalten, wie Sie es für richtig halten.
Snippet
Benutzen
quelle
Wenn Sie den Standort von einer IP-Adresse abrufen möchten, können Sie einen zuverlässigen Geo-IP-Dienst verwenden. Weitere Informationen erhalten Sie hier . Es unterstützt IPv6.
Als Bonus kann überprüft werden, ob es sich bei der IP-Adresse um einen Tor-Knoten, einen öffentlichen Proxy oder einen Spammer handelt.
Sie können Javascript oder PHP wie unten verwenden.
Javascript Code:
PHP-Code:
Ausgabe:
quelle
Ich habe einen Wrapper für ipinfo.io erstellt . Sie können es mit Composer installieren.
Sie können es folgendermaßen verwenden:
quelle
Sie können auch den Dienst "smart-ip" verwenden:
quelle
Ich habe eine Reihe von Tests mit IP-Adressdiensten durchgeführt und hier einige Möglichkeiten, wie ich es selbst mache. Zunächst eine Reihe von Links zu nützlichen Websites, die ich verwende:
https://db-ip.com/db Verfügt über einen kostenlosen IP-Suchdienst und einige kostenlose CSV-Dateien, die Sie herunterladen können. Dies verwendet einen kostenlosen API-Schlüssel, der an Ihre E-Mail angehängt ist. Es ist auf 2000 Abfragen pro Tag begrenzt.
http://ipinfo.io/ Kostenloser IP-Suchdienst ohne PHP-Funktionen mit API-Schlüssel:
Am Ende bekommst du so etwas:
http://www.geoplugin.com/ Etwas älter, aber dieser Service bietet Ihnen eine Reihe zusätzlicher nützlicher Informationen wie die Landeswährung, den Kontinentcode, den Längengrad und vieles mehr.
http://lite.ip2location.com/database-ip-country-region-city-latitude-longitude Bietet eine Reihe herunterladbarer Dateien mit Anweisungen zum Importieren in Ihre Datenbank. Sobald Sie eine dieser Dateien in Ihrer Datenbank haben, können Sie die Daten ziemlich einfach auswählen.
Verwenden Sie die PHP-Funktion ip2long (); um die IP-Adresse in einen numerischen Wert umzuwandeln. Beispiel: 1.1.1.1 wird zu 16843009. Auf diese Weise können Sie nach den IP-Bereichen suchen, die Ihnen von der Datenbankdatei zugewiesen wurden.
Um herauszufinden, wo 1.1.1.1 zu allem gehört, führen wir diese Abfrage aus:
Dies gibt diese Daten als Beispiel zurück.
quelle
Es gibt zwei allgemeine Ansätze für die Durchführung der IP-Geolokalisierung: Einer besteht darin, ein Dataset herunterzuladen, es in Ihrer Infrastruktur zu hosten und es auf dem neuesten Stand zu halten. Dies erfordert Zeit und Mühe, insbesondere wenn Sie eine große Anzahl von Anforderungen unterstützen müssen. Eine andere Lösung besteht darin, einen vorhandenen API-Dienst zu verwenden, der die gesamte Arbeit für Sie und mehr verwaltet.
Es gibt viele API-Geolocation-Dienste: Maxmind, Ip2location, Ipstack, IpInfo usw. Vor kurzem hat das Unternehmen, für das ich arbeite, auf Ipregistry ( https://ipregistry.co ) umgestellt und war am Entscheidungs- und Implementierungsprozess beteiligt. Hier sind einige Elemente, die Sie bei der Suche nach einer IP-Geolocation-API berücksichtigen sollten:
Hier ist ein Beispiel zum Abrufen von IP-Geolokalisierungsinformationen (aber auch Bedrohungs- und Benutzeragentendaten mit einem Anruf):
Hinweis: Ich bin nicht hier, um für Ipregistry zu werben und zu sagen, dass es das Beste ist, aber ich habe lange Zeit damit verbracht, vorhandene Lösungen zu analysieren, und ihre Lösung ist wirklich vielversprechend.
quelle
Wenn Sie nach einer aktualisierten / genauen Datenbank suchen, empfehle ich diese hier zu verwenden, da sie meinen genauen Standort anzeigt, der beim Testen nicht in vielen anderen Diensten enthalten war.
(Meine Stadt war
Rasht
und mein Land warIran
mit dieser IP-Adresse:2.187.21.235
als ich testete.)Ich empfehle, anstelle von API-Methoden eine Datenbank zu verwenden, da diese lokal viel schneller verarbeitet wird.
quelle
Ok, Leute, danke für eure Vorschläge; Während ich mehr als 6.000 IPs habe, sind einige Dienste aufgrund einiger Einschränkungen bei meinen Anforderungen fehlgeschlagen. Sie können sie also alle im Fallback-Modus verwenden.
Wenn wir eine Quelldatei mit folgendem Format haben:
als Sie diesen einfachen Expample-Befehl (PoC) für Yii verwenden könnten:
Dies ist eine Art Shitty-Code, aber es funktioniert. Verwendung:
Fühlen Sie sich frei, es zu verwenden, zu modifizieren und es besser zu machen)
quelle