The Apple Geek

Чему ты научился сегодня?

Создание локальной копии сайта (wget)

Если по каким-то причинам нужно сделать локальную копию сайта (например, если нужно работать над материалами, но доступ в Интернет не предвидится), то обычно нет смысла искать дополнительный софт, тем более платный. Есть консольная программа wget (The non-interactive network downloader), которую можно поставить через MacPorts (sudo port install wget).

Синтаксис:

wget -v -m -k -K -E -w 1 --output-file=wget.log http://www.notsecretsite.com/
  • -v - показывать процесс списывания;
  • -m - сделать копию сайта (если говорить на нормальном русском языке, то мирроринг). Заменяет набор ключей “-r -N -l inf –no-remove-listing”.
  • -k - преобразовать ссылки, адаптируя их для локального просмотра. Например, если списывается /foo/doc.html со ссылкой на /bar/img.gif, то в локальной копии будет записано ../bar/img.gif.
  • -K - опция осталась для меня загадкой, вроде бы она должна использоваться совместно с ‘-k’ для определения, изменился ли файл на сервере.
  • -E - если тип списанного контента был ‘application/xhtml+xml’ или ‘text/html’, и его расширение не .html (грубо говоря, а реально не удовлетворяет шаблону ‘.[Hh][Tt][Mm][Ll]?’), то добавить .html к имени.
  • -w 1 - ждать 1 секунду перед следующим запросом на списывание файла. Можно поставить больше. Полезно, если сервер блокирует за частое списывание.
  • –output-file=wget.log - писать процесс работы в лог-файл.
  • Если же доступ к сайту даётся только после аутентификации по HTTP, то формат команды такой (добавляются –user и –password):

    wget -v -m -k -K -E -w 1 --user=user --password=secret --output-file=wget.log http://www.secretsite.com/
    

    Если же используется аутентификация через форму в html, да ещё с использованием сессионных coockies, то в принципе побороть это можно, но требует ухищрения. Опишу это отдельно, сейчас у меня нет под рукой такого сайта.


Comments