URL 파서

URL 파서는 웹 주소를 스킴, 경로, 쿼리 문자열로 나눠 주는 무료 도구입니다.
URL 파서로 무엇을 추출할 수 있나요?
URL 파서는 텍스트를 직접 분리하지 않아도 웹 주소의 구조적 구성 요소를 식별합니다. 이 도구는 PHP의 parse_url 함수로 처리한 세 가지 필드를 반환합니다.
- 스킴은 https나 http 같은 프로토콜 또는 주소 지정 방식을 나타냅니다.
- 경로는 /account/orders/42 같은 경로 구성 요소를 나타냅니다.
- 쿼리에는 쿼리 구성 요소를 시작하는 물음표 뒤부터 인코딩되지 않은 숫자 기호 앞까지의 텍스트가 포함됩니다. 예를 들면 page=2&sort=date입니다.
API 요청, 콜백 URL, 애플리케이션 로그 또는 외부 데이터를 점검할 때 URL 파싱이 유용합니다. 주소를 디버깅하거나 기록하거나 변환하기 전에 라우팅 정보와 쿼리 매개변수를 구분할 수 있습니다.
반환되는 필드에는 호스트 이름, 포트 또는 프래그먼트가 별도로 포함되지 않습니다. 이러한 구성 요소가 필요하다면 애플리케이션에서 더 완전한 기능을 갖춘 URL 파싱 라이브러리를 사용하세요.
URL 파서는 어떻게 사용하나요?
전체 또는 일부 URL을 입력한 다음 도구가 반환하는 스킴, 경로, 쿼리 값을 확인하세요. 스킴이 명시된 완전한 절대 URL을 입력하면 일반적으로 가장 명확한 결과를 얻을 수 있습니다.
- 브라우저, API 응답, 웹훅 기록 또는 서버 로그에서 URL을 복사하세요.
- 매개변수 이름이나 값을 확인해야 한다면 쿼리 문자열도 포함하세요.
- 반환된 경로를 애플리케이션에서 예상하는 라우트와 비교하세요.
- 연동에 필요한 위치에 스킴과 쿼리가 있는지 확인하세요.

처리는 서버에서 이루어집니다. 입력한 데이터는 HTTPS를 통해 서버로 전송되며 저장되지 않습니다. 그래도 일부 정보를 가린 예시만으로 같은 내용을 확인할 수 있다면 유효한 액세스 토큰, 서명된 다운로드 링크, 세션 식별자 또는 기타 인증 정보를 입력하지 마세요.
예제로 알아보는 결과 해석 방법
절대 API URL을 입력하면 파서가 프로토콜, 라우트, 원시 쿼리 문자열을 분리합니다.
입력 https://api.example.co.uk/v1/orders/42?expand=items¤cy=GBP
스킴 https
경로 /v1/orders/42
쿼리 expand=items¤cy=GBP
쿼리는 하나의 구성 요소로 반환됩니다. 일반적인 폼 및 쿼리 문자열 규칙에서는 앰퍼샌드가 각 필드를 구분하고, 각 필드의 첫 번째 등호가 이름과 값을 나눕니다. URL을 파싱하는 것만으로는 expand 또는 currency가 API에서 인식하는 매개변수인지 확인할 수 없습니다.
상대 참조에도 스킴 없이 경로와 쿼리가 포함될 수 있습니다.
입력 /search?q=red%20shoes&page=2
스킴 no scheme component
경로 /search
쿼리 q=red%20shoes&page=2
한 웹사이트 안에서 생성된 링크에는 스킴이 없는 경우가 흔합니다. 하지만 절대 콜백 URL이 들어 있어야 하는 데이터에서 같은 결과가 나온다면 https:// 접두사가 누락된 것일 수 있습니다.
이 파서는 URL 유효성 검사기가 아닙니다. 스킴 누락, 예상과 다른 경로, 잘못된 위치의 쿼리 텍스트처럼 의심스러운 구조를 찾는 데는 도움이 됩니다. 그러나 파싱 결과만으로 해당 주소가 실제로 존재하는지, DNS에서 확인되는지, 성공적인 HTTP 응답을 반환하는지는 알 수 없습니다.

