@BerVlaIg

Как скачать файл с защитой?

На сайте электронной библиотеки Сербии есть очень важное издание "Сербская литература в 100 книгах", но скачать сами файлы никак нельзя (можно только читать на самом сайте). Как можно было бы скачать их в pdf?
https://digitalna.nb.rs/view/URN:NB:RS:SD_9104CA89...
  • Вопрос задан
  • 136 просмотров
Решения вопроса 1
irishmann
@irishmann
Научись пользоваться дебаггером
VoidVolker все верно расписал. На сайте картинки, а не PDF. Написал небольшой скрипт на PHP, который грузит картинки в папку. Как запускать PHP-скрипты есть информация в Google. В скрипте необходимо подправить url к книге, название и кол-во страниц. URL можно найти через инструменты разработчика ,в гугл хром клавиша f12, дальше смотрим первую картинку. Картинки будут лежать в папке temp рядом со скриптом. Дальше уже из картинок можно собрать PDF.
Первая картинка
665427fa22ce4284693800.png

Код PHP
<?php
// Отключаем ограничение времени выполнения скрипта
set_time_limit(0);

/**
 * Получить контент
 * @param string $url
 * @return string
 */
function getContent($url)
{
    $curl = curl_init();
    curl_setopt_array($curl, array(
        CURLOPT_URL => $url,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_ENCODING => '',
        CURLOPT_MAXREDIRS => 10,
        CURLOPT_TIMEOUT => 0,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
        CURLOPT_CUSTOMREQUEST => 'GET',
        CURLOPT_HTTPHEADER => array(
            'Cookie: JSESSIONID=6A48319DC3AAAEF04B94797392F84CFE'
        ),
        CURLOPT_USERAGENT => 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)',
        CURLOPT_SSL_VERIFYPEER => false,
    ));
    $response = curl_exec($curl);
    curl_close($curl);
    return $response;
}
// Название книги, чтобы создать папку, желательно латиницей
$bookName = 'book_1';
// Ссылка
$bookUrl = 'https://digitalna.nb.rs/wb/NBS/RukopisiIKnjige/SD_9104CA8990B0A63FC8FE8ACB95BC484A?pageIndex=';
// Кол-во страниц
$pages = 210;
// Создать папку temp если она не существует
if (!is_dir(dirname(__DIR__) . DIRECTORY_SEPARATOR . 'temp')) {
    mkdir(__DIR__ . DIRECTORY_SEPARATOR . 'temp');
}
// Создать папку книги если она не существует
if (!is_dir(__DIR__ . DIRECTORY_SEPARATOR . 'temp' . DIRECTORY_SEPARATOR . $bookName)) {
    mkdir(__DIR__ . DIRECTORY_SEPARATOR . 'temp' . DIRECTORY_SEPARATOR . $bookName);
}
//Загрузить картинку и положить в папку книги
for ($i = 1; $i <= $pages; $i++) {
    $page = str_pad($i, 5, "0", STR_PAD_LEFT);
    echo $page, ' - ';
    $pageUrl = $bookUrl . $page;
    $filePath = __DIR__ . DIRECTORY_SEPARATOR . 'temp' . DIRECTORY_SEPARATOR . $bookName . DIRECTORY_SEPARATOR . $page . '.jpg';
    $content = getContent($pageUrl);
    echo $content && file_put_contents($filePath, $content) ? 'OK' : 'ERROR', '<br>';
    sleep(rand(1, 5));
    flush();
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
VoidVolker
@VoidVolker
Dark side eye. А у нас печеньки! А у вас?
Они там в виде картинок, которые скачиваются по мере листания книги, ссылки на страницы вида:
https://digitalna.nb.rs/wb/NBS/RukopisiIKnjige/SD_9104CA8990B0A63FC8FE8ACB95BC484A?pageIndex=00001

Судя по всему достаточно подставить идентификатор книги в ссылку и номер страницы и качать все страницы.
SD_9104CA8990B0A63FC8FE8ACB95BC484A - идентификатор книги. Пишем простой скрипт для парсинга идентификаторов книг из списка и числа файлов в книгах, далее подставляем в ссылку идентификатор книги и номер страницы и скачиваем в отдельную папку все страницы всех книг.
Для просмотра книг, судя по всему используется Bookreader.js - у него там есть панель с кнопкой для скачивания, возможно её можно как-то включить, а может и нет - надо копать доку/исходники. Проще скрипт написать.
Ответ написан
Комментировать
makol
@makol
I believe in god, for the rest i pay in cash!
Если (есть очень важное издание) реально важное))))) то переходим в данный режим
https://digitalna.nb.rs/wb/NBS/RukopisiIKnjige/SD_...

А тут либо руками и долго через F12 ссылками, либо вопрос к программистам и пиратам у кого есть скрипт или приложение для скачивания - принцип расширения downloader для инсты который фотки по ссылке тянет
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы