Heim >häufiges Problem >Kann anhand der IP-Adresse die konkrete Adresse ermittelt werden?

Kann anhand der IP-Adresse die konkrete Adresse ermittelt werden?

青灯夜游
青灯夜游Original
2020-11-06 12:06:31117453Durchsuche

Die spezifische Adresse kann anhand der IP-Adresse ermittelt werden. Die IP-Adresse ist eine „ID-Karte“, die anhand des Netzwerkverbindungspunkts jedes Computers ermittelt wird. Durch die Abfrage der IP-Adresse können wir effektiv erkennen, wo sich der Computer befindet.

Kann anhand der IP-Adresse die konkrete Adresse ermittelt werden?

Die IP-Adresse ist eine „ID-Karte“, die auf der Grundlage des Netzwerkverbindungspunkts jedes Computers ermittelt wird. Durch die Abfrage der IP-Adresse können wir effektiv erkennen, wo sich der Computer befindet.

So fragen Sie einen bestimmten geografischen Standort basierend auf der IP-Adresse ab

Baidu Map verfügt über eine API zum Abfragen von Adressen basierend auf der IP

http://lbsyun.baidu.com/index.php?title=webapi /ip-api

1. Überprüfen Sie die IP-Adresse direkt gemäß der Baidu Map API

API besagt, dass durch Anfordern der folgenden zwei Adressen die spezifische Adresse basierend auf der IP erhalten werden kann:

Die Anforderungsparameter sind wie folgt:

Wenn wir Wenn die Anforderungs-IP 192.168.1.1 ist, ist die Anforderungsadresse wie folgt aufgebaut:

http://api.map.baidu.com/location/ip?ak=XXX(自己申请的API TOKEN)&ip=192.168.1.1

Python wird hier als experimentelle Sprache verwendet, und der Code und die Kommentare lauten wie folgt:

from urllib import request
import json

# ak is bound with ip
baidu_api_ak = "ZX9QCmwzzItzRO5ssD7GNgEwD4OQduWR"
ip_addr = "xxx.xxx.xxx.xxx"
# Request url
url = "http://api.map.baidu.com/location/ip?ak=" + baidu_api_ak + "&ip=" + ip_addr
req = request.Request(url)
res = request.urlopen(req)
res = res.read()
# Bytes to str
n = res.decode(encoding='utf-8')
# str to json
s = json.loads(n)
t = json.dumps(s, ensure_ascii=False)
print(n)
print(t)

Der obige Code bedeutet ungefähr, dass die Anforderungs-URL den zurückgegebenen Stream liest und konvertiert. Er liegt im JSON-Format vor und das Ergebnis ist wie in der folgenden Abbildung dargestellt:

Beachten Sie, dass Sie in der obigen Abbildung nur Folgendes tun können Sehen Sie sich das große Gebiet der Stadt Chengdu in der Provinz Sichuan an, und die „Straße“ und andere Felder sind bei der Abfrage leer. Mit anderen Worten: Es kann nur ein grober Bereich abgefragt werden.

PS: Der zurückgegebene Wert enthält auch Breiten- und Längengrade, aber laut Originaldokument handelt es sich bei diesen Breiten- und Längengraden um die Breiten- und Längengrade des Mittelpunkts der Stadt, in der sich die IP befindet.

2. Überprüfen Sie zunächst den Längen- und Breitengrad und dann die Adresse anhand des Längen- und Breitengrads.

Basierend auf der IP-Breitengrad- und Längengradsuche bietet Baidu Maps keine API, es gibt jedoch immer noch Ressourcen außerhalb der Mauer. Es ist hier nicht veröffentlicht, suchen Sie es selbst. . .

Wenn Sie den Breiten- und Längengrad erhalten, können Sie die detaillierte Adresse über die Breiten- und Längengrad + Baidu-Karten-API abfragen.

Die globale API für die umgekehrte Adresscodierung von Baidu Map lautet wie folgt:

http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding-abroad

Wie unten gezeigt, vorausgesetzt, wir haben den Breiten- und Längengrad erhalten. Ja, gemäß den Regeln der API folgt auf den Standortparameter der Breiten- und Längengrad. Anhand des Breiten- und Längengrads können wir die detaillierte Adresse finden.

Der experimentelle Code und die Kommentare lauten wie folgt:

#! /usr/bin/env python
# coding=utf-8

from urllib import request
import json

# ak is bound with ip
baidu_api_ak = "ZX9QCmwzzItzRO5ssD7GNgEwD4OQduWR"
url = "http://api.map.baidu.com/geocoder/v2/?callback=renderReverse&location=30.6667,104.0670&output=json&pois=1&ak=" + baidu_api_ak
req = request.Request(url)
res = request.urlopen(req)
res = res.read()
n = res.decode(encoding='utf-8')
# The result format is renderReverse&&renderReverse(json str). so....
n = n[len("renderReverse&&renderReverse") + 1:-1]
st = json.loads(n)
# st's structure
#   result: XXXX
#   status: XXXX
result = st["result"]
for i in result:
    print(i, result[i])

Die Ergebnisse sind wie folgt:

Die Adresse hier ist bereits sehr detailliert, aber es gibt keine detaillierte Analyse und es sieht etwas chaotisch aus Erhalten Sie die angegebenen Standortinformationen. Sie können auf die API verweisen.

Allerdings sind die Ergebnisse solcher Abfragen möglicherweise nicht korrekt. Dies liegt möglicherweise daran, dass der Betreiber die Benutzer vertraulich behandelt und die gefundene Adresse möglicherweise die Adresse des Servers des Betreibers ist. Die Einzelheiten wurden nicht untersucht.

Das obige ist der detaillierte Inhalt vonKann anhand der IP-Adresse die konkrete Adresse ermittelt werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Ist Power der Power-Knopf?Nächster Artikel:Ist Power der Power-Knopf?