공백, 문장 부호 또는 특이한 입력은 어떻게 처리되나요?
예약 문자는 URL이 나뉘는 방식에 영향을 주지만, 인코딩된 문자는 일반적으로 원래 속한 구성 요소에 그대로 남습니다. 파서는 구성 요소만 분리하며 그 내용을 디코딩하거나 정규화하지 않습니다.
- 인코딩되지 않은 물음표는 쿼리 구성 요소를 시작합니다. 기존 쿼리 밖에서 데이터로 사용하려는 물음표가 쿼리 구분자로 해석될 수 있다면 퍼센트 인코딩해야 합니다.
- 앰퍼샌드는 일반적으로 쿼리 매개변수를 구분하지만, 이 도구는 매개변수를 하나씩 해석하지 않고 전체 쿼리 문자열을 반환합니다.
- 표준 URL 구문에서 인코딩되지 않은 숫자 기호(#)는 프래그먼트 구분자입니다. 프래그먼트 데이터는 이 도구가 반환하는 필드에 포함되지 않습니다.
- 공백은 보통 인코딩해야 하며, 흔히 %20을 사용합니다. 폼 인코딩된 쿼리 데이터에서는 더하기 기호가 공백을 나타낼 수 있지만, 이는 URL 파싱이 아니라 쿼리 디코딩 과정에서 해석됩니다.
- 악센트가 있는 문자와 라틴 문자 이외의 경로 또는 쿼리 텍스트는 수신 시스템에서 요구할 경우 UTF-8 퍼센트 인코딩을 사용해야 합니다. 국제화 도메인 이름은 여러 프로토콜과 폭넓게 호환되도록 ASCII 호환 형식을 사용합니다.
- 숫자에는 별도의 파싱 동작이 적용되지 않습니다. 경로나 쿼리 값 안에서 일반 문자로 유지됩니다.
입력값이 비어 있으면 확인할 만한 URL 구조가 없습니다. URL이 매우 길면 브라우저, 웹 서버, 프록시, 애플리케이션 프레임워크 등 다른 환경의 제한에 걸릴 수도 있습니다. 이 도구는 특정 길이의 URL을 다른 시스템에서 허용하는지 판단하지 않습니다.
URL 파싱은 언제 필요한가요?
코드나 인프라가 주소를 처리하기 전에 그 구조를 진단해야 할 때 URL을 파싱하면 유용합니다. 배포 전 웹훅 콜백 주소 확인, 리디렉션 대상 검토, API 라우트와 필터 분리, 리버스 프록시 로그에서 복사한 URL 분석 등이 대표적인 사례입니다.
구조가 이미 정해진 URL을 시스템에서만 사용하고 애플리케이션에 URL 라이브러리가 적용되어 있다면 보통 따로 파싱할 필요가 없습니다. 가용성 테스트, 리디렉션 추적, 모든 쿼리 매개변수 디코딩 또는 도메인의 신뢰성 확인이 목적일 때도 URL 파싱은 적절한 작업이 아닙니다.
반복 작업이나 자동화에는 사용 중인 환경에서 기본으로 제공하는 URL 기능을 활용하세요. PHP에는 parse_url, 브라우저 JavaScript에는 URL 인터페이스, Node.js에는 URL 클래스가 있으며 Python에는 urllib.parse가 포함되어 있습니다. 수천 개의 주소가 담긴 로그 파일을 처리할 때는 직접 하나씩 파싱하는 것보다 간단한 명령줄 스크립트가 더 적합합니다.
수신 시스템이 요구하는 정확한 형식으로 이미 표현된 URL이라면 단순히 형식을 바꾸기 위해 파싱하지 마세요. 명확한 이유 없이 주소를 다시 인코딩하거나 재구성하면 쿼리 서명, 중복 매개변수 또는 예약 문자가 달라질 수 있습니다.
자주 묻는 질문
http나 https가 없는 URL도 파싱할 수 있나요?
네. PHP의 parse_url 함수는 상대 참조와 일부만 있는 URL도 해석할 수 있습니다. 다만 스킴을 입력하지 않았다면 스킴 값은 제공되지 않습니다. 슬래시 두 개로 시작하는 스킴 상대 주소는 주변 문서나 애플리케이션에 따라 의미가 달라지므로 주의하세요.
쿼리 매개변수가 반복돼도 그대로 유지되나요?
쿼리는 원시 구성 요소로 반환되므로 같은 이름이 반복되어도 원래 순서대로 남을 수 있습니다. tag=red&tag=blue 같은 값을 배열이나 개별 값으로 변환하는 방식은 이후에 사용하는 쿼리 문자열 파서에 따라 달라집니다.
서명된 URL을 붙여 넣어도 안전한가요?
입력값은 HTTPS를 통해 전송되고 저장되지 않습니다. 하지만 서명된 URL은 서명이 유효한 동안 비공개 콘텐츠에 대한 접근 권한을 제공할 수 있습니다. 정확한 인증 정보가 필요하지 않다면 토큰을 가리거나 호스트 이름과 값을 용도만 드러내는 자리표시자로 바꾸세요.
정상으로 보이는 URL이 애플리케이션에서는 왜 다르게 동작하나요?
프레임워크마다 쿼리를 디코딩하거나 유니코드를 정규화하는 방식이 달라서 차이가 생길 수 있습니다. 애플리케이션이 파싱 후 호스트 이름 허용 목록이나 리디렉션 제한 같은 추가 규칙을 적용할 수도 있습니다. 먼저 원시 URL을 바이트 단위로 정확히 비교한 다음, 요청을 보내기 전에 애플리케이션이 어떤 내용을 디코딩하거나 다시 쓰는지 확인하세요.
인기 도구
Digily Link의 IP 조회 도구는 모든 IP 주소에 대한 자세한 정보를 제공합니다. 이 무료 온라인 서비스를 사용하여 포괄적인 IP 데이터를 얻으세요.
WhatsApp 링크 생성기로 즉시 무료 WhatsApp 링크를 생성하세요. 맞춤 메시지를 추가하고 로그인이나 코딩 없이 한 번의 클릭으로 채팅을 시작하세요.