Как скачать защищенный PDF файл с Google Диска, за минуту

Chrome pdf

Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов в России Pyatilistnik.org. В прошлый раз мы с вами научились запрещать автовоспроизведение видео в браузере Chrome, так как все понимают на сколько это может раздражать, и может быть несвоевременно, на Youtube для этого была отдельная кнопка, а вот в плане всего интернета пришлось выбирать любой из понравившихся методов. Сегодня я хочу вас научить скачивать защищенный PDF файл с Google Drive (Google Диска). Под защищенным понимается, что у вас есть возможность читать его с правами только на чтение и скачать или сохранить себе на Google диск вы его не можете. Но как выяснилось все очень просто решается и уже все придумано за нас.

Постановка задачи


И так у нас с вами есть ссылка на PDF файл, который располагается на облачном хранилище Google Диск, вот пример ссылки:

https://drive.google.com/file/d/0B8pbiwdqmBuPa2xjNkItTHdWRW8/edit

Как вы можете обратить внимание, это книга "Дешифровка критской письменности (Пеластско-лезгинский язык)". Все, что вы можете сделать это вызвать панель с меню и выбрать свойства документа.

Просмотр защищенного PDF файла в Google Drive

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

Просмотр PDF документа Google Диска в режиме чтения

Суть метода по скачиванию ограниченного PDF файла на Гугл диске

Как оказалось Гугл диск хранит все PDF файлы в виде отдельных файлов картинок и когда пользователь начинает просматривать документ, его просто собирает в веб интерфейсе, на уровне файлового хранилище, это просто картинки. Проверить это легко, вы должны открыть защищенный PDF документ, вызвать режим разработчика, через клавишу "F11" и перейдя на вкладку "Network", где после чего нужно обновить страницу с файлом. Делается это через клавишу "F5". Теперь если вы зайдете в раздел "XHR", то увидите там кучу ссылок типа "xhr". Открыв любую из них вас перекинет на страницу, которую вы уже успели промотать в книжке.

Зная факт того, что это картинки и они попадают в кэш при просмотре, мы можем их вытащить из кэша и объединить в единый PDF файл

Как ггугл диск хранит PDF файлы

Теперь, что мы делаем поэтапно:

  1. Откройте ваш защищенный PDF документ, я покажу, как это делается в Mozilla Firefox и Google Chrome
  2. Перейдите в режим разработчика
  3. Нажмите клавишу F5 для обновления страницы
  4. Полностью пролистайте весь PDF документ, все страницы. Так как они должны попасть в локальный кэш вашего браузера
  5. Выполните специальный код, который объединит все страницы в кэше в единый PDF файл и позволит его загрузить на компьютер

Текст кода для скачивания защищенного PDF файла с Google Диска

let jspdf = document.createElement("script");
jspdf.onload = function () {
let pdf = new jsPDF();
let elements = document.getElementsByTagName("img");
for (let i in elements) {
let img = elements[i];
console.log("add img ", img);
if (!/^blob:/.test(img.src)) {
console.log("invalid src");
continue;
}
let can = document.createElement('canvas');
let con = can.getContext("2d");
can.width = img.width;
can.height = img.height;
con.drawImage(img, 0, 0, img.width, img.height);
let imgData = can.toDataURL("image/jpeg", 1.0);
pdf.addImage(imgData, 'JPEG', 0, 0);
pdf.addPage();
}
pdf.save("download.pdf");
};
jspdf.src = 'https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.5.3/jspdf.debug.js';
document.body.appendChild(jspdf);

Как загрузить ограниченный PDF из Google Drive через Mozilla

  • Откройте ваш защищенный PDF документ, я покажу, как это делается в Mozilla Firefox
  • Перейдите в режим разработчика. В Mozilla Firefox это делается, через одновременное нажатие клавиш CTRL+Shift+I или вызов соответствующего меню "Веб разработка - Инструменты разработчика"

Отрываем режим разработчика в Mozilla

  • Далее нажмите клавишу F5 и обновите страницу
  • Полностью, по порядку пролистайте все страницы данного PDF файла

Просматривание PDF файла в Google Drive

Перейдите на вкладку "Консоль". Именно сюда нам нужно будет вставлять код, но по умолчанию политика безопасности Mozilla Firefox запрещает выполнение неподписанных скриптов. Чтобы это обойти вам нужно, это разрешить.

вкладка консоль в инструментах разработчика Firefox

Вам нужно ввести "разрешить вставку" и нажать Enter.

Разрешаем выполнение стороннего кода в Firefox

Теперь вставляем код. Для его выполнения нажмите одновременно CTRL и Enter.

Выполнение кода для скачивания защищенного PDF с гугл диска

Начинается процесс скачивания картинок и объединение их в единый PDF-файл.

