URL normalizacija (ili URL kanonizacija) (engl. URL normalization) je proces u kome je URL promenjen na konzistentan način. Cilj normalizacije je prevesti URL u normalizovani (kanonski) oblik, tako da je moguće odrediti da li se dva sintaksno različita URL-a mogu odnositi na jedinstven entitet.

-Vrste URL normalizacije-

Pretraživači koriste URL normalizaciju u cilju označavanja važnosti veb stranice, kao i sprečavanja duplog indeksiranja stranica. Veb-finišeri omogućavaju URL normalizaciju kako bi se izbeglo pojavljivanje istog resursa više puta. Veb pregledači mogu pokrenuti normalizaciju i u cilju provere da li je neki link već posećivan.[1]

Proces normalizacije uredi

Postoji više tipova normalizacije. Neki tipovi su semanični dok drugi nisu.

Normalizacija koja čuva semantiku uredi

Sledeća normalizacija je opisana u RFC 3986[2] i rezultira istim URL-ovima (Web adresama):

  • Konvertovanje šema i host-ova u mala slova. Komponente URL šema i host-ova su neosetljive na veličinu slova. Većina normalizatora će ih konvertovati u mala slova. Primer:
HTTP://www.Example.com/http://www.example.com/
  • Konvertovanje slova u velika slova pomoću specijalnih znakova. Sva slova unutar URL-šifrovane trojke (npr. "%3A") su osetljiva na veličinu, i trebalo bi ih konvertovati u velika. Primer:
http://www.example.com/a%c2%b1bhttp://www.example.com/a%C2%B1b
  • Dešifrovanje %-šifrovanih okteta nerezervisanih karaktera. Doslednosti radi, %-šifrovani okteti u rasponima ALPHA (%41%5A i %61%7A), DIGIT (%30%39), crtica (%2D), razmak (%2E), podvlaka (%5F), ili tilda (%7E) ne bi trebalo da budu kreirani od strane URI proizvođača, a ako bi bili pronađeni u URI-u, trebalo bi ih dešifrovani u njihove odgovarajuće, nerezervisane karaktere pomoću URI normalizatora.[3] Primer:
http://www.example.com/%7Eusername/http://www.example.com/~username/
  • Uklanjanje uobičajenog porta. Uobičajeni port (port 80 za “http” protokol) može biti uklonjen (ili dodat) URL-u. Primer:
http://www.example.com:80/bar.htmlhttp://www.example.com/bar.html


Normalizacija koja najčešće čuva semantiku uredi

Za http i https URL-ove, sledeća normalizacija, opisana u RFC 3986, može rezultirati istim URL-ovima, ali i ne mora, jer to nije u nekim slučajevim standardna adresa:

  • Dodavanje repa / Podrazumeva dodavanje kose crte u okviru URL-a. Primer:
http://www.example.com/alicehttp://www.example.com/alice/
Međutim, nije moguće znati da li URL putanja predstavlja put do direktorijuma ili ne. RFC 3986 izveštava da ako se prvobitni URL preusmeri na kasniji URL, to onda znači da su oni ekvivalentni.
  • Uklanjanje tačka-delova. Delovi “..” i “.” mogu se ukloniti iz URL-a u skladu sa algoritmom opisanim u RFC 3986 (ili sličnim algoritmom). Primer:
