Whiz Tools

یو آر ایل سٹرنگ ای اسکیپر

URL سٹرنگ ای اسکیپر ٹول

تعارف

ویب ڈویلپمنٹ اور انٹرنیٹ مواصلات کی دنیا میں، URLs (یونیفارم ریسورس لوکیٹرز) ویب پر وسائل کی شناخت میں اہم کردار ادا کرتے ہیں۔ تاہم، URLs میں ان کرداروں پر پابندیاں ہیں جو وہ شامل کر سکتے ہیں۔ کچھ کرداروں کا خاص مطلب ہوتا ہے، جبکہ دوسرے URLs میں استعمال کے لیے غیر محفوظ ہوتے ہیں کیونکہ ان کے غلط تشریح یا ترسیل کے دوران خراب ہونے کا امکان ہوتا ہے۔

URL انکوڈنگ، جسے فیصد انکوڈنگ بھی کہا جاتا ہے، ایک ایسا طریقہ کار ہے جس کے ذریعے خاص کرداروں کو ایک ایسے فارمیٹ میں تبدیل کیا جاتا ہے جو انٹرنیٹ پر بھیجا جا سکے۔ یہ ٹول آپ کو ایک URL سٹرنگ داخل کرنے اور خاص کرداروں کو ای اسکیپ کرنے کی اجازت دیتا ہے، اس بات کو یقینی بناتے ہوئے کہ URL درست ہے اور ویب براؤزرز اور سرورز کے ذریعہ صحیح طور پر تشریح کی جا سکتی ہے۔

URL انکوڈنگ کو سمجھنا

URL انکوڈنگ کیا ہے؟

URL انکوڈنگ میں غیر محفوظ ASCII کرداروں کو % کے ساتھ دو ہیکسڈیسمل عددوں سے تبدیل کرنا شامل ہے جو کردار کے ASCII کوڈ کی نمائندگی کرتے ہیں۔ یہ اس بات کو یقینی بناتا ہے کہ معلومات انٹرنیٹ پر بغیر تبدیلی کے منتقل کی جائیں۔

مثال کے طور پر، اسپیس کردار ' ' کو %20 سے تبدیل کیا جاتا ہے۔

URL انکوڈنگ کی ضرورت کیوں ہے؟

URLs کو انٹرنیٹ پر صرف ASCII کردار سیٹ کا استعمال کرتے ہوئے بھیجا جا سکتا ہے۔ چونکہ URLs اکثر ایسے کرداروں پر مشتمل ہوتے ہیں جو اس سیٹ سے باہر ہیں، انہیں درست ASCII فارمیٹ میں تبدیل کرنا ضروری ہے۔ URL انکوڈنگ یہ یقینی بناتی ہے کہ خاص کردار غلط اثرات یا ویب درخواستوں میں غلطیوں کا سبب نہ بنیں۔

کردار جو انکوڈنگ کی ضرورت ہے

RFC 3986 کی وضاحت کے مطابق، درج ذیل کردار URLs میں محفوظ ہیں اور اگر انہیں حرفی طور پر استعمال کیا جائے تو انہیں فیصد انکوڈ کیا جانا چاہیے:

  • عمومی تقسیم کنندے: :, /, ?, #, [, ], @
  • ذیلی تقسیم کنندے: !, $, &, ', (, ), *, +, ,, ;, =

اس کے علاوہ، کسی بھی غیر ASCII کردار، بشمول یونیکوڈ میں کردار، کو انکوڈ کیا جانا چاہیے۔

URL انکوڈنگ کا عمل