Преобразование картинок из Google Drive в PDF файл

Через некоторое время браузер вам предложит сохранить DPF файл к вам на компьютер.

Скачивание защищенного PDF файла

Как видите я успешно загрузил ограниченный владельцем PDF документ, все прекрасно работает.

Успешно скачанный ограниченный PDF файл из гугл диска

Как загрузить ограниченный PDF из Google Drive через Chrome

  • Откройте ваш защищенный PDF документ, я покажу, как это делается в Google Chrome
  • Перейдите в режим разработчика. В Google Chrome это делается, через нажатие клавиши F11 или вызов соответствующего меню "Дополнительные - Инструменты разработчика (CTRL+SHOFT+I)"

Вызов режима разработчика в Chrome

  • Обязательно выберите режим iPad Pro для максимального разрешения и выставите масштаб 100%, в противном случае вы скачаете документ не с очень хорошим качеством. Далее нажмите клавишу F5 и обновите страницу
  • Полностью, по порядку пролистайте все страницы данного PDF файла
  • Далее перейдите на вкладку "Console"

Вызов консоли в инструментах разработчика

Вам необходимо вставить представленный выше код для скачивания ограниченного PDF файла, после чего просто нажать Enter.

Выполнение кода для скачивания защищенного PDF в Chrome

Начнется процесс сборки вашего PDF документа.

Скачивание ограниченного PDF файла из гугл диска

Через пару мгновений вы получите нужный вам PDF документ.

Успешно загруженный PDF документ

На этом у меня все, скачивание ограниченных файлов с гугл диска через другие браузеры очень похоже, поэтому я не буду их описывать. С вами был Иван Семин, автор и создатель IT портала Pyatilistnik.org.

