LINUX.ORG.RU

Выкачивание веб-сайтов

 , ,


0

2

Всем здравствуйте!

Недавно узнал про формат WARC, используемый для хранения резервных копий веб-сайтов (к примеру, его использует Wayback Machine) и про софт для «записи» и «воспроизведения» веб-сайта. Для «воспроизведения» нашёл PyWB (ставится через pip), он поднимает локальный веб-сервер, на котором можно посмотреть сайты из WARC-файлов, входящих в коллекцию (коллекция собирается перед запуском сервера). Тут у меня вопросов нет, есть вопросы по «записи». Нашёл три способа:

  • Сайт «Webrecorder». Можно указать ссылку, дождаться загрузки содержимого, и скачать файл.
  • Warcprox. Прокси-сервер, сохраняющий все посещённые страницы. Проблема в том, что HTTPS страницы сохраняются через MITM с сгенерированным сертификатом. Да и можно просто забыть посетить некоторые страницы. Годится для сохранения нескольких страниц.
  • wget. Умеет сохранять в WARC. Удобно, а в Tails его можно даже через Tor пустить, чтобы иметь возможность сохранить заблокированный сайт. Но возникла проблема на сайте TV Tropes – на сохранённой странице не показывался контент «под катом», хотя при просмотре той же страницы на Wayback Machine всё работало (то есть дело, скорее всего, не в WARC). Можно ли как-то исправить эту проблему? Или поискать другой краулер?

Если кто пользуется этим, прошу помочь советом.

Удобно, а в Tails его можно даже через Tor пустить, чтобы иметь возможность сохранить заблокированный сайт.

Везде можно, если прокси прописать.

Radjah ★★★★★ ()

Какой смысл выкачивать сайты в 2019 году?

Лет 20 назад, когда сайт был набором статических страниц и файлов - был смысл, а что можно выкачать сегодня?

Alve ★★★★★ ()

1. Ставишь в виртуалку Win7, туда IE9>IE10>IE11 (именно в таком порядке, иначе не поставится, ссылки еще поискать придется, или просто включить автообновление). Или Win10. Потом Offline Explorer.

2. Chromium > MHT (нужно включить во флагах) вручную.

Да и можно просто забыть посетить некоторые страницы

Можно, но и автоматика может скачать не всё из-за ошибок сервера. Особенно, когда вместо страницы выдается html с ошибкой.

Мне вот надо блоги skyrock скачать, а то на одном уже запретили доступ. Проблема в том, что полноразмерные фотки выдаются через html ссылки, а если их разрешить, то качалка рискует скачать вообще ВСЕ блоги. Еще надо, чтобы YouTube превью корректно сохранились, превью локально, а ссылка вела на сервер ютуба. Такое даже Offline Explorer не осиливает (или надо ковыряться). Так что только вручную остается, в Chrom*/MHT.

anonymous ()
Ответ на: комментарий от anonymous

Хреновая видимо качалка кстати, в скрапи такое делается в 2 строки.

anonymous ()
Ответ на: комментарий от anonymous

Ставишь в виртуалку Win7, туда IE9>IE10>IE11 (именно в таком порядке, иначе не поставится, ссылки еще поискать придется, или просто включить автообновление). Или Win10. Потом Offline Explorer.

Посмотрел, Offline Explorer – дорогая проприетарная программа. Зачем она? Чем она лучше wget?

Chromium > MHT

Почему именно MHT? Чем оно лучше WARC?

Amaryllis ()
Ответ на: комментарий от Andreezy

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

Amaryllis ()
Ответ на: комментарий от anonymous
  1. Ставишь в виртуалку Win7, туда IE9>IE10>IE11 (именно в таком порядке, иначе не поставится, ссылки еще поискать придется, или просто включить автообновление). Или Win10. Потом Offline Explorer.

Зачем? Есть же HTTrack

atsym ★★★★★ ()
Последнее исправление: atsym (всего исправлений: 1)
Ответ на: комментарий от atsym

