Проблема с прямой загрузкой PDF

Сайт vermittelerregsiter.info позволяет скачать PDF-файл обычным GET-запросом: например. https://www.vermittlerregister.info/recherche?a=pdf&registernummer=D-W-111-BHC1-55

Мы хотим автоматизировать это [для массовой загрузки] с помощью JAVA, но нам это не удалось.

Неудачные попытки

Посмотрите некоторые, например. из того, что мы пробовали:

  1. https://medium.com/@pasanmanohara/download-a-pdf-file-from-a-url-in-the-spring-boot-java-30fa325d6ab9
  2. https://www.baeldung.com/java-download-file#using-java-io (пункт 2)
  3. Scrapeops собственные запросы к браузерам.

Все они возвращают веб-страницу, а не PDF-файл.

Предполагаемая работа сайта/сервера

Я проверил, и оказалось, что сайт сначала проверяет, запрашивает ли бот или реальный пользователь (браузер), и только после этого возвращает PDF:

Когда я пытаюсь открыть ссылку PDF в браузере (Edge, а также в Chrome), то
(1) сначала открывается веб-страница [и там проверяется подлинность браузера] — мое предположение.
(2) когда я снова запрашиваю ту же ссылку (F5), файл действительно загружается. Последующие запросы загружают PDF-файлы немедленно.
Можем ли мы попробовать «двойной щелчок» или что-то подобное?

Проверьте наличие антиботов на сайте

Проверка на наличие антиботов (на сервере дискорда) показала, что на сайте их нет:

Обновление 1

Основываясь на предложении Михнеи, я попробовал следующее:

curl 'https://www.vermittlerregister.info/en/search?a=pdf&registernummer=D-W-111-BHC1-55' -H 'Cookie: session=s%3A9Q4kmQAo8-J7r9JgcxA_xBcpTGRW3ZmN.xBcVp19mrdbw%2FW0KZgSZNlj27BakNcA20m%2FjAIXRuic' > test.pdf

в результате сломанный test.pdf

и сообщение об ошибке:

завиток: (3) URL-адрес в неправильном/недопустимом формате или отсутствующий URL
«registernummer» не является внутренней или внешней командой, исполняемой программой или пакетным файлом.

Обновление 2

Это сработало, когда я включил все файлы cookie:

Например. запрос:

curl "https://www.vermittlerregister.info/en/search?a=pdf&registernummer=D-CRQV-N63D6-52" ^
  -H "accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7" ^
  -H ^"cookie: klaro-cookie-consent=^%^7B^%^22econda^%^22^%^3Atrue^%^2C^%^22session^%^22^%^3Atrue^%^2C^%^22cookie-consent^%^22^%^3Atrue^%^7D; emos_jcsid=AY9S7EDyMyIwXqoqRContP58fgh73OXg:1:0:0; emos_jcvid=AY9S7EDyMyIwXqoqRContP58fgh73OXg:1:0:0:0:true:1; session=s^%^3A9Q4kmQAo8-J7r9JgcxA_xBcpTGRW3ZmN.xBcVp19mrdbw^%^2FW0KZgSZNlj27BakNcA20m^%^2FjAIXRuic^" ^
  -H "user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36 Edg/124.0.0.0" > test2.pdf
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
56
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Во-первых, похоже, у них есть какая-то защита от ботов при доступе к URL-адресу без параметра ?a=pdf:

Во-вторых, я думаю, что причина, по которой ваши запросы не работают, заключается в том, что вам нужно передать заголовок cookie сеанса вместе с запросом. Вот пример curl:

curl 'https://www.vermittlerregister.info/en/search?a=pdf&registernummer=D-W-111-BHC1-55' -H 'Cookie: session=<YOUR_SESSION_COOKIE>;' > test.pdf

Вы можете получить сеанс cookie, перейдя по URL-адресу в своем браузере:

Спасибо. Я пробовал, смотрите мое Обновление 1.

Igor Savinkin 16.05.2024 16:00

это сработало, когда я включил все файлы cookie, см. Обновление 2.

Igor Savinkin 16.05.2024 17:30

Другие вопросы по теме