IP Info (무료 IP 지오로케이션 API)
IP Info는 Shifter가 운영하는 무료 IP 위치 정보 및 ASN API입니다. GET 요청 한 번으로 IP 주소의 국가, 지역, 도시, 좌표, 시간대, ISP, ASN, 연결 유형을 JSON 형식으로 반환합니다. 가입, API 키, 구독이 모두 필요하지 않습니다.
IP Info는 Shifter가 자체 프록시 풀에 사용하는 것과 동일한 IP 위치 및 네트워크 데이터베이스로 동작합니다. 따라서 Shifter 종료 IP를 IP Info로 확인하면 우리 네트워크가 인식하는 위치를 그대로 볼 수 있습니다.
엔드포인트
섹션 제목: “엔드포인트”| 요청 | 반환값 |
|---|---|
GET http://ip-info.com/json | 요청을 보낸 IP (사용자의 서버, 또는 프록시를 통해 보낼 경우 프록시 종료 IP) |
GET http://ip-info.com/json?ip=8.8.8.8 | 특정 공개 IPv4 또는 IPv6 주소 |
GET http://ip-info.com/8.8.8.8/json | 동일한 조회의 경로 형식 |
HTTP(http://ip-info.com/json)도 사용 가능하며 리다이렉트되지 않습니다. 혼합 콘텐츠 차단을 피하려면 웹 페이지에서는 HTTPS를 사용하세요. 응답은 크로스 오리진 GET을 허용하므로 브라우저 코드에서 API를 직접 호출할 수 있습니다.
curl --max-time 10 "http://ip-info.com/json?ip=94.204.59.232"{ "ip": "94.204.59.232", "city": "Motor City", "region": "Dubai", "region_code": "DU", "country": "AE", "country_name": "United Arab Emirates", "continent": "AS", "loc": "25.0459,55.241", "latitude": 25.0459, "longitude": 55.241, "postal": null, "timezone": "Asia/Dubai", "asn": 15802, "as_name": "Emirates Integrated Telecommunications Company PJSC", "isp": "Emirates Integrated Telecommunications Company PJSC", "org": "Emirates Integrated Telecommunications Company", "connection_type": "Corporate", "user_type": "business", "is_anycast": false}실제 응답에는 29개 필드가 있으며, 위 예시는 대부분의 통합에서 읽는 필드만 보여줍니다. 모든 필드는 항상 존재하며, 데이터베이스에 값이 없는 경우 null로 반환됩니다.
Shifter 프록시 종료 IP 확인
섹션 제목: “Shifter 프록시 종료 IP 확인”프록시를 통해 인자 없는 요청을 보내세요. IP Info 응답은 종료 IP를 설명하므로, 목표로 한 국가, 도시 또는 ASN이 실제로 얻은 것과 일치하는지 확인할 수 있습니다.
curl --max-time 15 \ --proxy http://p.shifter.io:443 \ --proxy-user "customer-USERNAME-country-us-city-new_york:PASSWORD" \ http://ip-info.com/jsonimport requests
proxy = "http://customer-USERNAME-country-us:PASSWORD@p.shifter.io:443"r = requests.get( "http://ip-info.com/json", proxies={"http": proxy, "https": proxy}, timeout=15,)r.raise_for_status()exit_ip = r.json()print(exit_ip["ip"], exit_ip["country"], exit_ip["city"], exit_ip["asn"])assert exit_ip["country"] == "US", f"expected US, got {exit_ip['country']}"import { HttpsProxyAgent } from "https-proxy-agent";import fetch from "node-fetch";
const agent = new HttpsProxyAgent( "http://customer-USERNAME-country-de:PASSWORD@p.shifter.io:443");const res = await fetch("http://ip-info.com/json", { agent });const exit = await res.json();console.log(exit.ip, exit.country, exit.city, `AS${exit.asn}`);country(ISO 3166 두 글자 코드)를 요청한 국가와 비교하고, asn(접두사 AS 없이 숫자만 표시)을 목표로 한 네트워크와 비교하세요. 사용자 이름 플래그에 대해서는 지오 타겟팅을 참고하세요.
AI 에이전트에서 사용하기
섹션 제목: “AI 에이전트에서 사용하기”IP Info는 인증 절차가 필요 없으므로 에이전트가 다른 HTTP 엔드포인트와 동일하게 호출할 수 있습니다. 에이전트와 툴 개발자가 바로 불러올 수 있는 기계 판독용 설명도 제공합니다.
https://ip-info.com/llms.txt: LLM을 위한 짧은 소개https://ip-info.com/llms-full.txt: 일반 텍스트로 작성된 전체 참조 문서https://ip-info.com/openapi.json: OpenAPI 3.1 계약서 (security가 비어 있어 키가 필요하지 않음)
MCP 서버는 필요하지 않습니다. 프레임워크가 함수 또는 툴 정의를 사용한다면 다음 정의만으로도 충분합니다.
{ "name": "ip_lookup", "description": "Approximate geolocation and network (ASN, ISP) for a public IP address. Omit ip to look up the agent's own network exit.", "input_schema": { "type": "object", "properties": { "ip": { "type": "string", "description": "Public IPv4 or IPv6 literal. Leave empty for the caller's exit IP." } } }}ip가 비어 있으면 GET http://ip-info.com/json으로, 그렇지 않으면 GET http://ip-info.com/json?ip=<URL-encoded ip>으로 구현하세요.
에이전트에게 툴과 함께 다음 규칙을 전달하세요.
ip없이 호출하면 에이전트 자신의 서버나 프록시 종료 IP를 설명하며, 사용자 본인을 나타내지 않습니다. 사용자의 IP를 조회하려면 에이전트에 해당 IP를 명시적으로 제공해야 합니다.- 국가 비교에는
country를, 네트워크 확인에는asn을 사용하세요. null은 알 수 없음으로 처리하세요. 누락된 필드를 임의로 채우지 마세요.- 위치 정보는 근사값이며, IP Info는 VPN이나 프록시 탐지 도구가 아닙니다.
에이전트의 일반적인 활용 예: 브라우징 에이전트의 프록시가 현지화된 페이지를 스크래핑하기 전에 올바른 국가에 있는지 확인, 수집한 데이터에 가져온 시점의 종료 위치를 태그로 남기기, 로그나 가입 IP에 국가와 ASN 정보를 보강하기.
오류 및 재시도
섹션 제목: “오류 및 재시도”오류는 고정된 코드와 함께 JSON으로 반환됩니다.
{ "error": { "code": "invalid_ip", "message": "Supply a literal IPv4 or IPv6 address." } }| 상태 | 코드 | 의미 |
|---|---|---|
| 400 | invalid_ip | 잘못된 형식, 프라이빗, 예약됨 또는 그 외 비공개 입력, 혹은 파라미터 충돌 |
| 404 | ip_not_found | 활성 데이터베이스에 해당 IP에 대한 기록이 없음 |
| 405 | method_not_allowed | GET을 사용하세요 |
| 503 | database_unavailable | 일시적 오류. 백오프를 두고 재시도하세요 |
| 504 | timeout | 일시적 오류. 백오프를 두고 재시도하세요 |
재시도하기 전에 4xx 입력 오류를 먼저 수정하세요. 503, 504와 연결 오류의 경우 짧은 제한된 백오프(예: 1, 2, 4초)로 재시도한 뒤 실패하면 중단하고 실패를 보고하세요.
데이터 및 제한
섹션 제목: “데이터 및 제한”- 무료, 할당량 없음. 키별 또는 앱별 할당량이 없고 API 키도 필요하지 않습니다. 이는 유한한 용량을 가진 공유 서비스이므로, 애플리케이션에 필요한 만큼의 요청만 보내고 이용약관을 준수하세요. 자동화 및 상업적 사용이 허용됩니다.
- 설계상 근사값입니다. 좌표는 특정 지역을 나타낼 뿐 정확한 주소가 아니며, 개인을 식별하지 않습니다.
- 프록시나 VPN 탐지 도구가 아닙니다.
connection_type,user_type,is_anycast는 데이터베이스 분류일 뿐, IP가 실제로 어떻게 사용되는지에 대한 증거는 아닙니다. - 개인정보. API는 조회 기록을 보관하지 않습니다. 개인정보 보호정책을 참고하세요.
질문이나 데이터 불일치가 있는 경우 hi@shifter.io로 해당 IP와 예상했던 위치를 함께 보내주세요.