Mirror Site

Матеріал з Wiki.Zina
Версія від 14:27, 28 жовтня 2024, створена >Zina (→Конвертирование из win-1251 в UTF-8)
(різн.) ← Попередня версія | Поточна версія (різн.) | Новіша версія → (різн.)
Перейти до навігації Перейти до пошуку

HTTrack, Скачивание сайта, site downloader, зеркалирование сайта, зеркало сайта, site mirror, копия сайта.

Httrack

Установка

sudo apt install httrack webhttrack

Использование

  • webhttrack — выполняется в браузере
  • httrack — выполняется в командной строке
cd ~/websites

Скоростное скачивание

httrack http://ssi.test/ --path httrack --robots=0 --generate-errors=0 --urlhack --footer "" -%N0 --keep-alive --disable-security-limits --sockets=80 --connection-per-second=50 --max-rate=0 --timeout=30 --retries=10  --quiet --display
httrack http://www.appraiser.org.ua/ --path appraiser28 --robots=0 --generate-errors=0 --urlhack --footer "" -%N0 --keep-alive --disable-security-limits --sockets=80 --connection-per-second=50 --max-rate=0 --timeout=30 --retries=5 --quiet --display --advanced-progressinfo
httrack http://www.appraiser.org.ua/ -O appraiser28 -s0 -o -%u -%F  -%N0 -%k -%! -c80 -%c50 -A0 -T30 -R5 -q -%v -#p 

httrack http://www.obzor.com.ua/ --path obzor2 --robots=0 --generate-errors=0 --urlhack --footer "" -%N0 --keep-alive --disable-security-limits --sockets=80 --connection-per-second=50 --max-rate=0 --timeout=30 --retries=5  -*/*?page=* --quiet --display --advanced-progressinfo
httrack http://www.obzor.com.ua/ -O obzor2 -s0 -o -%u -%F  -%N0 -%k -%! -c80 -%c50 -A0 -T30 -R5 -*/*?page=* -q -%v -#p
httrack http://amoral.com.ua/ --path amoral2 --robots=0 --generate-errors=0 --urlhack --footer "" -%N0 --keep-alive --disable-security-limits --sockets=80 --connection-per-second=50 --max-rate=0 --timeout=30 --retries=5  --quiet --display
httrack http://krasnodon.org.ua/ --path krasnodon --robots=0 --generate-errors=0 --urlhack --footer "" -%N0 --keep-alive --disable-security-limits --sockets=80 --connection-per-second=50 --max-rate=0 --timeout=30 --retries=5  -*/*?page=* --quiet --display --advanced-progressinfo
httrack https://krasnodon.org.ua/ --path krasnodon3 --robots=0 --generate-errors=0 --urlhack --footer "" -%N0 --keep-alive --disable-security-limits --sockets=80 --connection-per-second=50 --max-rate=0 --timeout=30 --retries=10  --quiet --display
httrack https://www.assistantasad.org.ua/ --path assistantasad --robots=0 --generate-errors=0 --urlhack --footer "" -%N0 --keep-alive --disable-security-limits --sockets=80 --connection-per-second=50 --max-rate=0 --timeout=30 --retries=10  --quiet --display
httrack http://www.perspectiva-corp.com/ --path perspectiva --robots=0 --generate-errors=0 --urlhack --footer "" -%N0 --keep-alive --disable-security-limits --sockets=80 --connection-per-second=50 --max-rate=0 --timeout=30 --retries=10  --quiet --display
httrack http://voroshilov.org.ua/ --path voroshilov --robots=0 --generate-errors=0 --urlhack --footer "" -%N0 --keep-alive --disable-security-limits --sockets=80 --connection-per-second=50 --max-rate=0 --timeout=30 --retries=10  --quiet --display
httrack https://donest.zina.design/ --path donest --robots=0 --generate-errors=0 --urlhack --footer "" -%N0 --keep-alive --disable-security-limits --sockets=80 --connection-per-second=50 --max-rate=0 --timeout=30 --retries=10  --quiet --display
httrack https://f-krup.zina.design/ --path f-krup --robots=0 --generate-errors=0 --urlhack --footer "" -%N0 --keep-alive --disable-security-limits --sockets=80 --connection-per-second=50 --max-rate=0 --timeout=30 --retries=10  --quiet --display
httrack https://favoritecards.zina.design/ --path favoritecards --robots=0 --generate-errors=0 --urlhack --footer "" -%N0 --keep-alive --disable-security-limits --sockets=80 --connection-per-second=50 --max-rate=0 --timeout=30 --retries=10  --quiet --display
httrack http://192.168.33.10/ --path vagrant --robots=0 --generate-errors=0 --urlhack --footer "" -%N0 --keep-alive --disable-security-limits --sockets=80 --connection-per-second=50 --max-rate=0 --timeout=30 --retries=10  --quiet --display