Я могу понять как он будет работать со статичными страницами, но что он будет делать с AJAX элементами? Он будут в процессе работы подгружаться динамически?

Andreezy ()

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

Rost ★★★★★ ()
Ответ на: комментарий от anonymous

Ну, совсем уж вручную через браузер может быть довольно утомительно. Можно немного автоматизировать процесс. Например, мне понадобилось сохранить один раздел форума (приватного) со всеми его топиками в виде простого html (картинки ссылаются на оригинальные сервера, css тоже, но его можно скачать и прописать отдельно).
1. В pages.txt собираю все URL pages

https://example.com/forum/page/1/
https://example.com/forum/page/2/
...
https://example.com/forum/page/200/
чтобы не писать все номера вручную, оптимизировать можно в Double Commander через список файлов, если включить в настройках естественную нумерацию.
2. aria2 скачивает pages (предварительно в Firefox надо залогиниться, а потом его закрыть)
aria2c -i pages.txt -U 'Mozilla/5.0 Firefox/60.0' --load-cookies='~/.mozilla/firefox/ID.default/cookies.sqlite' -j 2 -s 2 -x 2 -m 20 --retry-wait=3 --max-download-limit=200K --max-overall-download-limit=200K
3. Склеиваю все html в один
cat 001.html 002.html... 200.html > index.html
4. Lynx получает список ссылок на topics (вида https://example.com/forum/topic-1) в файл list.txt. Точнее, собирает все ссылки.
lynx -dump -nonumbers -listonly index.html > list.txt
Обязательно нужно потом убрать две строки Visible links и Hidden links с пробелами
5. В LibreOffice надо вычленить только все ссылки на topics. В моем случае (чтобы не было повторов) это можно сделать по ключевому слову getLastComment.
Открываю list.txt в LO. Кодировка UTF-8. Разделение только табуляция и ничего больше (никаких кавычек, двоеточий). Сразу надо создать Лист2, но вернуться в Лист1. Стандартный фильтр: «диапазон не содержит подписи столбцов». Столбец A содержит getLastComment. Копировать результат в Лист2.$A$1
Удаляю Лист1. Делаю экспорт Лист2 в topics.txt. Открываю его в текстовом редакторе, сверяю количество тем по нумерации строк (должно совпадать по подсчетам, учитывая количество тем на страницу и количество страниц +-2). Убираю getLastComment автозаменой.
6. aria2 качает уже topics
aria2c -i topics.txt -U 'Mozilla/5.0 Firefox/60.0' --load-cookies='~/.mozilla/firefox/ID.default/cookies.sqlite' -j 2 -s 2 -x 2 -m 20 --retry-wait=3 --max-download-limit=200K --max-overall-download-limit=200K
7. pages htmls можно удалить, а topics (aria2 не прописывает title в имя файла) вставить в каком-нибудь html редакторе в один html файл (общий). Линкифицировать, в общем. Из текстового редактора сделать это будет проблематично, так как надо прописывать еще title. И к тому же нужно уменьшить расстояние между ссылками (частая проблема). При желании можно переименовать файлы по его title. Или, например, вытащить из html файлов все ссылки на youtube и imgur. Практические реализации пункта 7 мной еще не освоены.
И так надо проделать с каждым интересующим разделом. Довольно геморно, но вручную еще дольше, а спец. качалки еще попробуй настрой.

Надо следить в терминале, чтобы у aria2 не было ошибок (сервер может банить) и перекачать недостающее. Этот метод сохраняет только простые html, все их ресурсы ссылаются на оригинальные сервера (обычно этого достаточно, разве что кроме css).

anonymous ()
Ответ на: комментарий от anonymous

надо блоги skyrock скачать

Надо бы зарегиться. Может в настройках можно увеличить количество сообщений на страницу, это облегчит процесс. Кто придумал эти разбиения...

anonymous ()

Я вот еще думаю, если форум приватный, то там кучу URL надо заблокировать от качалки, а то она понаделает делов: жалобы, лайки, благодарности, редактирование, удаление, выход, ссылка профиля-его настройки, follow, ответить, mark read, send pm и прочее.
Offline Explorer умеет только игнорировать выход и удаление.

anonymous ()
Ответ на: комментарий от anonymous

И никто меня не поправил, что вместо пунктов 4-5 достаточно

lynx -dump -nonumbers -listonly index.html | grep getLastComment > list.txt
А если файл уже есть, то
cat list.txt | grep getLastComment > list2.txt
В терминале надо выставить буфер 100000, чтобы все строки влезли. aria2 умеет писать в лог (-l log.txt), но у него почему то всегда debug level и эта настройка не меняется, а в терминале ошибки красным цветом сразу видно. LO падучий. У топиков еще бывают свои page, их можно тоже учесть.

anonymous ()

Старый firefox с поддержкой maff, только будет ли поддержка того html в скором будущем.

Где-то мелькала инфа про плагин для wireshark, не могу найти.

Был в античности кэш-прокси smartcache с возможностью ro архивов, но это до https.

sr11 ()
Ответ на: комментарий от anonymous

Можно сохранять не через краулер, а, например, через тот же Warcprox.

Amaryllis ()
Ответ на: комментарий от sr11

Мне понравилось расширение UnMHT для PaleMoon/SeaMonkey https://addons.thunderbird.net/ru/seamonkey/addon/unmht/ Удобно, что есть массовая загрузка всех открытых вкладок. html выкачивается заново, а картинки и прочее из кэша, если есть там. Но ресурсы (например, картинки), прописанные в css не сохраняет, это давняя проблема лисы (в отличии от престооперы).

Я пользуюсь PaleMoon+Tor+UnMHT. А пользователи оригинального Tor браузера могли себе это позволить только на 52 ветке, такие дела.

Nakita-Markov ()
11 октября 2019 г.
Ответ на: комментарий от anonymous

Чёт больше нет MHT

В Chromium >=75 для поддержки сохранения в MHT добавить в ярлык запуска --save-page-as-mhtml

Сохраняйте кэш пакетного менеджера. Старые версии хромых, если понадобится, днем с огнем не сыщешь, а собирать долго.

anonymous ()
7 марта 2020 г.

А юзкейс сего занятия какой?

Riniko ★★ ()
Ответ на: комментарий от Alve

Лет 20 назад, когда сайт был набором статических страниц и файлов - был смысл, а что можно выкачать сегодня?

Тут недавно доки по Qt заблокировали. Не слышал?

anonymous ()
Ответ на: комментарий от anonymous

доки по Qt заблокировали

Это те, которые вместе с исходниками идут и доступны по f1 в qt creator?

Кул стори, бро.

aol ★★★★★ ()
Ответ на: комментарий от aol

Это те, которые вместе с исходниками идут и доступны по f1 в qt creator?

Кул стори, бро.

Не сообразить о чём было сообщение, да? Дак я разжую для прикормленной калеки, не проблема. Сообщение о том, что нужно выкачивать и хранить локально доки/вики/код по той простой причине, что есть сомнительные органы типо РКН, сомнительные авторы у ПО/Источника_информации, которые «удаляют», продолжительное отсутствии интернета, а ещё есть люди увлекающиеся собирательством как хобби, и так далее. Вопрос актуальности темы не подлежит сомнению, теперь это очевидно?

Отличный маркер прикормыша такой, что «чего я осилил — осилят все», что «у меня работает — работаете у всех». Про калеку, не способность перейти от частного к общему в контексте, это дефект. Держу в курсе.

anonymous ()

Есть способ автоматизировано сохранить форум, который доступен только с авторизацией + 2FA? Либо подставить куки. Форум на IPS Community Suite.

dnb ★★★★ ()

В этом мире есть два нормальных способа решения этого вопроса.

  1. уже упомянутый offline explorer под виртуальной форточкой - для сайтов целиком

  2. расширитель огнелиса save_page_we - для отдельных страниц, нормальное сохранение всякого заскриптованного Г…а в 1 единственный html файл, как и должно быть

  3. смотри пункты 1) и 2)

  4. все остальное от лукавого