32 Responses to Как скачать защищенный PDF файл с Google Диска, за минуту

  1. фыва:

    Очень хочется узнать как таким образом можно скачать презентацию а не pdf документ? В презентации есть много картинок+видео и текст

  2. Иван Семин:

    А это вызов, с вас пример ссылки

  3. Elena:

    Спасибо большое!

  4. Антон:

    Спасибо, очень круто, только не много качество хуже становиться

  5. Никита:

    Просто шик, спасибо за подробную инструкцию! Очень пригодилось и заняло несколько минут. Качество на уровне.

  6. Юлия:

    все сделала по инструкции, файл сохраняется в плохом качестве в левом углу на листе, что то с кодом не так?

  7. Иван Семин:

    Увеличьте размер документа, поставьте 100-120%

  8. Антон:

    Да ты неимоверно крут! Готов перечислить даже малость денег

  9. Иван Семин:

    Если хотите задонатить, то на странице об авторе есть реквизиты!

  10. Степан:

    А ты хороший человек!!!)))

  11. Дмитрий:

    Хочется скачать вот такой документ
    _ttps://docs.google.com/spreadsheets/u/0/d/1XMyVTv5hb9-nJZhHmHASHEyFDfpDneSfqu—mSlqJcU/htmlview#
    Это гугл-таблицы. Возможно ли?

  12. Иван Семин:

    Нет не получиться, тут нет прав на это

  13. Алексей:

    Когда файл сохраняется, по низу обрезается 30% информации, по тексту это 4 строчки. От чего метод становится не рабочим, т.к. суть теряется на первом листе.

  14. Иван Семин:

    у меня такого нет, книжка скачивается на ура

  15. Дима:

    У меня не получается — я вижу XHR — отдельные страницы, образуется
    download.pdf — но он пустой — 1 страница пустая

    Google Chrome ubuntu 20.04

    Да скрипт запускается в Tampermonkey — привязанного к веб странице с книжкой в момент refresh.

    add img 0
    VM1068 userscript.html:24 invalid src
    VM1068 userscript.html:22 add img ƒ item() { [native code] }
    VM1068 userscript.html:24 invalid src
    VM1068 userscript.html:22 add img ƒ namedItem() { [native code] }
    VM1068 userscript.html:24
    add img 0
    VM943 userscript.html:24 invalid src
    VM943 userscript.html:22 add img ƒ item() { [native code] }
    VM943 userscript.html:24 invalid src
    VM943 userscript.html:22 add img ƒ namedItem() { [native code] }
    VM943 userscript.html:24 invalid src

    Navigated to _ttps://drive.google.com/file/d/0B5yKZ3bWyNe6SHB2T1BHYVdsT1k/view
    VM1027 userscript.html:22 add img 0
    VM1027 userscript.html:24

  16. Дима:

    Получилось — но после некоторых усилий. На ubuntu 20.04 — у меня не работает из GOOGLE CHROME но работает из CHROMIUM и MOZILLA. Скрипт надо каждый раз руками копировать открыв инструменты разработчика и закладку консоль. Там нет надписи paste если правую кнопку мыши жать. Надо скопировать просто скрипт левой кнопкой мыши и нажать на среднюю — и RETURN. Ну конечно предварителино освежив, пролистав, перед этим настроив размер ctrl++. (извиняюсь за занудство).

  17. Ангел:

    Гениально просто!
    И работает! Спасибо.

  18. Геннадий:

    Виноват! Адрес страницы не гугл диск.

  19. Алекс:

    Доброго времени суток. Вопрос : а есть ли скрипт , чтобы проделать ту же операцию , только с дропбокс … тоже стоит запрет на скачивание и запрет на печать… а страниц много 150+ (я их вижу по отдельности и даже номера есть… но как их в кучку собрать и автоматически ? )
    Подставлял ваш скрипт — выдает ошибку : мол дропбоксом запрещено использовать скрипты или чтото такое.
    Refused to load the script ‘(тут ваш скрипт) ‘ because it violates the following Content Security Policy directive: «script-src ‘unsafe-eval'(и далее ссылки видимо на правила сервиса)

  20. anna:

    Для стандартной ориентации страниц работает супер! А для альбомной не получается ((( — обрезает.

  21. Анатолий:

    Добрый день. А как excel файл скачать?

  22. Алекс:

    Тоже вопрос какую функцию в код добавить, что бы альбомная ориентация получилась пдф при скачивании

  23. Алекс:

    для альбомной ориентации ребят:
    pdf.addPage(», ‘landscape’);
    Вот это нужно вставить вместо
    pdf.addPage();

  24. Кирилл:

    Спасибо большое очень помог

  25. Ирина:

    не получается альбомный лист ввести pdf.addPage(», ‘landscape’); ошибка((
    если вводить как вы писали(с книжным вариантом) все получается.
    Спасибо

  26. Александр:

    Спасибо за статью! Очень полезно.

    Есть еще вызов для Вас.
    А можно сделать тоже самое, но для произвольного сайта? Чтобы скрипт сохранял все закешированные картинки при том, что они закачиваются не в виде BLOB, а в виде обычных файлов. Например, запускаем скрипт через консоль для новостного сайта и получаем все картинки со страницы. Сейчас скрипт работает только с гугл документами, а если запустить его на другом сайте, то сформируется пустой документ.

    И второе, тоже очень важное. Можно картинки не собирать в единый PDF, а сохранить в исходном виде (JPG) отдельным файлами и без запроса на сохранение каждого файла?

    Поясню для чего это нужно. Есть защищенный онлайн просмотрщик документов, в котором сделано все, чтобы пользователь не мог скачать просматриваемый материал. Смотреть можно, скачать нет. Но, по сути, этот сервис работает точно также, как и сервис гугла из Вашей статьи. При каждом нажатии на кнопку “следующая страница”, подгружается отдельная картинка и используется кеширование. Названия картинок и адреса меняются при каждой загрузке и состоят из сотни символов. Угадать адрес картинки не получается. Можно уже загруженные картинки скачивать из кэша. Вручную я из кэша картинки смог вытащить. Но нужно как-то автоматизировать процесс. В одном документе может быть 1000 страниц. А таких документов может быть много. Сами скачанные картинки удобней хранить отдельными файлами, чтобы их можно было переименовывать, пересылать, раскладывать по папочкам итп. При этом важно сохранить очерёдность скачивания файлов и при сохранении желательно называть их 0001, 0002, 0003 итп.

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

    Я пробовал решить задачу без скриптов, с помощью утилиты просмотра кэша браузера (MZCacheView). Частично работает, но не так как надо. Копировать выбранные файлы получается. Но утилита не умеет их в нужном порядке сохранять в папку, а это важно. Оригинальные названия файлов состоят из сотен символов. Утилита обрезает название файла до какой-то длинны. У них получается одинаковое называние и тогда каждому файлу добавляется числовой индекс. Вроде бы так и надо. Но проблема в том, что файлы сохраняются в последовательности по времени закачки с точностью до секунды. В одну секунду может быть закачано несколько файлов и в результате внутри каждого секундного интервала последовательность сохраненных файлов сбивается на произвольную.

  27. Евгения:

    спасибо!!!

  28. Виктор 4е:

    Всё получилось, огромное спасибо!!!
    Четко и быстро расписана методика , рекомендую!

  29. Сергей:

    Скачал пдф файл но он идет картинками не могу скопировать текст, как это исправить?

  30. Иван Семин:

    Не совсем понятно, что именно за проблема опишите подробнее или сделайте скриншот

  31. Дима:

    При увеличении качество текста отличное, но режет картинку, в зависимости от приближения, иногда даже пополам( А без увеличения нормально, но качество не очень… Что посоветуете?

  32. Иван Семин:

    Даже не знаю, скиньте ссылку попробую посмотреть

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *