Skip to content

Все для WordPress, веб-розробки — і не тільки

📥 Як завантажити цілий сайт через Wget на Windows

📥 Як завантажити цілий сайт через Wget на Windows

Безкоштовна утиліта командного рядка Wget вміє дзеркалити сайти, викачувати кожну сторінку, кожне зображення, кожен CSS-файл і складати в папку на вашому диску. Звучить як магія, але це чиста інженерія: рекурсивний обхід посилань, конвертація шляхів у відносні та дбайливе збереження структури. Після такого архіву сайт відкривається локально як живий, просто клацаєте по будь-якому .html-файлу.

Проблема в тому, що нормальних гайдів під Windows майже немає. Більшість мануалів написані під Unix, а пересічному користувачеві Windows потрібен готовий .exe, зрозумілі команди та захист від типових граблів на кшталт нескінченної рекурсії або битих посилань. Цю прогалину ми й закриємо.

💡 Швидкий огляд:

  • Завантажте Wget для Windows і пропишіть шлях до утиліти в системний PATH
  • Відкрийте командний рядок у папці призначення та виконайте команду дзеркалювання
  • Після завантаження виправте биті посилання та шляхи через grepWin, архів готовий до перегляду
  • Якщо рекурсія не потрібна, використовуйте режим із заздалегідь підготовленим списком URL

Інтернет не вічний. Сайти закриваються, змінюють власників, проходять редизайн і втрачають старий контент. Спільнота дата-хоардерів на Reddit давно перетворила архівування на культуру, і не дарма. Ви не можете передбачити, коли улюблений блог зникне або цінна документація поїде за пейвол, але можете зберегти її в поточному вигляді.

Сценарії, від очевидних до несподіваних. Вам належить поїздка в місце без інтернету, а під рукою потрібен робочий зліпок інформаційного сайту. Або ви колекціонуєте дизайнерські епохи, вчорашній веб з його табличною версткою та кислотними кнопками — це вже історія. Навіть власний сайт має сенс періодично дзеркалити: це не бекап у класичному сенсі (базу даних не відновите), але статичний знімок, який переживе будь-який крах хостингу.

Одне важливе попередження: будьте обережні з тим, що завантажуєте. Авторське право та конфіденційність ніхто не скасовував, приватне використання збереженої копії зазвичай законне, але публікація чужого контенту без дозволу може створити проблеми.

Як Wget обходить сайт: механіка процесу

Wget стартує з указаної вами URL-адреси та рекурсивно йде за кожним внутрішнім посиланням, теоретично до нескінченної глибини. Правильно налаштований, він не вирветься у відкритий інтернет і не почне качати Google: опція --mirror у парі з --reject-regex тримає обхід у межах цільового домену. Усі зовнішні посилання залишаються недоторканими, просто текст з оригінальною URL-адресою.

По дорозі Wget підбирає все: HTML-сторінки, таблиці стилів, скрипти, зображення, шрифти. Потім конвертує внутрішні посилання у відносні, завдяки цьому архів відкривається локально і навігація працює як на живому сайті. Зовнішні посилання при цьому не чіпаються і продовжують вести в інтернет (якщо він у вас є в момент перегляду).

Архів, а не резервна копія. Відновити сайт із такої статичної копії не можна, тому що немає бази даних і серверної логіки. Wget працює як пошуковий робот: він знаходить лише сторінки, на які хтось послався. Принагідно ви побачите, наскільки важливі внутрішні посилання для зв'язності контенту, сторінки-сироти без вхідних лінків до архіву не потраплять.

Хоча Wget не прив'язаний до якоїсь конкретної CMS, із WordPress-сайтами він працює особливо добре. Причина проста: стандартні віджети на кшталт хмари тегів і помісячного архіву створюють щільну сітку внутрішніх посилань, якою бот проходить як по маслу.

Встановлення Wget на Windows

Світ Wget історично обертається навколо Unix, і Windows-користувач тут гість. Якщо ви підете на офіційний сайт GNU і завантажите вихідні коди, отримаєте паку .c-файлів, а не готову програму. Вам потрібен готовий бінарник:

  • Зайдіть на eternallybored.org/misc/wget, неофіційний, але перевірений роками репозиторій збірок Wget для Windows (актуальна версія 1.21.4)
  • Завантажте zip-архів останньої версії та розпакуйте в окрему папку. Встановлення не потрібне — це portable-утиліта

Якщо ви двічі клацнете по wget.exe, майне вікно командного рядка і відразу закриється. Wget, консольна програма, їй потрібен відкритий термінал у папці призначення. А щоб не копіювати .exe в кожну папку з майбутніми архівами, пропишіть Wget у системний PATH:

  • Натисніть Windows + R, вставте та виконайте:
1 "C:\Windows\system32\rundll32.exe" sysdm.cpl,EditEnvironmentVariables
  • У секції Змінні середовища користувача знайдіть змінну Path, натисніть Змінити...
  • Натисніть Створити та вкажіть повний шлях до папки з wget.exe
  • Закрийте всі діалоги через ОК

Перевірка: знову Windows + Rcmd /k "wget -V", ви маєте побачити версію Wget, а не повідомлення про те, що команду не розпізнано.

Вікно командного рядка з інформацією про версію Wget

Ключові опції Wget: докладний розбір

Більшість опцій мають короткі однолітерні аналоги, але довгі імена осмисленіші й читаються без шпаргалки. Я відібрав налаштування, перевірені на практиці, замість читання 181-сторінкового посібника GNU Wget ви отримуєте вичавку з поясненням «навіщо» для кожної.

Основні опції

--mirror, вмикає нескінченну рекурсію. По суті це набір інших опцій, об’єднаних під одним прапорцем. Без нього Wget завантажить лише вказану сторінку, а не весь сайт. Саме --mirror уможливлює дзеркалювання.

--page-requisites, завантажує всі пов’язані ресурси: CSS, JavaScript, зображення, шрифти. Без цієї опції ваш архів матиме вигляд голого HTML-простирадла без стилів і картинок.

--convert-links, після завершення завантаження переписує посилання в HTML-файлах так, щоб вони працювали локально. Абсолютні URL замінюються на відносні шляхи. Це те, що дає змогу відкрити index.html з диска й ходити сторінками, як живим сайтом.

--adjust-extension, дописує розширення файлам, які надійшли без них. Сучасні сайти часто віддають сторінки без .html у кінці (людино-читані URL), і без цієї опції браузер не зрозуміє, що перед ним HTML-документ. Є нюанс: якщо сервер стискає контент через gzip, Wget може помилково дати файлу розширення .gz. Від цього страхує наступна опція.

--compression=auto, обробляє gzip-стиснення на льоту. Без неї SVG-логотип ризикує зберегтися як logo.svg.gz і стати марним під час локального перегляду. Опція з’явилася не в усіх збірках, користувачі Unix іноді стикаються з її відсутністю. У Windows-збірці з eternallybored.org вона є.

--reject-regex "/search|/rss", забороняє обхід URL, що містять указані слова. Сторінки пошуку та RSS-стрічки породжують нескінченні ланцюжки параметрів, які забивають файлову систему іменами завдовжки в кілька екранів. Регулярний вираз тут, базовий POSIX-синтаксис, не full-PCRE. Будьте уважні: /search відсіче не лише пошукове сміття, а й легітимну статтю з URL на кшталт yoursite.com/search-for-extraterrestrial-life. За такої колізії конкретизуйте шаблон.

Додаткові опції

--no-if-modified-since, вимикає перевірку заголовка If-Modified-Since. Я вмикаю цей прапорець, тільки коли сервер явно скаржиться в логах. Якщо ви не плануєте повторний прогін у ту саму папку для підхоплення змін, опція не критична.

--no-check-certificate, пропускає перевірку SSL-сертифікатів. Під час дзеркалювання ви не вводите паролі й не передаєте конфіденційні дані, тому сувора перевірка сертифіката надлишкова. Прапорець економить нерви на сайтах із простроченим або самопідписаним сертифікатом.

--user-agent, підміняє User-Agent браузера. Деякі сервери детектять Wget і блокують запити. Спуфінг під звичайний Chrome вирішує проблему:

