>  기사  >  IP 주소를 기반으로 특정 주소를 찾을 수 있나요?

IP 주소를 기반으로 특정 주소를 찾을 수 있나요?

青灯夜游
青灯夜游원래의
2020-11-06 12:06:31117394검색

특정 주소는 IP 주소를 기반으로 찾을 수 있으며, IP 주소는 각 컴퓨터의 네트워크 연결 지점을 기반으로 얻은 "ID 카드"입니다. IP 주소를 쿼리하면 컴퓨터가 어디에 있는지 효과적으로 알 수 있습니다.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.