explorer ()
Ответ на: комментарий от anonymous

Оно разве будет работать, если сайт написан на JS вдоль и поперёк?

gedisdone ★★★ ()
Ответ на: комментарий от anonymous

Тут недавно доки по Qt заблокировали. Не слышал?

Ну с тобой-то всё явно, ты выживальщик, «вот когда ВСЕ ВСЕХ заблокируют и будет Чебурнет и товарищи майоры - а у меня зато будет выкачано мильён фильмов и документация, буду сидеть в бункере и дрочить на линукс»

Alve ★★★★★ ()
Ответ на: комментарий от explorer

offline explorer под виртуальной форточкой

Я сейчас проверил. OE 7.7 работает в Wine 5.3, если согласиться на установку Gecko. Кстати, этот Gecko времен FF 3.6? Когда еще был отдельным. Я правильно понимаю?

anonymous ()
Ответ на: комментарий от anonymous

Кстати, этот Gecko времен FF 3.6? Когда еще был отдельным. Я правильно понимаю?

Если ? ко мне, то я не знаю. Может кто др. знает.

Не пользуюсь ни вайном, ни плэем ни кросовкой уже года 4 min. Даже на слабом компе стоит вирт. хрюшка. Приходится иметь дело с некоторыми вещами, которые на вине ну никак или ч/з 1 место. А зачем догоняться вином дополнительно? Эх, а в старые добрые времена обходился вином и playonlinux. Gecko тогда всегда заводил и пару нативных dll всегда надо было вкорячивать.