1--user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36"

Якщо блокування відбувається за IP, знадобиться VPN і, можливо, розподіл завантаження між кількома машинами. У цьому разі також знадобляться опції --wait і --random-wait для сповільнення темпу запитів.

--restrict-file-names=windows, обмежує символи в іменах файлів безпечним для Windows набором. В Unix спеціальні символи в іменах дозволені, й архів, завантажений на Linux-машині, може виявитися нечитабельним на Windows. Якщо ви працюєте в Windows, прапорець застосовується автоматично; якщо завантажуєте під Unix, але переглядати будете на Windows, укажіть явно.

--backup-converted, зберігає оригінальну копію кожного файлу, в який Wget вносив зміни під час конвертації посилань. Подвоює розмір архіву. Я не використовую, але згадую на випадок, якщо вам критичний посекундний бекап кожної правки.

Відкриваємо командний рядок у потрібній папці

Wget запускається з термінала, і термінал має дивитися в ту папку, куди ви плануєте скласти архів. Способів кілька, від стандартного до просунутих:

  • Windows + Rcmd → Enter, потім cd /d C:\путь\к\архиву (прапорець /d дає змогу перемикатися між дисками)
  • Якщо шлях містить пробіли, оберніть його в лапки: cd /d "C:\My Archive"

Швидше, одним рядком: Windows + Rcmd /k "cd /d C:\путь\к\архиву". Прапорець /k залишає вікно відкритим після виконання команди.

Якщо ви користуєтеся Total Commander: Команди → Запустити командну оболонку відкриває термінал одразу в поточній папці. Для Провідника є твік реєстру, що додає пункт «Відкрити вікно команд тут» у контекстне меню.

Запускаємо завантаження: повна команда

Збираємо все разом. Ось команда, яку я використовую для дзеркалювання середньостатистичного сайту:

1wget --mirror --page-requisites --convert-links --adjust-extension --compression=auto --reject-regex "/search|/rss" --no-if-modified-since --no-check-certificate --user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36" https://example.com

Те саме можна записати короткими прапорцями: wget -mkp -E --compression=auto -R "/search|/rss" .... Але довгі імена роблять команду самодокументованою. Через місяць ви відкриєте свій .bat-файл і одразу зрозумієте, що кожна опція робить.

Підставте замість https://example.com реальний URL цільового сайту й натисніть Enter. Процес може тривати від кількох хвилин до кількох годин, залежить від розміру сайту й обмежень сервера.

Постобробка: grepWin і типові правки

Після завантаження архів майже завжди потребує доведення. Утиліта grepWin, швейцарський ніж для пакетного пошуку та заміни в текстових файлах під Windows. Ось кілька типових сценаріїв:

  • Видалення сміттєвих тегів у HTML. Деякі рушії генерують порожні теги <source>, що заважають рендерингу. У grepWin оберіть пошук за регулярним виразом <source media=".*">, вкажіть маску *.html і замініть на порожній рядок.

  • Виправлення шляхів до ресурсів. Якщо якісь шляхи залишилися абсолютними, grepWin знайде їх за патерном на кшталт src="https://example.com/ і замінить на локальний еквівалент.

Вікно утиліти grepWin з налаштуваннями пошуку та заміни

Це лише затравка, кожен сайт зі своїми сюрпризами. Сильні сторони grepWin: миттєвий попередній перегляд перед заміною, робота з папками рекурсивно та підтримка регулярних виразів. Але коли обсяг правок виходить за межі «знайти й замінити», Unix-інструментарій на зразок sed і grep дає значно більше гнучкості. Windows-версії доступні через WSL або Cygwin.

Альтернатива: завантаження за списком URL без рекурсії

Рекурсивний обхід підходить не завжди. Якщо сайт величезний, а вам потрібна лише конкретна добірка сторінок, простіше підготувати список URL і згодувати його Wget через --input-file:

1wget --input-file=links.txt --page-requisites --convert-links --adjust-extension --compression=auto --no-if-modified-since --no-check-certificate --user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36"

Зверніть увагу: --mirror і --reject-regex прибрано, рекурсія не потрібна, а список URL ви контролюєте самостійно.

