Почему в URL-адресе иногда появляются странные символы?

Любой пользователь не раз и не два копировал адрес для вставки в адресную строку браузера (URL-адрес), но иногда короткие и понятные адреса после копирования оказываются заполненными разными непонятными символами. Посмотрим, почему это происходит.

Единый указатель ресурсов (Uniform Resource Locator, URL) – это стандартизованный и уникальный адрес информационного ресурса в сети Интернет (веб-страницы или ее части), единообразный локатор (определитель местонахождения) ресурса. Иногда ее называют универсальным указателем ресурса. Первоначально старались сделать его вполне понятным человеку, подобно библиографической ссылке на страницу в книге. Однако сейчас адреса иногда становятся длинными и непонятными.

Для примера возьмем адрес одной из первых публикации нашего сайта и посмотрим на составляющие его части:

Перевод на лету. Skype Translator

Фрагмент «http://» определяет протокол, которым должен воспользоваться брузер для обращения на наш сайт. В данном случае, это протокол HTTP или HyperText Transfer Protocol (протокол пересылки гипертекста), который как раз и предназначен для веб-страниц (они являются гипертекстовыми документами в формате HTML, стандарт языка гипертекстовой разметки). Такой обмен данными предполагает наличие потребителей информации (клиентов), которые инициируют соединение и посылают запрос, и поставщиков информации (серверов), которые ожидают соединения для получения запроса, производят необходимые действия и возвращают обратно сообщение с результатом, т.е. возвращают браузеру содержимое запрошенной по адресу веб-страницы.

Часть «www.funtecs.ru» или просто «funtecs.ru», когда www добавляет браузер, определяет имя сервера, к которому нужно обратиться. Занято, что вначале, в первые дни существования Интернета этого было достаточно, поскольку все HTML-документы содержали прямые ссылки друг на друга на уровне имен серверов. Шон О’Коннор (Sean O’Connor), ведущий прикладной инженер сайта аббревиатур для длинных URL-адресов (Bit.ly), вспоминает:

«В этом достаточно простом мире подобной информации было вполне достаточно для ссылок между страницами: нужно было указать протокол (http://), сервер (www.example.com) и запрашиваемый документ на этом сервере (например, /articles/cool-info.html).

Однако веб-служба Интернета (использующая протокол HTTP) развивалась стремительно, поэтому вскоре пользователей перестали удовлетворять простые статические веб-страницы – потребовалась динамика, чтобы угнаться за постоянно меняющейся информацией. Именно поэтому в URL-адресах появились дополнительные части.

Например, всё, что указано в URL после символа «?», называется параметрами запроса «query parameters». Согласно указанным в браузере параметрам один сервер может выдавать разные страницы разным браузерам. Именно это свойство используется поисковыми системами для вывода пользователю динамической веб-страницы со списком информационных ресурсов, согласно ключевым словам поиска (параметрам запроса).

Продолжим обсуждения составных частей (синтаксиса нашего примера со страницей на сайте Фантекс).

После .ru находится символ «слэш – прямой косой черты /» и указано имя веб-страницы на сайте Фантекс. Таких слэшей может быть несколько и все они определяют так называемый путь (path) в файловой системе сервера, как и на любом другом компьютере.

Чтобы показать другие свойства URL-адреса, перейдем на сайт Google.ru и введем поисковый запрос «I like Funtecs (мне нравится Фантекс)», но в адресной строке появится:

https://www.google.ru/search?q=I+like+Funtecs

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

Иногда такой запрос будет выглядеть так:

https://www.google.ru/search?q=I%20like%20Funtecs

Этот процесс называется escaping (отмена неоднозначности). Дело в том, что один и тот же служебный символ может использоваться в запросе пользователя, но одновременно определять некоторую операцию/команду в адресной строке. Когда возникает неоднозначность такого рода, опасные символы заменяются альтернативным представление и в нашем примере символ «полюс» стал %20 (или %3F для вопросительного знака, например). Альтернативная запись есть у всех специальных символов, а принцип подстановки позволяет переправить их на сервер, даже если они совпадают с некоторыми командами (точнее с модификаторами команды).

Далее могут следовать пары ключ-значение (key-value), которые задают дополнительные параметры, например page=5 задает поиск на пятой странице сайта.

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

Статические и динамические URL-адреса легко различить по используемым в них специальным символам. В адресе статической страницы, в дополнение к буквам и цифрам, могут быть только символы: точка, косая черта, тире и подчеркивание. Если же в адресе появляются знак вопроса, амперсанд, знак равенства, восклицательный знак, «звездочка» и т.д., значит мы видим динамическую веб-страницу, которая будет загружаться медленнее статической и не предполагает запоминания человеком, поскольку такой адрес вполне может измениться даже при следующем щелчке мышью. Обычно это таргетированная рекламная ссылка, используемая во время рекламных кампаний.

Есть еще два момента, на которые следует обратить внимание.

Во-первых, из-за непомерной длины некоторых URL появились средства для короткой записи адресов. Исходный длинный адрес заменяется коротким псевдонимом, ведущим на специальный сайт, в специальной таблице которого хранится настоящая полная ссылка. В этой связи можно отметить Bitly, TinyURL, Google URL Shortener или Ow.ly, но не следует забывать о небольшой задержке, которая возникает при замене одной операции двумя.

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

Например, мы можем назвать на компьютере файл или папку «Микрокредит», но адрес «http://funtecs.com /Микрокредит» будет выглядеть так:

«http://funtecs.com/%D0%9C%D0%B8%D0%BA%D1%80%D0%BE%D0%BA%D1%80%D0%B5%D0%B4%D0%B8%D1%82»

Такое преобразование происходит в два этапа: сначала каждый символ кириллицы кодируется в Юникоде (UTF-8) в последовательность из двух байтов, а затем каждый байт этой последовательности записывается в шестнадцатеричном представлении:

М → D0 и 9C → %D0%9C
и → D0 и B8 → %D0%B8
к → D0 и BA → %D0%BA
р → D1 и 80 → %D1%80 и т. д

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

Источник:
https://tools.ietf.org/html/rfc3986
http://gizmodo.com/why-are-urls-full-of-garbage-characters-1719538363

Интересные записи