explorer ()
Ответ на: комментарий от anonymous

Не верьте сообщениям о вирусах в комментах на рутрекере. Имхо, это разрабы сами пишут, чтобы народ запугать и вынудить купить.

anonymous ()
Ответ на: комментарий от explorer

Хрюшка уже не катит здесь. Там старый IE8 в лучшем случае. YouTube уже скоро забросит поддержку IE11.

anonymous ()
Ответ на: комментарий от anonymous

Хрюшка уже не катит здесь. Там старый IE8 в лучшем случае. YouTube уже скоро забросит поддержку IE11.

Пока есть старый лис, Базилиск - довольно шустренький для хрюшки. У-тубу можно выкачать, потом смотреть. Но на том компе я этим не страдаю, хожу в сеть с хоста. Там виртуализация скорее вынужденная мера. Но раз уж она есть, сам понимаешь, можно ей много применения найти. Все форточки с фильтром записи - довольно шустро и не слишком парят мальвари, тем более + что гость.

explorer ()
Ответ на: комментарий от Alve

Я выкачивал доки по PySide2 wget-ом, даже поиск на JS работал, так что есть таки смысл.

В дороге бывает, что пропадает интернет, и чтобы открыть очередную страницу документации нужно ждать, а когда все скачано - быстрее и проще.

ArkaDOSik ★★ ()
Ответ на: комментарий от explorer

уже упомянутый offline explorer под виртуальной форточкой - для сайтов целиком

Достаточно дорогая проприетарная программа. Чем она лучше свободного wget?

Amaryllis ()

Пользовался плагином ScrapBook под лисой(скачивал сайты целиком[динамику не проверял]). До отрубания XUL в FF было идеально. Сейчас есть альтернативные варианты, но пользоваться пока явно хуже. Вынужден запускать локальный сервер и на него (и с него) писать (читать) страницы.

Atlant ★★★★★ ()
Ответ на: комментарий от anonymous

Gecko времен FF 3.6

В ~/.wine/drive_c/windows/system32/gecko/2.47.1/wine_gecko/browser/features присутствует e10srollout (мультипроцессность), так что, наверное, новый движок. Только падает иногда, но OE продолжает работать.