Безопасное скачивание

Для более щадящего режима (медленнее, но меньше нагрузка на хостинг) изменить параметры:

--sockets=20 --connection-per-second=25

Для наиболее безопасного скачивания убрать параметры:

--disable-security-limits --sockets=80 --connection-per-second=50 --max-rate=0 

Основные параметры

Минимальный набор параметров:

  • -O, --path — папка, куда сохранять сайт, лог-файлы и кэш
  • -s0, --robots=0 — игнорировать указания robots.txt и мета-robots-тегов (0=игнорировать, 1=частично учитывать, 2=всегда следовать правилам (параметр по умолчанию), 3=всегда следовать даже строгим правилам)
  • -o0, --generate-errors 0 — не создавать файлы для 404 страниц
  • -%u, --urlhack — использовать все возможные способы, чтобы избежать создания дубликатов страниц (двойные слэши //, www.foo.com==foo.com и т.д.)
  • -%F "", --footer "" — не вставлять внизу HTML строку: -%F "Mirrored [from host %s [file %s [at %s]]]"

Параметры для максимальной скорости скачивания:

  • -%N0 — delayed type check, don t make any link test but wait for files download to start instead (experimental) (%N0 don t use, %N1 use for unknown extensions, * %N2 always use)
  • -%k, --keep-alive — use keep−alive if possible, greately reducing latency for small files and test requests (%k0 don t use)
  • -%!, --disable-security-limits — bypass built−in security limits aimed to avoid bandwidth abuses (bandwidth, simultaneous connections)
  • -c80, --sockets=80 — количество одновременных соединений (по умолчанию c8)
  • -%c50, --connection-per-second=50 — максимальное количество соединений в секунду (по умолчанию %c10)
  • -A0, --max-rate=0 — maximum transfer rate in bytes/seconds (1000=1KB/s max)

Поведение, если возникают проблемы:

  • -T5, --timeout=5 — сколько секунд выжидать после того, как обнаружится, что ссылка не отвечает
  • -R3, --retries=3 — сколько повторных попыток делать, если возникает таймаут или некритичная ошибка (по умолчанию R1)

Исключить URL'ы типа http://www.obzor.com.ua/news/armiya-novorossii38076?page=1480:

-*/*?page=*

Параметры отображения процесса скачивания:

  • -q, --quiet — без вопросов (тихий режим)
  • -%v, --display — показывать на экране имена скачиваемых файлов − %v1 (по умолчанию) упрощенная версия, %v2 с полной анимации
  • -#p, --advanced-progressinfo — показывать простой интерфейс прогресса скачивания

Прочие параметры

Параметры, которые можно не указывать, потому что они идут по умолчанию:

  • -%P, --extended-parsing[=N] — extended parsing, attempt to parse all links, even in unknown tags or Javascript (%P0 don't use)
  • -D — can only go down into subdirs
  • -a — stay on the same address
  • -K0, --keep-links[=N] — конвертировать ссылки в относительные (K0 относительные ссылки, K абсолютные/оригинальные ссылки, K3 absolute URI links)

Убраны параметры, потому что и без них норм работает:

 +*.png +*.gif +*.jpg +*.jpeg +*.svg +*.css +*.js +*.ppt +*.doc +*.docx +*.xls +*.xlsx +*.zip +*.rar \
 -ad.doubleclick.net/*
  • -F — user-agent field sent in HTTP headers (-F "user-agent name") (--user-agent <param>)
-F "Mozilla/4.5 (compatible; HTTrack 3.0x; Windows 98)" \
-F "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36"
-F "Mozilla/5.0 (Windows NT 10.0)" 
  • -%i — make a top index for a project folder (по умолчанию %i0 don t make) (--build-top-index)
  • -x, --replace-external — replace external html links by error pages
  • -n, --near — get non-html files 'near' an html file (ex: an image located outside)
    • По умолчанию: -%P — extended parsing, attempt to parse all links, even in unknown tags or Javascript (%P0 don't use) (--extended-parsing[=N])
  • -%c1 — maximum number of connections/seconds (по умолчанию %c10)
  • -%B — tolerant requests (accept bogus responses on some servers, but not standard!) (--tolerant)

Основные режимы работы

  • -w, --mirror — make a mirror of site(s) (default)
  • -iC2, --update — update a mirror, without confirmation
    • -i — continue an interrupted mirror using the cache
    • -C — create/use a cache for updates and retries (C0 no cache, C1 cache is prioritary, C2 test update before)

Параметры при обновлении:

  • -%s — update hacks: various hacks to limit re−transfers when updating (identical size, bogus response..) (--updatehack)

Установка корректных прав на файлы и папки

sudo chmod -R 664 * && find * -type d -exec chmod 755 {} \;

Масовое переименование расширений файлов

Массовое рекурсивное переименование файлов с расширением .shtml в .html:

— тестирование:

find . -name "*.shtml" | rename -v -n "s/\.shtml$/.html/"

— выполнение переименования:

find . -name "*.shtml" | rename -v "s/\.shtml$/.html/"

Дополнительно: заменить во всех .html файлах упоминание .shtml на .html:

find . -name "*.html" -exec sh -c 'sed -E "s/\.shtml/\.html/g" "{}" > tmp && mv tmp "{}"' \;

Конвертирование из win-1251 в UTF-8

Кнвертировать все файлы .html во вложенных папках:

find . -type f -name '*.shtml' | while read i; do iconv -f WINDOWS-1251 -t UTF-8 "$i" > tmp; mv tmp "$i"; done

Заменить в файлах .html строку указанием кодировки windows-1251 на UTF-8:

find . -type f -name "*.html" -exec sh -c 'sed "s/windows-1251/UTF-8/g" "{}" > tmp && mv tmp "{}"' \;

Объединенная команда — конвертирует все .html файлы из windows-1251 в utf-8 и заменяет упоминание кодировки в тексте:

find . -type f -name "*.html" -exec sh -c 'iconv -f WINDOWS-1251 -t UTF-8 "{}" > tmp && sed "s/windows-1251/UTF-8/g" tmp > "{}" && rm tmp' \;

Удаление комментариев HTTrack

Убрать <!-- Added by HTTrack -->:

find . -type f -name "*.html" -exec sed -i 's/<!-- Added by HTTrack -->//g' {} \;

Убрать <!-- /Added by HTTrack -->:

find . -type f -name "*.html" -exec sed -i 's/<!-- \/Added by HTTrack -->//g' {} \;

Убрать <!-- Created by HTTrack Website Copier/3.49-5 [XR&CO'2014] -->:

find . -type f -name "*.html" -exec sed -i 's/<!-- Created by HTTrack Website Copier\/3.49-5 \[XR\&CO'\''2014\] -->//g' {} \;

Удаление счетчиков

find . -type f -name "*.html" -exec sed -i '/<!--bigmir)net TOP 100-->/,/<!--bigmir)net TOP 100-->/d' {} \;
find . -type f -name "*.html" -exec sed -i '/<!--LiveInternet counter-->/,/<!--\/LiveInternet-->/d' {} \;

Обработка ссылок в тексте

Если в помощью редиректов Nginx будет настроено скрытие расширений .html, то в тексте всех HTML файлов нужно заменить:

— убрать .html:

find . -name "*.html" -exec sh -c 'sed -E "s/(href=\"\S+)\.html\"/\1\"/g" "{}" > tmp && mv tmp "{}"' \;
find . -name "*.html" -exec sh -c 'perl -pi -e "s/(href=\"\S+)\.html\"/\1\"/g" "{}"' \;
Разница в скорости выполнения между sed+mv и perl незначительна - на около 6 тыс файлов: 9m42.449s для sed и 9m44.052s для perl.

— убрать закрывающий слеш /:

find . -name "*.html" -exec sh -c 'sed -E "s/(href=\"\S+)\/\"/\1\"/g" "{}" > tmp && mv tmp "{}"' \;
find . -name "*.html" -exec sh -c 'perl -pi -e "s/(href=\"\S+)\/\"/\1\"/g" "{}"' \;

Следующий код некорректный, потому что в некоторых директориях ссылка без слеша - это ссылка на файлы в этой же директории, и добавление слеша ломает ссылки.

— добавить открывающий слеш, если ссылка начинается не со слеша или http (делается с помощью не sed, а perl, потому что sed не умеет look-ahead): (протестировать избегание двух точек в начале (?!\.\.))

find . -name "*.html" -exec sh -c 'perl -pi -e "s/href=\"(?!http)(?!\/)(?!\.\.)(\S+)\"/href=\"\/\1\"/g" "{}"' \;

Копирование только .html файлов

Копирование только *.html файлов с сохранением структуры директорий:

find . -name "*.html" | cpio -updm /path/to/destdir

См. также