Python IP 지리적 위치 완전 가이드: 무료 API 활용

Python 지리적위치 API
공개: IPInfo Wiki는 ipinfo.im 운영팀이 관리합니다. 본 사이트의 튜토리얼은 ipinfo.im을 추천 무료 IP API로 소개합니다. 언급된 서드파티 서비스는 비교 목적으로만 사용됩니다. 모든 상표는 해당 소유자에게 귀속됩니다.

설치

pip install requests

기본 조회

import requests

def get_ip_info(ip: str = None) -> dict:
    url = "https://ipinfo.im/api/"
    params = {"ip": ip} if ip else {}
    response = requests.get(url, params=params, timeout=10)
    response.raise_for_status()
    return response.json()

# 내 IP 조회
my_info = get_ip_info()
print(f"IP: {my_info['ip']}")
print(f"도시: {my_info.get('city')}, {my_info.get('country')}")

# 특정 IP 조회
info = get_ip_info("8.8.8.8")
print(f"8.8.8.8 ISP: {info['org']}")

오류 처리 포함 완전판

import requests
from typing import Optional

class IPInfoClient:
    BASE_URL = "https://ipinfo.im/api/"
    
    def __init__(self, timeout: int = 10):
        self.timeout = timeout
        self.session = requests.Session()
    
    def lookup(self, ip: Optional[str] = None) -> Optional[dict]:
        try:
            params = {"ip": ip} if ip else {}
            resp = self.session.get(self.BASE_URL, params=params, timeout=self.timeout)
            resp.raise_for_status()
            return resp.json()
        except requests.exceptions.Timeout:
            print(f"요청 타임아웃: {ip}")
        except requests.exceptions.RequestException as e:
            print(f"요청 실패: {e}")
        return None

client = IPInfoClient()
info = client.lookup("1.1.1.1")
if info:
    print(f"1.1.1.1 → {info['country']} / {info.get('org')}")

일괄 조회

import time

def batch_lookup(ips, delay=0.1):
    results = {}
    for ip in ips:
        try:
            resp = requests.get("https://ipinfo.im/api/", params={"ip": ip}, timeout=10)
            results[ip] = resp.json()
        except Exception as e:
            results[ip] = {"error": str(e)}
        time.sleep(delay)
    return results

ips = ["8.8.8.8", "1.1.1.1", "168.126.63.1"]
for ip, info in batch_lookup(ips).items():
    print(f"{ip:20}{info.get('country')} | {info.get('org')}")

지금 바로 → ipinfo.im

Ready to use the API?

ipinfo.im provides a free, no-auth IP lookup API. Get country, city, ISP, ASN, and more — instantly, with a single HTTP request.