Есть вероятность, что JS парсит сама прога, так что от движка требуется только хорошая поддержка HTTPS. В Win7 некоторые сайты начинают открываться только после установки IE9. С другой стороны, когда я выкачивал форумы со встроенным YouTube видео, только начиная с IE10 появились превью. Вроде даже user agent не помогал, а может, им помогал, я уже не помню. Сейчас, по моему YouTube не поддерживает даже IE11, печаль. В логе видно, что качается основной html и дальше он не парсится. Если потом смотреть локально, черное окошко с надписью «mime не поддерживается». Надо еще покрутить настройки. Тут еще может быть дело, что у OE свой код обработки YouTube и он устарел. Так как раньше она выкачивала само видео и вставляла в код страницы под обычным тэгом <video/>. В общем, сломалось из-за излишней продвинутости.

anonymous ()
Ответ на: комментарий от Amaryllis

Чем она лучше свободного wget

Приведи код, как скачать vasechkin.ru вместе с форумом. Желательно, чтобы со встроенных YouTube и Вконтакте видео локально сохранилось превью, а ссылки указывали на сам видеохостинг. Пример страниц со встроенным видео:
forum.vasechkin.ru/viewtopic.php?f=15&p=20237 (YouTube)
vasechkin.ru/videos.php?id_file=213 (vk.com)

Достаточно дорогая проприетарная программа

Сейчас всё дорого, особенно покупать диски с фильмами из-за границы.

anonymous ()
Ответ на: комментарий от explorer

уже упомянутый offline explorer под виртуальной форточкой - для сайтов целиком

Оно сохраняет HTTP-заголовки? И умеет ли сохранять в WARC? (формат, принятый Архивом Интернета для хранения загруженных сайтов)

ShiningRiver ()
Ответ на: комментарий от Amaryllis

Чем она лучше свободного wget?

Качает в несколько потоков. wget ведь не поддерживает JS, а без него ютуб ролики вообще не видны, хоть я добавил youtube.com в разрешенные

wget -r -k -l1 -p -E -t10 -T30 -nc --no-check-certificate --restrict-file-names=windows -e robots=off "http://forum.vasechkin.ru/viewtopic.php?f=15&p=20237" --domains="www.youtube.com,youtube.com,forum.vasechkin.ru,vasechkin.ru" --user-agent="Mozilla/5.0 (Windows NT 6.1; rv:60.0) Gecko/20100101 Firefox/60.0" -P /home/denis/vasechkin

anonymous ()
Ответ на: комментарий от ShiningRiver

сохраняет HTTP-заголовки?

Можно включить журнал, но это лишняя нагрузка.

умеет ли сохранять в WARC?

Не нашел такой опции. Можно экспортировать в MHT, MAFF, CHM. Список https://i.imgur.com/6XGQhQq.png

anonymous ()
Ответ на: комментарий от ShiningRiver

Оно сохраняет HTTP-заголовки? И умеет ли сохранять в WARC? (формат, принятый Архивом Интернета для хранения загруженных сайтов)

Я не нашел такого. Но альтернативы этой проге тоже не нашел. Для одной-двух страниц еще singlefile addon для лиса, но он довольно медленный.

explorer ()
Ответ на: комментарий от anonymous

Качает в несколько потоков.

Не думаю, что это хорошая идея. Я вообще при скачивании сайтов ставлю задержку между загрузками страниц, в несколько секунд, ключом –wait $t, чтобы не перекрыли доступ к сайту за чрезмерно занятый канал.

wget ведь не поддерживает JS, а без него ютуб ролики вообще не видны

Не знаю, какие сайты Вы скачиваете, но не думаю, что ютуб-ролики в WARC-ах – это хорошая идея. Смотреть-то их как? Думаю, лучше их просто отдельно скачать, с помощью youtube-dl.

ShiningRiver ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.