ToolDeck

URL Parser

URL को उसके घटकों में विभाजित करें — प्रोटोकॉल, होस्ट, पथ, क्वेरी पैरामीटर, हैश

उदाहरण देखें
यह भी आज़माएं:URL Encode OnlineURL Decode Online

URL पार्सिंग क्या है?

URL पार्सिंग एक Uniform Resource Locator को उसके अलग-अलग घटकों में विभाजित करने की प्रक्रिया है: प्रोटोकॉल (स्कीम), होस्टनेम, पोर्ट, पाथनेम, क्वेरी पैरामीटर और फ्रैगमेंट पहचानकर्ता। प्रत्येक URL RFC 3986 और WHATWG URL Standard द्वारा परिभाषित संरचना का पालन करता है। एक URL पार्सर कच्ची स्ट्रिंग पढ़ता है, प्रत्येक खंड को उसके सीमांकक वर्णों (://, :, /, ?, #, &, =) द्वारा पहचानता है, और उन्हें अलग-अलग, सुलभ क्षेत्रों के रूप में लौटाता है।

ब्राउज़र हर बार URL पार्सिंग करते हैं जब आप कोई पता टाइप करते हैं या किसी लिंक पर क्लिक करते हैं। JavaScript का URL कंस्ट्रक्टर, Python का urllib.parse मॉड्यूल और Go का net/url पैकेज — सभी ऐसे पार्सर लागू करते हैं जो समान संरचनात्मक नियमों का पालन करते हैं। URL पार्सिंग, URL एन्कोडिंग के विपरीत है: सुरक्षित परिवहन के लिए वर्णों को परिवर्तित करने के बजाय, आप एक पहले से बने URL को उन भागों में तोड़ते हैं जो उसे बनाते हैं।

https://api.example.com:8080/v1/users?page=2&limit=10#section जैसे एक सामान्य URL में छह अलग-अलग घटक होते हैं। सीमांकक वर्ण — ://, :, /, ?, &, = और # — पार्सिंग को निश्चित बनाते हैं: प्रत्येक एक सीमा का संकेत देता है और पार्सर को बिना किसी अस्पष्टता के क्षेत्र निकालने में सक्षम बनाता है।

ऑनलाइन URL Parser का उपयोग क्यों करें?

आँखों से किसी URL को मैन्युअल रूप से विभाजित करना त्रुटिपूर्ण होता है, विशेष रूप से जब स्ट्रिंग में एन्कोडेड वर्ण, एकाधिक क्वेरी पैरामीटर या गैर-मानक पोर्ट हों। यह टूल उसी WHATWG-compliant एल्गोरिदम का उपयोग करके URL को पार्स करता है जो ब्राउज़र उपयोग करते हैं और प्रत्येक घटक को एक स्पष्ट, कॉपी करने योग्य तालिका में प्रदर्शित करता है।

ब्राउज़र में तत्काल पार्सिंग
कोई भी URL चिपकाएँ और सभी घटक तुरंत विभाजित होकर दिखाई देते हैं। कोई page reload नहीं, कोई server request नहीं, कोई wait नहीं।
🔒
अपने URL निजी रखें
पार्सिंग पूरी तरह से आपके ब्राउज़र में नेटिव URL API का उपयोग करके चलती है। आप जो URL दर्ज करते हैं वह कभी भी आपकी मशीन नहीं छोड़ता।
🔍
हर विवरण जाँचें
प्रोटोकॉल, होस्टनेम, पोर्ट, पाथनेम, क्वेरी स्ट्रिंग, हैश और डीकोड किए गए मान के साथ प्रत्येक व्यक्तिगत क्वेरी पैरामीटर देखें।
📋
अलग-अलग घटक कॉपी करें
किसी भी क्षेत्र के बगल में कॉपी बटन पर क्लिक करके सटीक मान प्राप्त करें। सबस्ट्रिंग को मैन्युअल रूप से चुनने और काटने की कोई आवश्यकता नहीं।

URL Parser के उपयोग के मामले

फ्रंटएंड रूटिंग डीबगिंग
जाँचें कि पाथ खंड और हैश फ्रैगमेंट आपके राउटर कॉन्फ़िगरेशन से मेल खाते हैं। गलत जगह की स्लैश या अप्रत्याशित क्वेरी पैरामीटर को 404 error आने से पहले पकड़ें।
बैकएंड API एंडपॉइंट सत्यापन
रूट हैंडलर या मिडलवेयर लिखने से पहले सत्यापित करें कि आने वाले अनुरोध URL में सही होस्टनेम, पोर्ट और पाथ संरचना है।
DevOps रीडायरेक्ट नियम परीक्षण
Nginx, Apache या CDN रीडायरेक्ट नियम लिखते समय, यह पुष्टि करने के लिए मूल और लक्ष्य URL पार्स करें कि प्रत्येक घटक सही तरह से मैप होता है।
QA लिंक सत्यापन
परीक्षण रिपोर्ट या बग टिकट से URL पार्स करें ताकि यह पहचाना जा सके कि कौन सा क्वेरी पैरामीटर या फ्रैगमेंट गलत पेज लोड करवा रहा है।
डेटा पाइपलाइन URL निष्कर्षण
लॉग फ़ाइलों या विश्लेषण डेटा में URL से होस्टनेम या पाथ खंड निकालें ताकि डोमेन-स्तरीय रिपोर्ट बनाई जा सके या एंडपॉइंट के अनुसार ट्रैफ़िक फ़िल्टर किया जा सके।
URL संरचना सीखना
वेब प्रोटोकॉल से नए छात्र और डेवलपर वास्तविक URL चिपका सकते हैं और तुरंत देख सकते हैं कि कौन सा सीमांकक किस सीमा को चिह्नित करता है।

URL घटक संदर्भ

नीचे दी गई तालिका JavaScript URL कंस्ट्रक्टर द्वारा किसी URL को पार्स करते समय लौटाई गई प्रत्येक प्रॉपर्टी दिखाती है। Python के urlparse परिणाम, Go के url.URL स्ट्रक्चर और PHP के parse_url आउटपुट में भी यही घटक मौजूद हैं, हालाँकि भाषाओं में प्रॉपर्टी के नाम अलग-अलग होते हैं।

प्रॉपर्टीउदाहरणविवरण
protocolhttps:Scheme including the trailing colon
hostnameapi.example.comDomain name or IP address
port8080Port number (empty string if default)
pathname/v1/usersPath starting with /
search?page=2&limit=10Query string including the leading ?
hash#sectionFragment identifier including the leading #
originhttps://api.example.com:8080protocol + hostname + port
hostapi.example.com:8080hostname + port
usernameadminCredentials before @ (rarely used in practice)
passwordsecretCredentials before @ (avoid in production URLs)
href(full URL)The complete, serialized URL string

WHATWG URL Standard बनाम RFC 3986

दो विनिर्देश परिभाषित करते हैं कि URL को कैसे पार्स किया जाना चाहिए। वे मूल संरचना पर सहमत हैं लेकिन विशेष मामलों में भिन्न हैं — और यह भिन्नता आमतौर पर वह कारण होती है जब आपका ब्राउज़र किसी URL को आपके सर्वर से अलग तरीके से संभालता है।

WHATWG URL Standard
सभी आधुनिक ब्राउज़र और JavaScript URL कंस्ट्रक्टर द्वारा उपयोग किया जाता है। flexible इनपुट को स्वीकार और सामान्य करता है: लापता स्कीम, पाथ विभाजक के रूप में बैकस्लैश, Punycode के माध्यम से गैर-ASCII होस्टनेम। url.spec.whatwg.org पर एक जीवंत मानक के रूप में परिभाषित।
RFC 3986
औपचारिक IETF विनिर्देश (2005)। WHATWG से अधिक कठोर: कुछ ऐसे इनपुट को अस्वीकार करता है जिन्हें ब्राउज़र स्वीकार करते हैं। कई सर्वर-साइड लाइब्रेरी द्वारा उपयोग किया जाता है जिनमें Go का net/url और Python का urllib.parse शामिल हैं। RFC 3986 में परिभाषित।

व्यवहार में, अधिकांश अंतर अंतर्राष्ट्रीय डोमेन नाम (IDN), लापता स्कीम या असामान्य वर्णों वाले URL पार्स करते समय सामने आते हैं। WHATWG पार्सर IDN होस्टनेम को स्वचालित रूप से Punycode में परिवर्तित करता है, जबकि कठोर RFC 3986 पार्सर उन्हें अस्वीकार कर सकते हैं। यदि आप इस टूल में कोई URL चिपकाते हैं और आपके सर्वर-साइड कोड से अलग परिणाम देखते हैं, तो WHATWG बनाम RFC अंतर सबसे संभावित कारण है।

कोड उदाहरण

प्रत्येक प्रमुख भाषा में एक अंतर्निर्मित URL पार्सर है। नीचे दिए गए उदाहरण समान URL पार्स करते हैं और उसके घटक निकालते हैं। भाषाओं में नामकरण के छोटे अंतरों पर ध्यान दें: Python, protocol के बजाय scheme का उपयोग करता है, और Go, search के बजाय RawQuery उजागर करता है।

JavaScript (browser / Node.js)
const url = new URL('https://api.example.com:8080/v1/users?page=2&limit=10#section')

url.protocol  // → "https:"
url.hostname  // → "api.example.com"
url.port      // → "8080"
url.pathname  // → "/v1/users"
url.search    // → "?page=2&limit=10"
url.hash      // → "#section"

// Iterate over query parameters
for (const [key, value] of url.searchParams) {
  console.log(`${key} = ${value}`)
}
// → "page = 2"
// → "limit = 10"

// Modify and re-serialize
url.searchParams.set('page', '3')
url.toString()
// → "https://api.example.com:8080/v1/users?page=3&limit=10#section"
Python
from urllib.parse import urlparse, parse_qs

result = urlparse('https://api.example.com:8080/v1/users?page=2&limit=10#section')

result.scheme    # → 'https'
result.hostname  # → 'api.example.com'
result.port      # → 8080
result.path      # → '/v1/users'
result.query     # → 'page=2&limit=10'
result.fragment  # → 'section'

# Parse query string into a dict
params = parse_qs(result.query)
params['page']   # → ['2']
params['limit']  # → ['10']

# Reconstruct with modifications
from urllib.parse import urlencode, urlunparse
new_query = urlencode({'page': '3', 'limit': '10'})
urlunparse(result._replace(query=new_query))
# → 'https://api.example.com:8080/v1/users?page=3&limit=10#section'
Go
package main

import (
	"fmt"
	"net/url"
)

func main() {
	u, err := url.Parse("https://api.example.com:8080/v1/users?page=2&limit=10#section")
	if err != nil {
		panic(err)
	}

	fmt.Println(u.Scheme)   // → "https"
	fmt.Println(u.Hostname()) // → "api.example.com"
	fmt.Println(u.Port())     // → "8080"
	fmt.Println(u.Path)       // → "/v1/users"
	fmt.Println(u.RawQuery)   // → "page=2&limit=10"
	fmt.Println(u.Fragment)   // → "section"

	// Query params as map
	q := u.Query()
	fmt.Println(q.Get("page"))  // → "2"
	fmt.Println(q.Get("limit")) // → "10"
}
PHP
<?php
$url = 'https://api.example.com:8080/v1/users?page=2&limit=10#section';
$parts = parse_url($url);

$parts['scheme'];   // → "https"
$parts['host'];     // → "api.example.com"
$parts['port'];     // → 8080
$parts['path'];     // → "/v1/users"
$parts['query'];    // → "page=2&limit=10"
$parts['fragment']; // → "section"

// Parse query string into an array
parse_str($parts['query'], $params);
$params['page'];    // → "2"
$params['limit'];   // → "10"

अक्सर पूछे जाने वाले प्रश्न

URL और URI में क्या अंतर है?
URL (Uniform Resource Locator) एक विशिष्ट प्रकार का URI (Uniform Resource Identifier) है जिसमें पहचानकर्ता और पहुँच का तंत्र दोनों शामिल होते हैं (स्कीम, जैसे https://)। सभी URL, URI हैं, लेकिन सभी URI, URL नहीं हैं। urn:isbn:0451450523 जैसा URN एक ऐसा URI है जो किसी संसाधन को नाम से पहचानता है लेकिन यह नहीं बताता कि उसे कैसे प्राप्त किया जाए। वेब विकास में, ये शब्द अक्सर परस्पर उपयोग किए जाते हैं क्योंकि आपके सामने आने वाला लगभग हर URI एक URL होता है।
URL कंस्ट्रक्टर सापेक्ष URL को कैसे संभालता है?
JavaScript URL कंस्ट्रक्टर को सापेक्ष पाथ पार्स करते समय एक आधार URL की आवश्यकता होती है। new URL('/path?q=1') कॉल करने पर TypeError आती है। आपको एक आधार प्रदान करना होगा: new URL('/path?q=1', 'https://example.com')। Python का urljoin और Go का url.ResolveReference समान उद्देश्य पूरा करते हैं। यह टूल स्कीम के साथ पूर्ण, पूर्ण URL की अपेक्षा करता है।
जब URL में कोई पोर्ट नंबर न हो तो क्या होता है?
जब पोर्ट छोड़ा जाता है, तो पार्सर port प्रॉपर्टी के लिए एक खाली स्ट्रिंग लौटाता है। ब्राउज़र स्कीम के लिए डिफ़ॉल्ट पोर्ट मानता है: https के लिए 443, http के लिए 80, ftp के लिए 21। आप origin या host प्रॉपर्टी के माध्यम से प्रभावी पोर्ट प्राप्त कर सकते हैं, लेकिन port क्षेत्र स्वयं खाली रहता है क्योंकि कोई स्पष्ट पोर्ट निर्दिष्ट नहीं किया गया था।
क्या URL में Unicode वर्ण हो सकते हैं?
हाँ, लेकिन उन्हें परिवहन के लिए एन्कोड किया जाना चाहिए। WHATWG URL Standard इसे स्वचालित रूप से संभालता है: अंतर्राष्ट्रीय डोमेन नाम Punycode (xn-- उपसर्ग) में परिवर्तित किए जाते हैं, और ASCII सीमा से बाहर के पाथ/क्वेरी वर्ण प्रतिशत-एन्कोड किए जाते हैं। यदि आप इस टूल में Unicode वाला URL चिपकाते हैं, तो पार्स किए गए आउटपुट में सामान्यीकृत, ASCII-सुरक्षित संस्करण दिखाई देगा।
URL की अधिकतम लंबाई क्या है?
कोई भी मानक अधिकतम URL लंबाई परिभाषित नहीं करता — RFC 3986 इस विषय पर मौन है। व्यवहार में, ब्राउज़र सीमाएँ लागू करते हैं: Chrome पता बार में लगभग 2MB तक का समर्थन करता है, जबकि Internet Explorer (पुराना) की 2,083-वर्ण की सीमा थी। अधिकांश वेब सर्वर अनुरोध लाइन के लिए 8KB (Nginx) या 8KB (Apache) पर डिफ़ॉल्ट होते हैं। यदि आपको बड़ा डेटा भेजना है, तो क्वेरी स्ट्रिंग के बजाय POST अनुरोध बॉडी का उपयोग करें।
मैं पूरे URL के बिना केवल क्वेरी स्ट्रिंग कैसे पार्स करूँ?
JavaScript में, एक सामान्य क्वेरी स्ट्रिंग पार्स करने के लिए new URLSearchParams('page=2&limit=10') का उपयोग करें। Python में, urllib.parse.parse_qs('page=2&limit=10') का उपयोग करें। दोनों पैरामीटर को कुंजी-मान जोड़ों के रूप में लौटाते हैं। यह उपयोगी है जब आपके पास क्वेरी स्ट्रिंग अलग से हो, उदाहरण के लिए किसी फॉर्म सबमिशन से या किसी लॉग प्रविष्टि से जिसने केवल क्वेरी भाग को रिकॉर्ड किया।
क्या URL पार्सिंग और URL डीकोडिंग एक ही है?
नहीं। URL पार्सिंग किसी URL को संरचनात्मक घटकों (स्कीम, होस्ट, पाथ, क्वेरी, फ्रैगमेंट) में विभाजित करती है। URL डीकोडिंग प्रतिशत-एन्कोडेड वर्णों को उनके मूल रूप में परिवर्तित करती है (%20 रिक्त स्थान बन जाता है, %26 & बन जाता है)। दोनों एक-दूसरे के complement हैं: आप आमतौर पर पहले URL पार्स करते हैं, फिर अलग-अलग घटक मानों को डीकोड करते हैं। डीकोडिंग से पहले पार्सिंग करने से URL संरचना टूट सकती है क्योंकि डीकोड किए गए सीमांकक जैसे & और = की गलत व्याख्या हो जाएगी।