IP アドレスに基づいて特定のアドレスがわかります。IP アドレスは、各コンピュータのネットワーク接続ポイントに基づいて取得される「ID カード」です。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 サイトの他の関連記事を参照してください。