App for downloading diary.ru blogs.
CloudFlare bypassing codes credit goes to Corwin75: https://github.com/Corwin75/Cloudflare-Bypass
Актуальные бинарники обитают здесь Доступные дистрибутивы:
- diary-scraper Setup x.x.x.exe - Инсталлятор под Windows x64
- diary-scraper Setup x.x.x-ia32.exe - Инсталлятор под Windows x86
- diary-scraper-x.x.x-win.zip - Архив с программой под Windows x64
- diary-scraper-x.x.x-ia32-win.zip - Архив с программой под Windows x86
- diary-scraper-x.x.x.tar.gz - Архив с программой под Linux x64 (проверено на Linux Mint 18)
- diary-scraper-x.x.x.dmg - Пакет с программой под OsX (поддерживаются версии 10.12 и более поздние)
- Приложение предназначено для скачивания блогов с сайта Diary.
- Скачивание производится без пост-обработки в виде целых html-страниц, содержащих в себе посты и комментарии к ним.
- Приложение имеет возможность обходить CloudFlare, которую Diary использует для защиты от DDOS
- Приложение намеренно работает в один поток и использует задержку между запросами к страницам, чтобы не создавать чрезмерную нагрузку на сервера Diary. Запаситесь терпением.
Переключение между функциями приложения осуществляется через меню "Действия" слева от заголовка. Когда запущен процесс скачивания или обработки дневника, перключение между действиями недоступно.
- Логин и пароль - оные от дневника. Никуда кроме самого Diary они не передаются.
- Адрес дневника - url дневника
- Рабочая папка - локальная директория, в которую будут складироваться данные
- Задержка между запросами - чтобы не напрягать чрезмерно сервера Diary (и не подставляться под бан по подозрению в DDOS), между обращениями к веб-страницам добавляется задержка, величину которой (в миллисекундах) определяет это поле. Эта задержка не относится к скачиванию статики. В целях безопасности программа не даст использовать задержку менее 100мс.
- Даты начала и окончания - программа ищет посты в дневнике через страницу календаря. Это позволяет ограничить скачивание дневника указанным диапазоном дат. Посты, не попадающие в заданный интервал, будут проигнорированы
- Перезаписывать - по-умолчанию если скачивание запущено повторно в ту же самую папку, страницы и изображения, которые уже были скачаны, будут проигнорированы, галка "перезаписывать" даёт программе указание повторно скачивать все страницы и изображения, даже если они уже были скачаны.
- Скачать страницы редактирования - если вы скачиваете дневник, к которому у вас есть доступ на редактирование, то дополнительно к страницам постов можно скачать страницы редактирования постов, на этих страницах присутствует дополнительная информация о доступах, которая будет доступна для парсинга. Без этих страниц любая страница с "замком" будет помечена, как скрытая от всех
- Скачать данные аккаунта - позволяет скачать страницы, содержащие настройки вашего аккаунта в Diary.
- Папка с дневником - папка с данными конкретного дневника (это не та же самая папка, которая указывается в предыдущем пункте). Узнать эту папку можно по наличию файла scrape.db в ней.
- Папка с дневником - аналогично предыдущему пункту. Процедура архивирования создаст в папке с дневником новую папку "archive", в которую будут скопированы все посты и изображения дневника. Помимо этого будет создан файл index.html, содержащий в себе все посты дневника и постраничную навигацию по ним, аналог ленты дневника.
- ОСТОРОЖНО на данный момент программа скачивает изображения только домена diary.ru, а страница index.html содержит все посты дневника. Если их много и они содержат большое количество ссылок на изображения - браузер попытается открыть их все сразу, что может привести к существенному израсходованию трафика.
При скачивании в рабочей папке формируется ещё одна папка с названием, соответствующим адресу дневника. В ней создаются следующие файлы и папки:
- images - скачанные изображения (скачиваются только изображения с домена static.diary.ru, т.е. те, которые хостятся непосредстевнно на Diary)
- posts - скачанные страницы постов, каждая из которых содержит пост и все комментарии к нему
- scrape.db - база данных SQLite, содержащая соответствия URL'ов постов и изображений и наименований скачанных файлов.
При работе программа показывает прогресс исполнения задания. Поиск постов производится по странице календаря дневника. В соответствии с ним определяется количество дат, в которых присутствуют посты. Прогресс считается по количеству обнаруженных и обработанных дат.
Первая версия, которая кое-как запускается и работает
- Починил кириллические логины и пароли
- Распараллелил закачку статики (стало чуть-чуть быстрее)
- Игнорирование ошибки 404 на статике (некоторые картинки из старых постов дайри не отдаёт)
- Добавил журналирование происходящих ошибок в рабочую папку
- Полностью переписан интерфейс, теперь у нас Angular 5 и Material design
- Ошибки, связанные с журналированием, теперь игнорируются.
- Поиск ссылок на посты на страницах теперь регистронезависимый (исправлена ошибка для некоторых блогов)
- При неудачной попытке скачивания страницы теперь производится несколько повторных попыток
- Коды подвергнуты рефакторингу, так что есть ненулевые шансы появления новых ошибок
- Добавлено отображение ошибок в случае проблем с подключением к локальному сервису
- Добавлена индексация страниц дат для более быстрого "проматывания" уже скачанных данных
- Исправлена ошибка с таймзоной дат интервала сканирования
- Ещё раз исправлена ошибка с таймзоной дат интервала сканирования.
- Добавлено скачивание данных под тэгом "more", если из-за настроек Diary они не присутствуют в странице сразу
- Добавлено скачивание результатов голосований в случае, если аккаунт, с которого производится выгрузка дневника, не принимал в них участие
- Добавлена галка для скачивания страниц редактирования постов. Если вы скачиваете дневник, к которому у вас есть доступ на редактирование, с этой галкой скачаются также страницы редактирования постов, из которых впоследствии можно получить дополнительные данные по ограничению доступа к посту.
- Добавлена функция парсинга скачанных данных и преобразования их в формат, аналогичный выдаче парсера Дарины. Парсинг работает как при наличии, так и при отсутствии страниц редактирования (без них просто все посты с замком помечаются полностью закрытыми)
- ОСТОРОЖНО Из-за технических особенностей используемый в новой версии формат БД скрейпера (scrape.db) несовместим с предыдущим. Это означает, что если у вас остался частично выкачнный дневник, новая версия не сможет продолжить его скачивание с места остановки и вам придётся выкачивать его заново. На функцию парсинга это изменение не влияет, можно парсить данные, скачанные предыдущими версиями.
- В парсинг добавлены поля "Музыка" и "Настроение"
- Добавлена опция для скачивания данных аккаунта, а также парсинг этих данных в формат, аналогичный парсеру Дарины
- Исправлена ошибка, из-за которой могли не скачиваться изображения, находящиеся под тэгом MORE
- Добавлены сборки под Windows x86 (ia32 в названиях файлов) и OSX (.dmg-пакет, поддерживаются 10.12 и более поздние версии)
- Добавлена функция "архивирования" дневника
- Произведён очередной рефакторинг кодов
- Добавлено скачивание дополнительных данных, необходимых для архивирования. Тем, кто уже выкачал дневник, необходимо будет вновь запустить скачивание дневника без перезаписи - программа пропустит все скачанные посты и докачает свежедобавленные в список файлы.
- Обратите внимание на возможный высокий расход трафика при открытии файла с архивом в браузере.
- Добавлено окно с информацией о программе
- Исправлено несколько ошибок, связанных с пустыми url, при загрузке и архивировании дневника
- На этом основной этап разработки программы завершён, дальше будут только исправляться ошибки по мере их выявления
- Доработано архивирование дневника, теперь посты помещаются не сразу в DOM, а укладываются строками в json, откуда потом динамически отображается только текущая страница. Это позволило ускорить открытие архива, а также убрало риски перерасхода трафика при этом.
- Исправлена ошибка при скачивании служебных страниц "старого" дизайна
- Доработан парсинг данных аккаунта с учётом служебных страниц "старого" дизайна
- Исправлена ошибка с открытием ссылок MORE после предыдущей переделки архивирования
- Исправлена ошибка с переназначением ссылок на уже скачанные изображения после предыдущей переделки архивирования