انکوڈنگ کا عمل

  1. خاص کرداروں کی شناخت کریں: URL سٹرنگ کو پارس کریں اور ان کرداروں کی شناخت کریں جو غیر محفوظ ASCII کردار نہیں ہیں (حروف، اعداد، -, ., _, ~

  2. ASCII کوڈ میں تبدیل کریں: ہر خاص کردار کے لیے، اس کا ASCII یا یونیکوڈ کوڈ پوائنٹ حاصل کریں۔

  3. UTF-8 بائٹ سلسلے میں تبدیل کریں (اگر ضروری ہو): غیر ASCII کرداروں کے لیے، کردار کو UTF-8 انکوڈنگ کا استعمال کرتے ہوئے ایک یا زیادہ بائٹس میں انکوڈ کریں۔

  4. ہیکسڈیسمل میں تبدیل کریں: ہر بائٹ کو اس کے دو عددی ہیکسڈیسمل مساوی میں تبدیل کریں۔

  5. فیصد علامت کے ساتھ پیش کریں: ہر ہیکسڈیسمل بائٹ کے ساتھ % علامت لگائیں۔

انکوڈنگ کی مثال

  • کردار: ' ' (اسپیس)

    • ASCII کوڈ: 32
    • ہیکسڈیسمل: 20
    • URL انکوڈڈ: %20
  • کردار: 'é'

    • UTF-8 انکوڈنگ: 0xC3 0xA9
    • URL انکوڈڈ: %C3%A9

غور کرنے کے لیے کنارے کے معاملات

  • یونیکوڈ کردار: غیر ASCII کرداروں کو UTF-8 میں انکوڈ کیا جانا چاہیے اور پھر فیصد انکوڈ کیا جانا چاہیے۔

  • پہلے سے انکوڈڈ فیصد علامات: فیصد علامات جو فیصد انکوڈنگ کا حصہ ہیں انہیں دوبارہ انکوڈ نہیں کیا جانا چاہیے۔

  • سوالات کی تاروں میں محفوظ کردار: کچھ کرداروں کا سوالات کی تاروں میں خاص مطلب ہوتا ہے اور انہیں ڈھانچے کو تبدیل کرنے سے روکنے کے لیے انکوڈ کیا جانا چاہیے۔

URL ڈیکوڈنگ

URL ڈیکوڈنگ کیا ہے؟

URL ڈیکوڈنگ URL انکوڈنگ کا الٹ عمل ہے۔ یہ فیصد انکوڈڈ کرداروں کو ان کی اصل شکل میں واپس تبدیل کرتا ہے، جس سے URL کو انسانوں اور نظاموں کے لیے پڑھنے کے قابل بنایا جا سکتا ہے۔

ڈیکوڈنگ کا عمل

  1. فیصد انکوڈنگ کے سلسلوں کی شناخت کریں: URL سٹرنگ میں تمام % علامات کو تلاش کریں جن کے بعد دو ہیکسڈیسمل عدد ہوں۔

  2. ہیکسڈیسمل کو بائٹس میں تبدیل کریں: ہر ہیکسڈیسمل قیمت کو اس کے متعلقہ بائٹ میں ترجمہ کریں۔

  3. UTF-8 بائٹس کو ڈیکوڈ کریں (اگر ضروری ہو): ملٹی بائٹ سلسلوں کے لیے، بائٹس کو ملا کر UTF-8 انکوڈنگ کا استعمال کرتے ہوئے اصل کردار حاصل کریں۔

  4. انکوڈڈ سلسلوں کو تبدیل کریں: فیصد انکوڈڈ سلسلوں کو ڈیکوڈ کردہ کرداروں سے تبدیل کریں۔

ڈیکوڈنگ کی مثال

  • انکوڈڈ: hello%20world

    • %20 ایک اسپیس ' ' میں ترجمہ کرتا ہے
    • ڈیکوڈڈ: hello world
  • انکوڈڈ: J%C3%BCrgen

    • %C3%A4 UTF-8 میں 'ü' میں ترجمہ کرتا ہے
    • ڈیکوڈڈ: Jürgen

URL ڈیکوڈنگ کی اہمیت

URL ڈیکوڈنگ اس وقت ضروری ہے جب صارف کے ان پٹ کو URLs سے پروسیس کیا جائے، سوالات کے پیرامیٹرز کو پڑھا جائے، یا ویب درخواستوں سے موصولہ ڈیٹا کی تشریح کی جائے۔ یہ اس بات کو یقینی بناتا ہے کہ URL سے نکالی گئی معلومات اپنی صحیح، مطلوبہ شکل میں ہو۔

استعمال کے معاملات

ویب ڈویلپمنٹ

  • سوالات کے پیرامیٹرز: غلطیوں یا سیکیورٹی خطرات سے بچنے کے لیے سوالات کے پیرامیٹرز میں صارف کے ان پٹ کو انکوڈ کرنا۔

  • راستے کے پیرامیٹرز: URL راستوں میں متحرک ڈیٹا کو محفوظ طریقے سے شامل کرنا۔

ڈیٹا کی ترسیل

  • APIs اور ویب سروسز: یہ یقینی بنانا کہ APIs کو بھیجے جانے والے ڈیٹا کو صحیح طور پر فارمیٹ کیا گیا ہے۔

  • بین الاقوامیت: مختلف زبانوں کے کرداروں کے ساتھ URLs کی حمایت کرنا۔

سیکیورٹی

  • انجیکشن حملوں سے بچنا: ان پٹ کو انکوڈ کرکے کراس سائٹ اسکرپٹنگ (XSS) اور دیگر انجیکشن حملوں کے خطرے کو کم کرنا۔

متبادل

اگرچہ URL انکوڈنگ ضروری ہے، لیکن کچھ حالات میں دوسرے انکوڈنگ طریقے زیادہ موزوں ہو سکتے ہیں:

  • Base64 انکوڈنگ: URLs میں بائنری ڈیٹا کو انکوڈ کرنے کے لیے یا جب زیادہ معلومات کی کثافت کی ضرورت ہو۔

  • فیصد انکوڈنگ کے بغیر UTF-8 انکوڈنگ: کچھ نظام براہ راست UTF-8 انکوڈنگ کا استعمال کرتے ہیں، لیکن یہ صحیح طور پر ہینڈل نہ ہونے کی صورت میں مسائل پیدا کر سکتا ہے۔

اپنی ایپلیکیشن کی تفصیلات پر غور کریں تاکہ سب سے موزوں انکوڈنگ طریقہ منتخب کیا جا سکے۔

تاریخ

URL انکوڈنگ کو 1990 کی دہائی میں URL اور URI (یونیفارم ریسورس آئیڈنٹیفائر) کے ابتدائی وضاحتوں کے ساتھ متعارف کرایا گیا تھا۔ خاص کرداروں کو انکوڈ کرنے کا ایک مستقل طریقہ کار کی ضرورت دنیا بھر میں مختلف نظاموں اور کردار کے سیٹس کی وجہ سے پیدا ہوئی۔

اہم سنگ میل شامل ہیں:

  • RFC 1738 (1994): URLs کی وضاحت کی اور فیصد انکوڈنگ متعارف کرائی۔

  • RFC 3986 (2005): URI کی نحو کو اپ ڈیٹ کیا، انکوڈنگ کے قواعد کو بہتر بنایا۔

وقت کے ساتھ، URL انکوڈنگ ویب ٹیکنالوجیز کے لیے ایک لازمی جزو بن گئی ہے، مختلف نظاموں اور پلیٹ فارمز کے درمیان قابل اعتماد مواصلت کو یقینی بناتے ہوئے۔

کوڈ کی مثالیں

یہاں مختلف پروگرامنگ زبانوں میں URL انکوڈنگ کرنے کے طریقے کی مثالیں ہیں:

' ایکسل VBA مثال
Function URLEncode(ByVal Text As String) As String
    Dim i As Integer
    Dim CharCode As Integer
    Dim Char As String
    Dim EncodedText As String

    For i = 1 To Len(Text)
        Char = Mid(Text, i, 1)
        CharCode = AscW(Char)
        Select Case CharCode
            Case 48 To 57, 65 To 90, 97 To 122, 45, 46, 95, 126 ' 0-9, A-Z, a-z, -, ., _, ~
                EncodedText = EncodedText & Char
            Case Else
                If CharCode < 0 Then
                    ' یونیکوڈ کرداروں کو ہینڈل کریں
                    EncodedText = EncodedText & "%" & Hex(65536 + CharCode)
                Else
                    EncodedText = EncodedText & "%" & Right("0" & Hex(CharCode), 2)
                End If
        End Select
    Next i
    URLEncode = EncodedText
End Function

' استعمال:
' =URLEncode("https://example.com/?name=Jürgen")
% MATLAB مثال
function encodedURL = urlEncode(url)
    import java.net.URLEncoder
    encodedURL = char(URLEncoder.encode(url, 'UTF-8'));
end

% استعمال:
% encodedURL = urlEncode('https://example.com/?name=Jürgen');
## Ruby مثال
require 'uri'

url = 'https://example.com/path?query=hello world&name=Jürgen'
encoded_url = URI::DEFAULT_PARSER.escape(url)
puts encoded_url
## آؤٹ پٹ: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
// Rust مثال
use url::form_urlencoded;

fn main() {
    let url = "https://example.com/path?query=hello world&name=Jürgen";
    let encoded_url = percent_encode(url);
    println!("{}", encoded_url);
    // آؤٹ پٹ: https://example.com/path%3Fquery%3Dhello%20world%26name%3DJ%C3%BCrgen
}

fn percent_encode(input: &str) -> String {
    use percent_encoding::{utf8_percent_encode, NON_ALPHANUMERIC};
    utf8_percent_encode(input, NON_ALPHANUMERIC).to_string()
}
## Python مثال
import urllib.parse

url = 'https://example.com/path?query=hello world&name=Jürgen'
encoded_url = urllib.parse.quote(url, safe=':/?&=')
print(encoded_url)
## آؤٹ پٹ: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
// جاوا اسکرپٹ مثال
const url = 'https://example.com/path?query=hello world&name=Jürgen';
const encodedURL = encodeURI(url);
console.log(encodedURL);
// آؤٹ پٹ: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
// جاوا مثال
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;

public class URLEncodeExample {
    public static void main(String[] args) throws Exception {
        String url = "https://example.com/path?query=hello world&name=Jürgen";
        String encodedURL = URLEncoder.encode(url, StandardCharsets.UTF_8.toString());
        // اسپیسز کے لیے "+" کو "%20" سے تبدیل کریں
        encodedURL = encodedURL.replace("+", "%20");
        System.out.println(encodedURL);
        // آؤٹ پٹ: https%3A%2F%2Fexample.com%2Fpath%3Fquery%3Dhello%20world%26name%3DJ%C3%BCrgen
    }
}
// C# مثال
using System;
using System.Net;

class Program
{
    static void Main()
    {
        string url = "https://example.com/path?query=hello world&name=Jürgen";
        string encodedURL = Uri.EscapeUriString(url);
        Console.WriteLine(encodedURL);
        // آؤٹ پٹ: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
    }
}
<?php
// PHP مثال
$url = 'https://example.com/path?query=hello world&name=Jürgen';
$encodedURL = urlencode($url);
echo $encodedURL;
// آؤٹ پٹ: https%3A%2F%2Fexample.com%2Fpath%3Fquery%3Dhello+world%26name%3DJ%C3%BCrgen
?>
// Go مثال
package main

import (
    "fmt"
    "net/url"
)

func main() {
    urlStr := "https://example.com/path?query=hello world&name=Jürgen"
    encodedURL := url.QueryEscape(urlStr)
    fmt.Println(encodedURL)
    // آؤٹ پٹ: https%3A%2F%2Fexample.com%2Fpath%3Fquery%3Dhello+world%26name%3DJ%25C3%25BCrgen
}
// Swift مثال
import Foundation

let url = "https://example.com/path?query=hello world&name=Jürgen"
if let encodedURL = url.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) {
    print(encodedURL)
    // آؤٹ پٹ: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
}
## R مثال
url <- "https://example.com/path?query=hello world&name=Jürgen"
encodedURL <- URLencode(url, reserved = TRUE)
print(encodedURL)
## آؤٹ پٹ: https://example.com/path?query=hello%20world&name=J%C3%BCrgen

