Нормализация URL

Поделись знанием:
Перейти к: навигация, поиск

Нормализа́ция URL (или канониза́ция URL) — процесс, при котором URL приводится к единообразному виду. Цель процесса нормализации заключается в преобразовании URL в нормализованный или канонический вид, с тем, чтобы определить эквивалентность двух синтаксически различных URL-адресов.[1]

Поисковые системы используют нормализацию URL для того, чтобы снизить индексацию дубликатов страниц и расположить страницы в порядке значимости. Поисковые роботы выполняют нормализацию URL для того, чтобы избежать повторного сканирования ресурса. Браузеры могут выполнять нормализацию, чтобы определить было ли посещение или есть ли страница в кэше.

Есть несколько типов нормализации, которые могут быть применены к URL: одни сохраняют исходный адрес[⇨], другие — не сохраняют[⇨].





Процесс нормализации

Нормализации, сохраняющие исходное написание

Перечисленные ниже способы нормализации описаны в RFC 3986[2] и приводят к эквивалентным URL.

  • Конвертация в нижний регистр. Компоненты схемы и хоста не чувствительны к регистру, и большинство нормализаторов конвертирует URL в нижний регистр. Например:
HTTP://www.Example.com/www.example.com/
  • Перевод в верхний регистр управляющих конструкций Все символы с процентным указателем (например «%3А») являются регистро-зависимыми и должны быть переведены в верхний регистр. Например:
www.example.com/a%c2%b1bwww.example.com/a%C2%B1b
  • Перекодировка управляющих конструкций в явные символы. Для связанности процентные конструкции переводятся в понятные символы (Альфа (%41-%5A и %61-%7A), Цифровые (%30-%39), дефис (%2D), точка (%2E), подчёркивание (%5F), или тильда (%7E) не должны создаваться URI поставщиками и когда находятся такие URI с процентными конструкциями, то они должны быть переведены в символы.[3] Например:
www.example.com/%7Eusername/www.example.com/~username/
  • Удаление порта́ по умолчанию. Порт по умолчанию (порт 80 для протокола http) может быть удалён из URL. Например:
www.example.com:80/bar.htmlwww.example.com/bar.html

Нормализация с частичным сохранением исходного написания

Для протоколов http и https следующие варианты нормализации по стандарту RFC 3986 могут привести к эквивалентным URL, но стандартом это не гарантируется.

  • Добавление конечного слеша. Демонстрация директории при помощи конечного слеша, включённого в состав URL. Например:
www.example.com/alicewww.example.com/alice/
Однако нет способа узнать, включает ли URL путь к директории или нет. В RFC 3986 указано, что если исходный URL перенаправляет на нормализованный URL, то это является признаком эквивалентности.
  • Удаление сегментов-точек. Сегменты «..» и «.» могут быть удалены из URL, согласно алгоритму, описанному в RFC 3986 (или похожему). Например:
www.example.com/../a/b/../c/./d.htmlwww.example.com/a/c/d.html

Нормализации, изменяющие написание

Применяются следующие способы нормализации, приводящие к различному написанию URL, ведущих на один ресурс:

  • Удаление головного индекса. Например:
www.example.com/default.aspwww.example.com/
www.example.com/a/index.htmlwww.example.com/a/
  • Удаление фрагментов. Фрагмент URL (англ.) никогда не виден на сервере и может быть удален. Например:
www.example.com/bar.html#section1www.example.com/bar.html
Однако, приложения на AJAX часто используют переменные в таких фрагментах и их удаление может привести к перенаправлению на другой ресурс.
  • Замена IP адреса именем доме́на. Проверка, есть ли для IP-адреса доменное имя. Например:
208.77.188.166/www.example.com/
Обратная замена редко бывает безопасной из-за использования виртуальных веб-серверов.
  • Сокращение идентификаторов протоколов. Различные протоколы прикладного уровня, например, https, могут быть переведены в http. Например:
www.example.com/www.example.com/
  • Удаление дублированных слешей Два соседних слеша в пути можно преобразовать в один. Например:
www.example.com/foo//bar.htmlwww.example.com/foo/bar.html
  • Удаление или добавление «www» как элемента верхнего доменного уровня. Некоторые сайты оперируют двумя интернет-доменами. Например example.com/ и www.example.com/ могут вести на один ресурс. Многие веб-сайты перенаправляют пользователя с www на не-www адрес или наоборот. Алгоритмы нормализации могут определить эти перенаправления и соответствующим образом преобразовать URL. Например:
www.example.com/example.com/
  • Сортировка параметров запросов. Некоторые веб страницы используют более чем один параметр в URL. Алгоритмы нормализации могут отсортировать параметры в алфавитном порядке (с сохранением их значений) и пересоздать URL. Например:
www.example.com/display?lang=en&article=fredwww.example.com/display?article=fred&lang=en
Однако порядок параметров в URL может быть значимым (это не определяется стандартами) и веб сервер может позволять переменным появляться несколько раз.[4]
  • Удаление неиспользуемых переменных в запросе. Страница может ожидать только определённые параметры и неиспользуемые параметры можно удалить. Например:
www.example.com/display?id=123&fakefoo=fakebarwww.example.com/display?id=123
Параметр без значения не означает что параметр не используется.
  • Удаление параметров запроса по умолчанию. Значение параметров по умолчанию в строке запроса могут показывать одинаковый результат, даже если они не будут указаны. Например:
www.example.com/display?id=&sort=ascendingwww.example.com/display
  • Удаление «?» при пустом запросе. Когда запрос пустой, то символ «?», возможно, не нужен. Например:
www.example.com/display?www.example.com/display

Нормализация, основанная на списках URL

Некоторые правила нормализации могут быть разработаны для определенных веб-сайтов, изучая списки URL, полученные от предыдущих сканирований журнала или логов сервера. Например, если URL

foo.org/story?id=xyz

появляется в журнале логов несколько раз вместе с

foo.org/story_xyz

можно предположить, что эти два URL эквивалентны и могут быть нормализованы в одну из форм.

Сконфелд и соавторы в 2006 году[5] представили эвристическую систему DustBuster, которая позволяет обнаружить DUST (different URLs with similar text, различные URL с похожим текстом), это правила которые могут быть применены к URL спискам. Они показали, что как только были найдены нужные правила по DUST и применены к нормализующим алгоритмам, они показали способность к поиску до 68 % избыточных URL-адресов в списках URL.

См. также

Напишите отзыв о статье "Нормализация URL"

Примечания

  1. RFC3986, 2005, Section 6, p. 38.
  2. RFC3986, 2005.
  3. RFC3986, 2005, Section 2.3.
  4. Ben, 2009.
  5. DUST2006, 2006, pp. 1015-1016.

Литература

  • Network Working Group. [tools.ietf.org/html/rfc3986 RFC 3986 — Uniform Resource Identifier (URI): Generic Syntax]. — WWW, 2005. — 61 с.
  • Gautam Pant, Padmini Srinivasan, and Filippo Menczer [homepage.cs.uiowa.edu/~psriniva/Papers/crawlingFinal.pdf Crawling the Web] (англ.). — 2004.
  • Uri Schonfeld, Ziv Bar-Yossef, and Idit Keidar [www2006.org/programme/item.php?id=p20 Do not crawl in the dust: different URLs with similar text] (англ.). — 2006.
  • Uri Schonfeld, Ziv Bar-Yossef, and Idit Keidar [www2007.org/paper194.php Do not crawl in the dust: different URLs with similar text] (англ.). — 2007.
  • Ben Alman [benalman.com/news/2009/12/jquery-14-param-demystified/ jQuery 1.4 $.param demystified] (англ.). — 2009.

Отрывок, характеризующий Нормализация URL

– Я тебя звал всю ночь… – выговорил он.
– Ежели бы я знала… – сквозь слезы сказала она. – Я боялась войти.
Он пожал ее руку.
– Не спала ты?
– Нет, я не спала, – сказала княжна Марья, отрицательно покачав головой. Невольно подчиняясь отцу, она теперь так же, как он говорил, старалась говорить больше знаками и как будто тоже с трудом ворочая язык.
– Душенька… – или – дружок… – Княжна Марья не могла разобрать; но, наверное, по выражению его взгляда, сказано было нежное, ласкающее слово, которого он никогда не говорил. – Зачем не пришла?
«А я желала, желала его смерти! – думала княжна Марья. Он помолчал.
– Спасибо тебе… дочь, дружок… за все, за все… прости… спасибо… прости… спасибо!.. – И слезы текли из его глаз. – Позовите Андрюшу, – вдруг сказал он, и что то детски робкое и недоверчивое выразилось в его лице при этом спросе. Он как будто сам знал, что спрос его не имеет смысла. Так, по крайней мере, показалось княжне Марье.
– Я от него получила письмо, – отвечала княжна Марья.
Он с удивлением и робостью смотрел на нее.
– Где же он?
– Он в армии, mon pere, в Смоленске.
Он долго молчал, закрыв глаза; потом утвердительно, как бы в ответ на свои сомнения и в подтверждение того, что он теперь все понял и вспомнил, кивнул головой и открыл глаза.
– Да, – сказал он явственно и тихо. – Погибла Россия! Погубили! – И он опять зарыдал, и слезы потекли у него из глаз. Княжна Марья не могла более удерживаться и плакала тоже, глядя на его лицо.
Он опять закрыл глаза. Рыдания его прекратились. Он сделал знак рукой к глазам; и Тихон, поняв его, отер ему слезы.
Потом он открыл глаза и сказал что то, чего долго никто не мог понять и, наконец, понял и передал один Тихон. Княжна Марья отыскивала смысл его слов в том настроении, в котором он говорил за минуту перед этим. То она думала, что он говорит о России, то о князе Андрее, то о ней, о внуке, то о своей смерти. И от этого она не могла угадать его слов.
– Надень твое белое платье, я люблю его, – говорил он.
Поняв эти слова, княжна Марья зарыдала еще громче, и доктор, взяв ее под руку, вывел ее из комнаты на террасу, уговаривая ее успокоиться и заняться приготовлениями к отъезду. После того как княжна Марья вышла от князя, он опять заговорил о сыне, о войне, о государе, задергал сердито бровями, стал возвышать хриплый голос, и с ним сделался второй и последний удар.
Княжна Марья остановилась на террасе. День разгулялся, было солнечно и жарко. Она не могла ничего понимать, ни о чем думать и ничего чувствовать, кроме своей страстной любви к отцу, любви, которой, ей казалось, она не знала до этой минуты. Она выбежала в сад и, рыдая, побежала вниз к пруду по молодым, засаженным князем Андреем, липовым дорожкам.
– Да… я… я… я. Я желала его смерти. Да, я желала, чтобы скорее кончилось… Я хотела успокоиться… А что ж будет со мной? На что мне спокойствие, когда его не будет, – бормотала вслух княжна Марья, быстрыми шагами ходя по саду и руками давя грудь, из которой судорожно вырывались рыдания. Обойдя по саду круг, который привел ее опять к дому, она увидала идущих к ней навстречу m lle Bourienne (которая оставалась в Богучарове и не хотела оттуда уехать) и незнакомого мужчину. Это был предводитель уезда, сам приехавший к княжне с тем, чтобы представить ей всю необходимость скорого отъезда. Княжна Марья слушала и не понимала его; она ввела его в дом, предложила ему завтракать и села с ним. Потом, извинившись перед предводителем, она подошла к двери старого князя. Доктор с встревоженным лицом вышел к ней и сказал, что нельзя.
– Идите, княжна, идите, идите!
Княжна Марья пошла опять в сад и под горой у пруда, в том месте, где никто не мог видеть, села на траву. Она не знала, как долго она пробыла там. Чьи то бегущие женские шаги по дорожке заставили ее очнуться. Она поднялась и увидала, что Дуняша, ее горничная, очевидно, бежавшая за нею, вдруг, как бы испугавшись вида своей барышни, остановилась.
– Пожалуйте, княжна… князь… – сказала Дуняша сорвавшимся голосом.
– Сейчас, иду, иду, – поспешно заговорила княжна, не давая времени Дуняше договорить ей то, что она имела сказать, и, стараясь не видеть Дуняши, побежала к дому.
– Княжна, воля божья совершается, вы должны быть на все готовы, – сказал предводитель, встречая ее у входной двери.
– Оставьте меня. Это неправда! – злобно крикнула она на него. Доктор хотел остановить ее. Она оттолкнула его и подбежала к двери. «И к чему эти люди с испуганными лицами останавливают меня? Мне никого не нужно! И что они тут делают? – Она отворила дверь, и яркий дневной свет в этой прежде полутемной комнате ужаснул ее. В комнате были женщины и няня. Они все отстранились от кровати, давая ей дорогу. Он лежал все так же на кровати; но строгий вид его спокойного лица остановил княжну Марью на пороге комнаты.
«Нет, он не умер, это не может быть! – сказала себе княжна Марья, подошла к нему и, преодолевая ужас, охвативший ее, прижала к щеке его свои губы. Но она тотчас же отстранилась от него. Мгновенно вся сила нежности к нему, которую она чувствовала в себе, исчезла и заменилась чувством ужаса к тому, что было перед нею. «Нет, нет его больше! Его нет, а есть тут же, на том же месте, где был он, что то чуждое и враждебное, какая то страшная, ужасающая и отталкивающая тайна… – И, закрыв лицо руками, княжна Марья упала на руки доктора, поддержавшего ее.
В присутствии Тихона и доктора женщины обмыли то, что был он, повязали платком голову, чтобы не закостенел открытый рот, и связали другим платком расходившиеся ноги. Потом они одели в мундир с орденами и положили на стол маленькое ссохшееся тело. Бог знает, кто и когда позаботился об этом, но все сделалось как бы само собой. К ночи кругом гроба горели свечи, на гробу был покров, на полу был посыпан можжевельник, под мертвую ссохшуюся голову была положена печатная молитва, а в углу сидел дьячок, читая псалтырь.
Как лошади шарахаются, толпятся и фыркают над мертвой лошадью, так в гостиной вокруг гроба толпился народ чужой и свой – предводитель, и староста, и бабы, и все с остановившимися испуганными глазами, крестились и кланялись, и целовали холодную и закоченевшую руку старого князя.


Богучарово было всегда, до поселения в нем князя Андрея, заглазное именье, и мужики богучаровские имели совсем другой характер от лысогорских. Они отличались от них и говором, и одеждой, и нравами. Они назывались степными. Старый князь хвалил их за их сносливость в работе, когда они приезжали подсоблять уборке в Лысых Горах или копать пруды и канавы, но не любил их за их дикость.
Последнее пребывание в Богучарове князя Андрея, с его нововведениями – больницами, школами и облегчением оброка, – не смягчило их нравов, а, напротив, усилило в них те черты характера, которые старый князь называл дикостью. Между ними всегда ходили какие нибудь неясные толки, то о перечислении их всех в казаки, то о новой вере, в которую их обратят, то о царских листах каких то, то о присяге Павлу Петровичу в 1797 году (про которую говорили, что тогда еще воля выходила, да господа отняли), то об имеющем через семь лет воцариться Петре Феодоровиче, при котором все будет вольно и так будет просто, что ничего не будет. Слухи о войне в Бонапарте и его нашествии соединились для них с такими же неясными представлениями об антихристе, конце света и чистой воле.