Як зібрати такий список? Один зі способів, розширений пошук Google: запит site:yoursite.com "ключевая фраза" поверне проіндексовані сторінки за темою. Налаштуйте видачу на 100 результатів, озбройтеся розширенням Copy Links для Chrome і копіюйте URL пачками у links.txt.

Відео: дзеркалювання сайту за 5 хвилин

Щоб побачити весь процес наживо, від встановлення до готового архіву, перегляньте цей скринкаст:

Автор проходить шлях з нуля: завантаження Wget, налаштування опцій, запуск команди та відкриття результату в браузері. Рекомендую перед першим власним прогоном, 7 хвилин екранного часу зекономлять годину налагодження.

⁉️🤔 Часті запитання

Чи можна відновити сайт із Wget-архіву?

Wget-архів — це статичний зліпок: HTML, CSS, JS та медіафайли. Ні бази даних, ні серверної логіки в ньому немає. Ви не зможете залити таку копію на хостинг і оживити WordPress із коментарями та адмінкою. Це інструмент збереження контенту, а не резервного копіювання. Для повноцінного бекапу WordPress використовуйте плагіни на кшталт UpdraftPlus або Duplicator, вони зберігають і файли, і базу даних.

Wget завантажує забагато зайвого. Як обмежити?

Комбінація --reject-regex (фільтр URL за шаблоном) і --reject (фільтр за розширеннями файлів) вирішує проблему. Наприклад, додавши --reject=jpg,png,gif, ви відмовитеся від усіх зображень. Або --reject-regex "/tag/|/category/|/page/" відсіче архіви тегів, категорій та пагінацію. Головне, тестуйте на невеликій підмножині сторінок перед повним прогоном.

Сервер заблокував мою IP-адресу після початку завантаження. Що робити?

Wget можуть детектувати за User-Agent або темпом запитів. Три рівні захисту: спуфінг User-Agent через --user-agent (я показав вище), сповільнення через --wait=1 --random-wait (пауза 1 секунда плюс випадкова добавка) і зміна IP через VPN. Для великих сайтів можна розбити завантаження: підготувати кілька списків URL і запустити Wget паралельно з різних машин або VPN-точок.

Чим Wget кращий за браузерні розширення для збереження сторінок?

Розширення на кшталт SingleFile зберігають одну сторінку. Wget дзеркалить сайт цілком, із переходами, пагінацією та всіма внутрішніми посиланнями. Для блогу з 500 статей браузерне розширення потребуватиме 500 ручних кліків. Wget робить це однією командою. Крім того, браузерне розширення не конвертує посилання для локальної навігації, ви отримаєте 500 ізольованих файлів без зв’язку між собою.

Архів важить гігабайти. Як стиснути та зберігати?

Папка з тисяч дрібних файлів незручна для перенесення, бекапу та антивірусної перевірки. Я пакую такі архіви в RAR методом «Store» або «Fastest», швидкість важливіша за ступінь стиснення, бо HTML і медіа вже стиснуті. Обов’язково додаю запис відновлення (recovery record) — це рятує при битих секторах на диску або помилках передавання. Результат: один файл, який копіюється за секунди й не розсипається під час зберігання.

Завантажувати чи не завантажувати: коли Wget вартий зусиль

Wget, не на кожен день. Це інструмент для конкретного завдання: отримати повну статичну копію сайту, який вам дорогий або корисний. Коли є ризик, що ресурс зникне, діставайте Wget. Коли попереду робота в офлайні, діставайте Wget. Коли потрібно зберегти «цифрову скам’янілість» епохи Geocities, тим паче.

Для разових сторінок вистачить браузерного розширення. Для повноцінного бекапу WordPress беріть плагін резервного копіювання. Але коли потрібен саме автономний навігабельний архів цілого сайту, альтернатив у Wget практично немає, і тепер ви знаєте, як запустити його на Windows без зайвого клопоту.

Спробуйте на невеликому сайті знайомого або на власному блозі. Перший прогін багато що прояснить, а другий уже піде як по рейках. І не забудьте про запис відновлення в архіві, нехай ваша колекція переживе будь-який жорсткий диск.