JavaScript IP 위치 조회 가이드
브라우저 또는 Node.js에서 IP 주소 하나의 위치를 가져옵니다.
JavaScript에서 IP 주소 조회하기
요청은 IPv4 또는 IPv6 주소 하나를 입력받고 JSON 응답을 요청합니다. 예제 주소를 확인하려는 주소로 바꾸세요.
const ip = '8.8.8.8'; // Replace with an IPv4 or IPv6 address.
const response = await fetch(
'https://api.ipquery.io/' + encodeURIComponent(ip) + '?format=json',
{ signal: AbortSignal.timeout(8000) }
);
if (!response.ok) throw new Error('IPQuery returned HTTP ' + response.status);
const data = await response.json();
if (data.ip !== ip || !data.location || !data.isp) {
throw new Error('Unexpected IPQuery response');
}
console.log(data.location.country, data.location.city, data.isp.asn);fetch와 AbortSignal.timeout을 지원하는 최신 브라우저 또는 Node.js에서 실행하세요. 브라우저의 주소 조회 요청은 지정한 주소를 확인하며, 자체 IP 엔드포인트는 브라우저 연결의 주소를 확인합니다.
위치 및 네트워크 필드 읽기
location.country와 location.country_code는 대략적인 국가를 나타냅니다. location.city는 비어 있거나 부정확할 수 있습니다. isp.asn은 네트워크를 식별하며, 이 네트워크는 주소를 사용하는 개인이나 회사와 다를 수 있습니다.
요청을 보낸 연결의 주소를 확인하려면 다음을 호출하세요: https://api.ipquery.io/?format=json. 서버에서 보낸 요청은 서버가 연결에 사용하는 IP를 반환하고, 브라우저에서 보낸 요청은 해당 연결의 외부에 보이는 주소를 반환합니다.
Dashy에서 IPQuery 사용하기
Dashy의 Public IP 위젯은 API 키 없이 IPQuery를 지원합니다. Dashy 섹션 중 하나의 widgets 목록에 다음 항목을 추가하세요:
- type: public-ip
options:
provider: ipqueryDashy의 프록시 설정이 꺼져 있으면 브라우저가 요청을 보내고 위젯은 해당 연결의 공인 IP와 대략적인 위치를 표시합니다. 위젯의 최상위 수준에 useProxy: true를 설정하거나 appConfig.widgetsAlwaysUseProxy를 활성화하면 요청이 Dashy 서버를 통해 전송되며 대신 서버의 공인 IP가 표시됩니다. 위젯의 최상위 수준에 useProxy: false를 설정해도 대시보드 전체 설정을 재정의하지는 않습니다.
이 위젯은 IPQuery의 자체 IP 엔드포인트를 사용합니다. 다른 주소를 확인하려면 위에 있는 단일 IP JavaScript 요청을 사용하세요.
Dashy Public IP 위젯 옵션정확성과 보안
IP 지리적 위치는 네트워크 위치의 추정값이며 기기의 위치가 아닙니다. VPN, 프록시, 모바일 네트워크 및 통신사 게이트웨이로 인해 주소가 사용자에게서 멀리 떨어진 곳으로 추정될 수 있습니다. 누락된 값을 추측으로 채우지 말고 알 수 없음으로 처리하세요.
애플리케이션이 X-Forwarded-For를 읽는 경우, 직접 제어하는 프록시가 제공한 값만 신뢰하세요. 클라이언트가 제공한 헤더는 위조될 수 있습니다. 조회 요청 전에 주소를 검증하고, 시간 제한 초과와 HTTP 오류는 성공 결과와 별도로 처리하세요.
API 참조