Jump to content

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

Виды нормализации URI.

Нормализация URI — это процесс, посредством которого URI последовательно изменяются и стандартизируются. Цель процесса нормализации — преобразовать URI в нормализованный URI, чтобы можно было определить, могут ли два синтаксически разных URI быть эквивалентными.

Поисковые системы используют нормализацию URI, чтобы правильно ранжировать страницы, которые можно найти по нескольким URI, и уменьшить индексацию дубликатов страниц. Веб-сканеры выполняют нормализацию URI, чтобы избежать повторного сканирования одного и того же ресурса. Веб-браузеры могут выполнять нормализацию, чтобы определить, была ли посещена ссылка или кэширована ли страница . Веб-серверы также могут выполнять нормализацию по многим причинам (например, чтобы иметь возможность легче перехватывать угрозы безопасности, исходящие от клиентских запросов, использовать только одно абсолютное имя файла для каждого ресурса, хранящегося в их кэшах, названного в файлах журналов и т. д.).

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

[ редактировать ]

Существует несколько типов нормализации, которые могут быть выполнены. Некоторые из них всегда сохраняют семантику, а некоторые — нет.

Нормализации, сохраняющие семантику

[ редактировать ]

Следующие нормализации описаны в RFC 3986. [1] чтобы получить эквивалентные URI:

http://example.com/foo%2ahttp://example.com/foo%2A
  • Преобразование схемы и хоста в нижний регистр. Компоненты схемы . и хоста URI нечувствительны к регистру и поэтому должны быть нормализованы к нижнему регистру [3] Пример:
HTTP://[email protected]/Foohttp://[email protected]/Foo
  • Декодирование троек незарезервированных символов, закодированных в процентах. Процентно-кодированные триплеты URI в диапазонах АЛЬФА ( %41%5A и %61%7A), ЦИФРА ( %30%39), дефис ( %2D), период ( %2E), подчеркивание ( %5F) или тильда ( %7E) не требуют процентного кодирования и должны быть декодированы в соответствующие незарезервированные символы. [4] Пример:
http://example.com/%7Efoohttp://example.com/~foo
  • Удаление точек-сегментов. Точечные сегменты . и .. в компоненте пути URI следует удалить, применив алгоритм Remove_dot_segments. [5] по пути, описанному в RFC 3986. [6] Пример:
http://example.com/foo/./bar/baz/../quxhttp://example.com/foo/bar/qux
  • Преобразование пустого пути в путь «/». При наличии компонента полномочий пустой компонент пути должен быть нормализован до компонента пути «/». [7] Пример:
http://example.comhttp://example.com/
http://example.com:80/http://example.com/

Нормализации, которые обычно сохраняют семантику

[ редактировать ]

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

  • Добавление завершающего «/» к непустому пути. Каталоги (папки) обозначаются косой чертой и должны быть включены в URI. Пример:
http://example.com/foohttp://example.com/foo/
Однако невозможно узнать, представляет ли компонент пути URI каталог или нет. В RFC 3986 отмечается, что если первый URI перенаправляется на второй URI, это указывает на то, что они эквивалентны.

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

[ редактировать ]

Применение следующих нормализации приводит к получению семантически другого URI, хотя он может относиться к одному и тому же ресурсу:

http://example.com/a/index.htmlhttp://example.com/a/
http://example.com/default.asphttp://example.com/
  • Удаление фрагмента. Компонент - фрагмент URI никогда не виден серверу и иногда может быть удален. Пример:
http://example.com/bar.html#section1http://example.com/bar.html
Однако приложения AJAX часто используют значение во фрагменте.
  • Замена IP на доменное имя. Проверьте, соответствует ли IP-адрес доменному имени. Пример:
http://208.77.188.166/http://example.com/
Обратная замена редко бывает безопасной из-за виртуальных веб-серверов .
https://example.com/http://example.com/
  • Удаление повторяющихся косых черт. Контуры, включающие две соседние косые черты, можно преобразовать в одну. Пример:
http://example.com/foo//bar.htmlhttp://example.com/foo/bar.html
  • Удаление или добавление «www» в качестве первой метки домена. Некоторые веб-сайты одинаково работают в двух интернет-доменах: один, у которого наименее значимая метка — «www», и другой, чье имя является результатом исключения наименее значимой метки из имени первого, причем последний известен как голый домен . Например, http://www.example.com/ и http://example.com/ может получить доступ к тому же веб-сайту. Многие веб-сайты перенаправляют пользователя с адреса www на адрес без www или наоборот. Нормализатор может определить, перенаправляется ли один из этих URI на другой, и соответствующим образом нормализовать все URI. Пример:
http://www.example.com/http://example.com/
  • Сортировка параметров запроса. Некоторые веб-страницы используют более одного параметра запроса в URI. Нормализатор может сортировать параметры в алфавитном порядке (с их значениями) и повторно собирать URI. Пример:
http://example.com/display?lang=en&article=fredhttp://example.com/display?article=fred&lang=en
Однако порядок параметров в URI может быть существенным (это не определено стандартом), и веб-сервер может допускать появление одной и той же переменной несколько раз. [9]
  • Удаление неиспользуемых переменных запроса. Страница может ожидать появления в запросе только определенных параметров; неиспользуемые параметры можно удалить. Пример:
http://example.com/display?id=123&fakefoo=fakebarhttp://example.com/display?id=123
Обратите внимание, что параметр без значения не обязательно является неиспользуемым параметром.
  • Удаление параметров запроса по умолчанию. Значение по умолчанию в строке запроса может отображаться одинаково независимо от того, присутствует оно там или нет. Пример:
http://example.com/display?id=&sort=ascendinghttp://example.com/display
  • Удаление знака "?" когда запрос пуст. Если запрос пуст, знак «?» может не понадобиться. Пример:
http://example.com/display?http://example.com/display

Нормализация на основе списков URI

[ редактировать ]

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

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

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

http://example.com/story_xyz

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

Шонфельд и др. (2006) представили эвристику под названием DustBuster для обнаружения правил DUST (разные URI со схожим текстом), которые можно применять к спискам URI. Они показали, что после того, как правильные правила DUST были найдены и применены с помощью алгоритма нормализации, они смогли найти до 68% избыточных URI в списке URI.

См. также

[ редактировать ]
  1. ^ RFC 3986, раздел 6. Нормализация и сравнение.
  2. ^ RFC 3986, раздел 6.2.2.1. Нормализация случая
  3. ^ RFC 3986, раздел 6.2.2.1. Нормализация случая
  4. ^ RFC 3986, раздел 6.2.2.3. Нормализация сегмента пути
  5. ^ RFC 3986, 5.2.4. Удалить точечные сегменты
  6. ^ RFC 3986, 6.2.2.3. Нормализация сегмента пути
  7. ^ RFC 3986, раздел 6.2.3. Нормализация на основе схемы
  8. ^ RFC 3986, раздел 6.2.3. Нормализация на основе схемы
  9. ^ «jQuery 1.4 $.param раскрыт» . Бен Алман. 20 декабря 2009 года . Проверено 24 августа 2013 г.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: a50778c08acf1e6d0592426c1979e666__1705378980
URL1:https://arc.ask3.ru/arc/aa/a5/66/a50778c08acf1e6d0592426c1979e666.html
Заголовок, (Title) документа по адресу, URL1:
URI normalization - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)