Задать вопрос

Как скачать документ, книгу с защищенного сайта(только чтение) (Для примера взял книгу с открытым доступом)?

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

Буду раскрывать все карты - поэтапно, поскольку пока что вообще не разбираюсь коде, но один добрый человек вдохновил меня на поиски решения. Но пришлось на некоторое время забыть. Как видите - по итогу безуспешно, раз пишу сюда (потому что слишком туп). Теперь по существу: "предмет исследования" - книга-пример с открытым доступом из сайта юрайт: https://urait.ru/viewer/grazhdanskoe-pravo-i-proce.... "объект исследования" - возможность скачать ее любым способом (пожалуйста, только не надо предлагать нажать "сохранить как" правой кнопкой мыши несколько сотен раз.)

Так вот, внезапно тот добрый человек кидает результат через день: https://disk.yandex.ru/d/wOHMnfNx-rsxaQ (не в том порядке страницы, но меня удивил сам факт того, что это получилось). Я его стал расспрашивать что да как. Он отвечает, что в отладке (F12) увидел, что каждая страница качается в .svg по ссылке вида */page_N.svg.gz выкачал все страницы конвертировал в pdf и объединил. Далее он пишет что есть куча способов выкачать ссылку, от curl и wget, до python скрипта. Он использовал Download Master "добавить группу закачек" На сайтах, где требуется авторизация, он из консоли разработчика скрипт писал, чтобы ссылки выкачать.

Это все что тогда я успел взять с развития темы. После пост удален скорее всего. Сейчас появился CHAT GPT. Я в шоке с его возможностей, но из-за своего непонимания ситуации даже он мне не помог. Я ему предложил написать код для скачивания всех картинок на примере данных с этого URL: https://urait.ru/library/svobodnyy-dostup/pravo-yu... (уже другая книга, но тоже с открытым доступом) . Он мне скинул этот код:
for (let i = 1; i <= 302; i++) {
    const url = `https://urait.ru/viewer/pravovoe-regulirovanie-sozdaniya-i-ispolzovaniya-informacionnoy-infrastruktury-v-rossiyskoy-federacii-519998/page_${i}.svg.gz`;
    fetch(url)
        .then(res => res.arrayBuffer())
        .then(data => {
            const blob = new Blob([data], { type: 'image/png' });
            const link = document.createElement('a');
            link.href = URL.createObjectURL(blob);
            link.download = `page${i}.png`;
            link.click();
        });
}


В этом коде, вы создаете цикл от 1 до 302, который загружает каждую страницу в формате .svg.gz. Затем, используя fetch API, вы загружаете этот файл в бинарный формат. Наконец, вы создаете ссылку на этот файл и скачиваете его с помощью метода click.

Я: Вставил эту команду, все 302 файла скачались, но формат файлов не поддерживается и они имеют одинаковый размер. Вылезала ошибка в консоли 302 раза: Failed to load resource: the server responded with a status of 404 ()

ЧатЖПТ: Судя по всему, сервер не поддерживает скачивание этих файлов или они просто не существуют. Возможно, эти файлы генерируются динамически при запросе или требуется определенный доступ для их загрузки. Попробуйте найти информацию об этом на сайте или у администратора сайта.

Я: забыл добавить еще ошибку: Не удалось загрузить карту исходного кода с помощью инструментов разработчика: Не удалось загрузить контент для https://static.isu.pub/fe/product-header-frontend/...: Ошибка HTTP. Код статуса 403, net::ERR_HTTP_RESPONSE_CODE_FAILURE...

ЧатЖПТ: Эти ошибки говорят о том, что ваш браузер не может загрузить какие-либо файлы, потому что сервер вернул статус ошибки 404 или 403. Ошибка 404 означает, что сервер не нашел файл, который вы запрашиваете. Ошибка 403 означает, что ваш доступ к файлу запрещен. В этом случае, вам нужно обратиться к владельцу сайта или администратору, чтобы убедиться, что у вас есть необходимые права доступа.

Если у кого-то есть опыт, сообщите, пожалуйста!
  • Вопрос задан
  • 16862 просмотра
Подписаться 5 Простой 3 комментария
Пригласить эксперта
Ответы на вопрос 4
anatoly_kulikov
@anatoly_kulikov
Помог ответ? Отметь решением!
С высокой долей вероятности там стоит защита, которая мешает скачать файл, если обращение к нему неавторизовано (откуда и ошибка 403).

Работает она примерно следующим образом: запрос к ресурсу (файлу) подписывается специальным ключом, который сравнивается с теми, что есть в базе, и если всё ок, то возвращается файл, в противном случае запрос завершается ошибкой.

Тут нужно или этот «ключ» иметь в наличии и передавать его, или уже никак, т.к. прочие методы являются незаконными.
Ответ написан
@Dimsml
Т.к. просмотренные страницы это SVG-изображения, то они вероятно остаются в кеше браузера.
Если пользуетесь Chrome, то попробуйте покопаться в кеше при помощи вот этого приложения: https://www.nirsoft.net/utils/chrome_cache_view.html

Из минусов данного подхода: придётся всё-таки предварительно просмотреть все страницы книги чтобы они сохранились в кеше. Плюс, не всё что вы видите сохраняется в кеше, возможно где-то есть настройка принудительно хранить всё, не знаю.
Собственно, к чему я это написал: возможно он не авторизовывался, а просто сохранил страницы из кеша, меня на эту мысль натолкнули случайные страницы не в том порядке, они далеко не всегда сохраняются подряд.
Ответ написан
moonz
@moonz
web developer | seo | design
Я обычно такие задачи решаю на selenium, попроси ChatGPT, написать тебе код. При открытии страницы скорее всего там и скрипты есть, которые подгружать будут страницы налету, по этому тут без эмуляции браузера никак.
Ответ написан
Комментировать
@Quiensabe
VR-разработчик
Есть такой софт Offline Explorer. Он умеет качать ссылки по шаблону, умеет авторизоваться и открывать все страницы как пользователь, умеет проходить по ссылкам и качать доп. материалы. В общем думаю на 95% вашу проблему можно там легко решить.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
22 дек. 2024, в 20:40
10000 руб./за проект
22 дек. 2024, в 20:34
3000 руб./за проект
22 дек. 2024, в 20:12
10000 руб./за проект