http://www.example.com/../a/b/../c/./d.htmlhttp://www.example.com/a/c/d.html
Ipak, ako je uklonjeni deo "..", na primer "b/..", simbolički link ka direktorijumu sa različitim roditeljem, izostavljeni deo "b/.." će stvoriti novu putanju ili URL.[4] Retko, zavisno od veb servera, ovo se može desiti i sa korenim direktorijumima. (na primer "//www.example.com/.." može se razlikovati od "//www.example.com/".

Normalizacija koja menja značenje uredi

Primenjujući sledeće normalizacije menja se značenje URL adrese, iako se sementika adrese može sačuvati:

  • Uklanjanje indeksa direktorijuma. Generalno, podrazumevani indeksi direktorijuma nisu potrebni URL adresi. Primeri:
http://www.example.com/default.asphttp://www.example.com/
http://www.example.com/a/index.htmlhttp://www.example.com/a/
  • Uklanjanje fragmenata. Serveri nikad ne vide fragment komponente URL-ova i ponekad se mogu izostaviti. Primer:
http://www.example.com/bar.html#section1http://www.example.com/bar.html
Ipak, AJAX aplikacije često koriste vrednosti fragmenata.
  • Zamena IP-a sa imenom domena. Proveriti da li IP adresa povezuje sa kanonskim imenom domena. Primer:
http://208.77.188.166/http://www.example.com/
Suprotna zamena je retko sigurna zbog virtuelnih veb servera.
  • Limitiranje protokola. Limitiranje različitih aplikacionih slojeva protokola. Na primer, “https” šema se može zameniti sa “http”. Primer:
https://www.example.com/http://www.example.com/
  • Uklanjanje duplih kosih crta. Kod putanja koje sadrže uzastopne kose crte, dve uzastopne kose crte se mogu zameniti sa jednom. Primer:
http://www.example.com/foo//bar.htmlhttp://www.example.com/foo/bar.html
  • Uklanjanje ili dodavanje “www” kao prvu oznaku domena. Neki veb-sajtovi rade identično na obe vrste Internet domena: prvi, čija je najmanje značajna oznaka „www” i drugi čije je ime rezultat izostavljanja najmanje značajne etikete iz imena prvog, i kasnije će biti poznat kao "goli domen" (engl. naked domain). Na primer, http://example.com/ i http://www.example.com/ mogu pristupiti istom veb-sajtu. Mnogi veb-satovi preusmeravaju korisnika sa „www” ka veb-sajtu bez www adrese i obrnuto. Normalizer može utvrditi da li bilo koji od ovih URL-ova preusmerava ka drugom i normalizuje sve URL-ove na odgovarajući način. Primer:
http://www.example.com/http://example.com/
  • Sortiranje parametara upita. Neke veb-strane koriste više od jednog parametara upita u URL. Normalizer može da sortira parametre azbučnim redosledom (sa svojim vrednostima), i ponovo sastavi URL. Primer:
http://www.example.com/display?lang=en&article=fredhttp://www.example.com/display?article=fred&lang=en
Međutim, redosled parametara u URL-u može biti značajan (ovo nije definisano standardom) i veb-serveri mogu dozvoliti da se pojave iste promenljive više puta.[5]
  • Uklanjanje neiskorišćenih promenljivih upita. Strana može jedino očekivati određene parametre da se pojave u upitu. Neupotrebljeni parametri mogu biti uklonjeni. Primer:
http://www.example.com/display?id=123&fakefoo=fakebarhttp://www.example.com/display?id=123
Napomena: ako je parametar bez vrednosti ne mora da znači da je neupotrebljen parametar.
  • Uklanjanje podrazumevanih parametara upita. Podrazumevana vrednost u stringu upita može se identično vizualizovati bilo da je ona tu ili ne. Primer:
http://www.example.com/display?id=&sort=ascendinghttp://www.example.com/display
  • Uklanjanje "?" kada je upit prazan. Kada je upit prazan, nema potrebe za "?". Primer:
http://www.example.com/display?http://www.example.com/display

Normalizacija bazirana na URL listama uredi

Neka pravila normalizacije mogu biti napravljena za specifične veb-sajtove uvidom u URL liste dobijenih iz prethodnih veb indeksera ili veb servera. Na primer, ako se URL pojavi u veb indekseru nekoliko puta pored, možemo pretpostaviti da su dva URL-a ekvivalentni i mogu biti normalizovani po jednoj URL formi. Primer:

http://example.com/story?id=xyz
http://example.com/story_xyz


Šonfeld El Al (2006) predstavio je pretraživač nazvan DustBuster koji služi za otkrivanje DUST-a (prašine različitih URL-ova koji sadrže sličan tekst) pravila koja mogu biti primenjena na URL listama. Oni su pokazali da kada su ispravna DUST pravila otkrivena i primenjena sa kanonizacijom algoritma, mogli su da pronađu čak 68% suvišnih URL-ova u URL listi.

Vidi još uredi

Reference uredi

  1. ^ Masinter, Larry; Berners-Lee, Tim; Fielding, Roy T. „Uniform Resource Identifier (URI): Generic Syntax”. tools.ietf.org (na jeziku: engleski). 
  2. ^ Masinter, Larry; Berners-Lee, Tim; Fielding, Roy T. „Uniform Resource Identifier (URI): Generic Syntax”. tools.ietf.org (na jeziku: engleski). Pristupljeno 15. 10. 2020. 
  3. ^ Masinter, Larry; Berners-Lee, Tim; Fielding, Roy T. „Uniform Resource Identifier (URI): Generic Syntax”. tools.ietf.org (na jeziku: engleski). 
  4. ^ „Secure Coding in C and C++” (PDF). Securecoding.cert.org. Arhivirano iz originala (PDF) 06. 06. 2013. g. Pristupljeno 24. 8. 2013. 
  5. ^ „jQuery 1.4 $.param demystified”. Ben Alman. 20. 12. 2009. Pristupljeno 24. 8. 2013.