نوٹ: آؤٹ پٹ ہر زبان کے محفوظ کرداروں اور اسپیسز کو انکوڈ کرنے کے طریقے کی بنیاد پر معمولی طور پر مختلف ہو سکتا ہے (جیسے %20 یا + کے طور پر اسپیسز کو انکوڈ کرنا)۔

URL انکوڈنگ کے عمل کا SVG خاکہ

URL انکوڈنگ کا عمل اصل URL خاص کرداروں کی شناخت کریں URL انکوڈ کریں مثال: ان پٹ: https://example.com/über uns آؤٹ پٹ: https://example.com/%C3%BCber%20uns

سیکیورٹی کے پہلو

صحیح URL انکوڈنگ اور ڈیکوڈنگ سیکیورٹی کے لیے اہم ہیں:

  • انجیکشن حملوں سے بچیں: صارف کے ان پٹ کو انکوڈ کرنا مدد کرتا ہے کہ خطرناک کوڈ چلانے سے روکا جائے، جیسے کہ کراس سائٹ اسکرپٹنگ (XSS) اور SQL انجیکشن کے خطرات۔

  • ڈیٹا کی سالمیت: یہ اس بات کو یقینی بناتا ہے کہ ڈیٹا بغیر تبدیلی یا خراب ہونے کے منتقل ہو۔

  • معیارات کی تعمیل: انکوڈنگ کے معیارات کی پابندی بین الاقوامی نظاموں کے درمیان مسائل سے بچاتی ہے۔

