특정 주소는 IP 주소를 기반으로 찾을 수 있으며, IP 주소는 각 컴퓨터의 네트워크 연결 지점을 기반으로 얻은 "ID 카드"입니다. IP 주소를 쿼리하면 컴퓨터가 어디에 있는지 효과적으로 알 수 있습니다.
IP 주소는 각 컴퓨터의 네트워크 연결 지점을 기반으로 얻은 "ID 카드"입니다. IP 주소를 쿼리하면 컴퓨터가 어디에 있는지 효과적으로 알 수 있습니다.
IP 주소를 기반으로 특정 지리적 위치를 쿼리하는 방법
Baidu Map에는 IP를 기반으로 주소를 쿼리하는 API가 있습니다
http://lbsyun.baidu.com/index.php?title=webapi /ip-api
1. Baidu Map API를 기반으로 직접 주소를 확인합니다.
API에서는 다음 두 주소를 요청하면 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 형식이며 결과는 아래 그림과 같습니다.
위 그림에서는 쓰촨성 청두시의 넓은 지역과 '거리' 및 기타 필드는 쿼리할 때 비어 있습니다. 즉, 대략적인 범위만 쿼리할 수 있습니다.
PS: 반환된 값에는 위도와 경도도 포함되어 있지만 원본 문서에 따르면 이러한 위도와 경도는 IP가 위치한 도시 중심점의 위도와 경도입니다.
2. 먼저 경도와 위도를 확인하고, 경도와 위도를 기준으로 주소를 확인하세요.
IP 위도 및 경도 검색을 기반으로 Baidu Maps는 API를 제공하지 않지만 여전히 벽 외부에 리소스가 있습니다. 여기에는 게시되어 있지 않으니 직접 찾아보세요. . .
위도와 경도를 얻으면 위도경도 + 바이두 지도 API를 통해 상세 주소를 조회할 수 있습니다.
바이두맵의 글로벌 역주소 코딩 API는 다음과 같습니다.
http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding-abroad
아래와 같이, 위도와 경도를 얻었습니다. 예, API의 규칙에 따르면 위치 매개변수 뒤에 오는 것은 위도와 경도입니다. 위도와 경도에 따라 상세한 주소를 알 수 있습니다.
실험 코드와 코멘트는 다음과 같습니다.
#! /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 중국어 웹사이트의 기타 관련 기사를 참조하세요!