ホームページ  >  記事  >  IPアドレスから特定のアドレスを特定できるのでしょうか?

IPアドレスから特定のアドレスを特定できるのでしょうか?

青灯夜游
青灯夜游オリジナル
2020-11-06 12:06:31117392ブラウズ

IP アドレスに基づいて特定のアドレスがわかります。IP アドレスは、各コンピュータのネットワーク接続ポイントに基づいて取得される「ID カード」です。IP アドレスを照会することで、コンピュータがどこにあるかを効率的に知ることができます。は。 。

IPアドレスから特定のアドレスを特定できるのでしょうか?

IP アドレスは、各コンピュータのネットワーク接続ポイントに基づいて取得される「ID カード」であり、IP アドレスを照会することで、コンピュータがどこにあるかを効率的に知ることができます。場所は。

IP アドレスに基づいて特定の地理的位置をクエリする方法

Baidu Map には、IP アドレスに基づいてアドレスをクエリする API があります。 IP

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

1.に従って IP アドレスを直接確認します。 Baidu Map API

API は、次の 2 つのアドレスをリクエストすると、IP に基づいて特定のアドレスを取得できると示しています。リクエスト パラメータは次のとおりです。

リクエスト IP が 192.168.1.1 の場合、リクエスト アドレスは次のように構成されます。

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

Python は次のように使用されます。

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)

上記のコード 一般的な意味は、リクエスト URL が返されたストリームを読み取り、それを JSON 形式に変換することです。結果は次のようになります。次の図:

上の図では、四川省成都市などの広い地域のみが表示され、「street」などのフィールドが空であることに注意してください。尋ねられたとき。つまり、大まかな範囲のみを問い合わせることができます。

PS: 戻り値には緯度と経度も含まれていますが、元のドキュメントによると、これらの緯度および経度は、IP が存在する都市の中心点の緯度および経度です。

2. まず経度と緯度を確認し、次にその経度と緯度に基づいて住所を確認します。

IP 経度と緯度の検索に基づいて、Baidu Maps は API を提供していませんが、それでも壁の外にリソースは存在します。ここには掲載されていないので、自分で探してください。 。 。 緯度と経度を取得した場合は、緯度と経度の Baidu Map API を通じて詳細な住所をクエリできます。

Baidu Map のグローバル逆アドレス エンコーディング API は次のとおりです:

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

以下のように、緯​​度と経度が取得できたとしますが、API の規約上、location パラメータの後に続くのは緯度と経度です。緯度と経度から詳細な住所が分かります。

実験コードとコメントは次のとおりです:

#! /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])

結果は次のとおりです:

ここのアドレスは非常に詳しいですが、詳細な解析がされていないので少しごちゃごちゃしていますが、指定した位置情報を取得したい場合はAPIを参照することができます。

しかし、通常、このようなクエリの結果は正しくありません。これは、オペレーターがユーザーの機密を保持しているためであり、見つかったアドレスがオペレーターのサーバーのアドレスである可能性があります。詳細については詳しく調査されていません。

以上がIPアドレスから特定のアドレスを特定できるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。