حوالہ جات

  1. RFC 3986 - یونیفارم ریسورس آئیڈنٹیفائر (URI): https://tools.ietf.org/html/rfc3986
  2. URL انکوڈنگ کیا ہے اور یہ کیسے کام کرتی ہے؟ https://www.urlencoder.io/learn/
  3. فیصد انکوڈنگ: https://en.wikipedia.org/wiki/Percent-encoding
  4. URL معیاری: https://url.spec.whatwg.org/
  5. URI.escape متروک ہے: https://stackoverflow.com/questions/2824126/why-is-uri-escape-deprecated

نتیجہ

URL انکوڈنگ ویب ڈویلپمنٹ اور انٹرنیٹ مواصلات کا ایک لازمی پہلو ہے۔ خاص کرداروں کو محفوظ فارمیٹ میں تبدیل کرکے، یہ اس بات کو یقینی بناتا ہے کہ URLs کو براؤزرز اور سرورز کے ذریعہ صحیح طور پر تشریح کیا جائے، ڈیٹا کی ترسیل کی سالمیت اور سیکیورٹی کو برقرار رکھا جائے۔ یہ ٹول آپ کے URLs میں خاص کرداروں کو ای اسکیپ کرنے کا ایک آسان طریقہ فراہم کرتا ہے، ہم آہنگی کو بڑھاتا ہے اور ممکنہ غلطیوں یا سیکیورٹی خطرات سے بچاتا ہے۔

رائے