Сохраните команду ../../../ в команде wget

../../../ удаляется, когда я использую его с URL-адресом в команде wget . PLease см. Ниже:

 user $ wget http://n0t.meaning.anything:20000/../../../some/folder/file --2015-10-29 16:48:13-- http://n0t.meaning.anything:20000/some/folder/file Resolving n0t.meaning.anything (n0t.meaning.anything)... failed: Name or service not known. wget: unable to resolve host address 'n0t.meaning.anything' user $ 

Вы можете игнорировать вторую и третью строку (потому что URL-адрес на самом деле не существует). Но в первой строке вы видите:

 --2015-10-29 16:48:13-- http://n0t.meaning.anything:20000/some/folder/file 

Но моя команда была

 wget http://n0t.meaning.anything:20000/../../../some/folder/file 

Таким образом, вы можете видеть, что ../../../ был удален моей оболочкой (или командой wget).

Как сохранить команду ../../../ в команде wget.

2 Solutions collect form web for “Сохраните команду ../../../ в команде wget”

Я не думаю, что вы можете без кодирования URL-адресов. wget src/url.c удаляет их; насколько я могу судить по очень кратким взглядам на источник, нет никакого способа обойти это.

 /* Resolve "." and ".." elements of PATH by destructively modifying PATH and return true if PATH has been modified, false otherwise. The algorithm is in spirit similar to the one described in rfc1808, although implemented differently, in one pass. To recap, path elements containing only "." are removed, and ".." is taken to mean "back up one element". Single leading and trailing slashes are preserved. For example, "a/b/c/./../d/.." will yield "a/b/". More exhaustive test examples are provided below. If you change anything in this function, run test_path_simplify to make sure you haven't broken a test case. */ 

RFC3986 §5.4.2 (thanks @phk) гласит:

Парсеры должны быть осторожны при обработке случаев, когда в ссылке относительного пути больше сегментов «..», чем в базовом URI-пути есть иерархические уровни. Обратите внимание, что синтаксис «..» не может использоваться для изменения компонента полномочий URI.

  "../../../g" = "http://a/g" "../../../../g" = "http://a/g" 

В приведенных выше примерах используется базовый URI http://a/b/c/d;p?q

http://a/b/c/d/../../../../g (второй пример) эквивалентен http://a/../g , который (согласно RFC ) должны быть разрешены как http://a/g .

Таким образом, парсер URI wgetfirefox на то пошло) корректен при удалении ведущих компонентов ../

  • Как заставить wget загружать рекурсивное объединение --прихват с --exclude-каталогами?
  • Инструменты для анализа автоматически генерируемых HTTP-индексов?
  • Продолжить загрузку, если временная метка не изменилась
  • Как объединить wget, сортировать и сохранять в новое имя файла?
  • Скажите wget, чтобы он не попадал в URL-адрес, соответствующий шаблону?
  • wget-файл, протоколирование вывода и отображение вывода в командной строке
  • В чем смысл «+» в строке выполнения wget?
  • Как загрузить много документов на терминал с сервера?
  • Будет ли wget -k по-прежнему преобразовывать ссылки в относительные пути, если wget остановлен преждевременно?
  • Загрузите весь сегодняшний стек с помощью wget
  • Как я могу использовать wget для загрузки больших файлов?
  • Linux и Unix - лучшая ОС в мире.