URL нормализација
URL нормализација (или URL канонизација) (енгл. URL normalization) је процес у коме је URL промењен на конзистентан начин. Циљ нормализације је превести URL у нормализовани (канонски) облик, тако да је могуће одредити да ли се два синтаксно различита URL-а могу односити на јединствен ентитет.
Претраживачи користе URL нормализацију у циљу означавања важности веб странице, као и спречавања дуплог индексирања страница. Веб-финишери омогућавају URL нормализацију како би се избегло појављивање истог ресурса више пута. Веб прегледачи могу покренути нормализацију и у циљу провере да ли је неки линк већ посећиван.[1]
Процес нормализације
[уреди | уреди извор]Постоји више типова нормализације. Неки типови су семанични док други нису.
Нормализација која чува семантику
[уреди | уреди извор]Следећа нормализација је описана у RFC 3986[2] и резултира истим URL-овима (Web адресама):
- Конвертовање шема и host-ова у мала слова. Компоненте URL шема и host-ова су неосетљиве на величину слова. Већина нормализатора ће их конвертовати у мала слова. Пример:
HTTP://www.Example.com/
→http://www.example.com/
- Конвертовање слова у велика слова помоћу специјалних знакова. Сва слова унутар URL-шифроване тројке (нпр. "%3A") су осетљива на величину, и требало би их конвертовати у велика. Пример:
http://www.example.com/a%c2%b1b
→http://www.example.com/a%C2%B1b
- Дешифровање %-шифрованих октета нерезервисаних карактера. Доследности ради, %-шифровани октети у распонима ALPHA (
%41
–%5A
и%61
–%7A
), DIGIT (%30
–%39
), цртица (%2D
), размак (%2E
), подвлака (%5F
), или тилда (%7E
) не би требало да буду креирани од стране URI произвођача, а ако би били пронађени у URI-у, требало би их дешифровани у њихове одговарајуће, нерезервисане карактере помоћу URI нормализатора.[3] Пример:
http://www.example.com/%7Eusername/
→http://www.example.com/~username/
- Уклањање уобичајеног порта. Уобичајени порт (порт 80 за “http” протокол) може бити уклоњен (или додат) URL-у. Пример:
http://www.example.com:80/bar.html
→http://www.example.com/bar.html
Нормализација која најчешће чува семантику
[уреди | уреди извор]За http и https URL-ове, следећа нормализација, описана у RFC 3986, може резултирати истим URL-овима, али и не мора, јер то није у неким случајевим стандардна адреса:
- Додавање репа / Подразумева додавање косе црте у оквиру URL-a. Пример:
http://www.example.com/alice
→http://www.example.com/alice/
- Међутим, није могуће знати да ли URL путања представља пут до директоријума или не. RFC 3986 извештава да ако се првобитни URL преусмери на каснији URL, то онда значи да су они еквивалентни.
- Уклањање тачка-делова. Делови “..” и “.” могу се уклонити из URL-а у складу са алгоритмом описаним у RFC 3986 (или сличним алгоритмом). Пример:
http://www.example.com/../a/b/../c/./d.html
→http://www.example.com/a/c/d.html
- Ипак, ако је уклоњени део "
..
", на пример "b/..
", симболички линк ка директоријуму са различитим родитељем, изостављени део "b/..
" ће створити нову путању или URL.[4] Ретко, зависно од веб сервера, ово се може десити и са кореним директоријумима. (на пример "//www.example.com/..
" може се разликовати од "//www.example.com/
".
Нормализација која мења значење
[уреди | уреди извор]Примењујући следеће нормализације мења се значење URL адресе, иако се сементика адресе може сачувати:
- Уклањање индекса директоријума. Генерално, подразумевани индекси директоријума нису потребни URL адреси. Примери:
http://www.example.com/default.asp
→http://www.example.com/
http://www.example.com/a/index.html
→http://www.example.com/a/
- Уклањање фрагмената. Сервери никад не виде фрагмент компоненте URL-ова и понекад се могу изоставити. Пример:
http://www.example.com/bar.html#section1
→http://www.example.com/bar.html
- Ипак, AJAX апликације често користе вредности фрагмената.
- Замена IP-а са именом домена. Проверити да ли IP адреса повезује са канонским именом домена. Пример:
http://208.77.188.166/
→http://www.example.com/
- Супротна замена је ретко сигурна због виртуелних веб сервера.
- Лимитирање протокола. Лимитирање различитих апликационих слојева протокола. На пример, “https” шема се може заменити са “http”. Пример:
https://www.example.com/
→http://www.example.com/
- Уклањање дуплих косих црта. Код путања које садрже узастопне косе црте, две узастопне косе црте се могу заменити са једном. Пример:
http://www.example.com/foo//bar.html
→http://www.example.com/foo/bar.html
- Уклањање или додавање “www” као прву ознаку домена. Неки веб-сајтови раде идентично на обе врсте Интернет домена: први, чија је најмање значајна ознака „www” и други чије је име резултат изостављања најмање значајне етикете из имена првог, и касније ће бити познат као "голи домен" (енгл. naked domain). На пример,
http://example.com/
иhttp://www.example.com/
могу приступити истом веб-сајту. Многи веб-сатови преусмеравају корисника са „www” ка веб-сајту без www адресе и обрнуто. Нормализер може утврдити да ли било који од ових URL-ова преусмерава ка другом и нормализује све URL-ове на одговарајући начин. Пример:
http://www.example.com/
→http://example.com/
- Сортирање параметара упита. Неке веб-стране користе више од једног параметара упита у URL. Нормализер може да сортира параметре азбучним редоследом (са својим вредностима), и поново састави URL. Пример:
http://www.example.com/display?lang=en&article=fred
→http://www.example.com/display?article=fred&lang=en
- Међутим, редослед параметара у URL-у може бити значајан (ово није дефинисано стандардом) и веб-сервери могу дозволити да се појаве исте променљиве више пута.[5]
- Уклањање неискоришћених променљивих упита. Страна може једино очекивати одређене параметре да се појаве у упиту. Неупотребљени параметри могу бити уклоњени. Пример:
http://www.example.com/display?id=123&fakefoo=fakebar
→http://www.example.com/display?id=123
- Напомена: ако је параметар без вредности не мора да значи да је неупотребљен параметар.
- Уклањање подразумеваних параметара упита. Подразумевана вредност у стрингу упита може се идентично визуализовати било да је она ту или не. Пример:
http://www.example.com/display?id=&sort=ascending
→http://www.example.com/display
- Уклањање "?" када је упит празан. Када је упит празан, нема потребе за "?". Пример:
http://www.example.com/display?
→http://www.example.com/display
Нормализација базирана на URL листама
[уреди | уреди извор]Нека правила нормализације могу бити направљена за специфичне веб-сајтове увидом у URL листе добијених из претходних веб индексера или веб сервера. На пример, ако се URL појави у веб индексеру неколико пута поред, можемо претпоставити да су два URL-а еквивалентни и могу бити нормализовани по једној URL форми. Пример:
http://example.com/story?id=xyz
http://example.com/story_xyz
Шонфелд Ел Ал (2006) представио је претраживач назван DustBuster који служи за откривање DUST-а (прашине различитих URL-ова који садрже сличан текст) правила која могу бити примењена на URL листама. Они су показали да када су исправна DUST правила откривена и примењена са канонизацијом алгоритма, могли су да пронађу чак 68% сувишних URL-ова у URL листи.
Види још
[уреди | уреди извор]Референце
[уреди | уреди извор]- ^ Masinter, Larry; Berners-Lee, Tim; Fielding, Roy T. „Uniform Resource Identifier (URI): Generic Syntax”. tools.ietf.org (на језику: енглески).
- ^ Masinter, Larry; Berners-Lee, Tim; Fielding, Roy T. „Uniform Resource Identifier (URI): Generic Syntax”. tools.ietf.org (на језику: енглески). Приступљено 15. 10. 2020.
- ^ Masinter, Larry; Berners-Lee, Tim; Fielding, Roy T. „Uniform Resource Identifier (URI): Generic Syntax”. tools.ietf.org (на језику: енглески).
- ^ „Secure Coding in C and C++” (PDF). Securecoding.cert.org. Архивирано из оригинала (PDF) 06. 06. 2013. г. Приступљено 24. 8. 2013.
- ^ „jQuery 1.4 $.param demystified”. Ben Alman. 20. 12. 2009. Приступљено 24. 8. 2013.