пытаюсь загрузить zip-файл с URL-адреса

У меня возникли проблемы с загрузкой zip-файла с URL-адреса сервера с помощью wget и curl. Ни один из них не работал так, как должен работать. Например:

wget  --user=test.user@domain.com --password=secret!  "https://msi.domain.com/admin/ui/feedbackCSV/organizationReports/sjf3j45345345bsdf?reports[]=pageviews& reports[]=searches&from=Nov 12 2020&to=Nov 19 2020/client_Technical_Publications_stats.zip"

Я получил ответ 400, что является ошибкой неверного запроса, поэтому я подумал, может быть, мне нужно закодировать URL.

Я попытался с помощью:

wget  --user=test.user@domain.com --password=secret! 
"https%3A%2F%2Fmsi.domain.com%2Fadmin%2Fui%2FfeedbackCSV%2ForganizationReports%2Fsjf3j45345345bsdf%3Freports%5B%5D%3Dpageviews%26%20reports%5B%5D%3Dsearches%26from%3DNov%2012%202020%26to%3DNov%2019%202020%2Fclient_Technical_Publications_stats.zip"

Через несколько секунд он создает имя файла с помощью 2Fsjf3j45345345bsdf? Reports [] = pageviews & reports [] = search & from = 12 ноября 2020 г. & to = 19 ноября 2020 г.% 2Fclient_Technical_Publications_stats.zip и, когда я открываю файл, я заметил в нем кучу HTML.

Если скопировать и вставьте мой закодированный URL-адрес в браузер, я могу загрузить настоящий zip-файл.

I used the chrome developer tool to find the headers in the request  and I find below headers 
**Request  headers**
:authority: msi.domain.com
:method: GET
:path: /admin/ui/feedbackCSV/organizationReports/2Fsjf3j45345345bsdf?reports%5B%5D=pageviews&%20reports%5B%5D=searches&from=Nov%2012%202020&to=Nov%2019%202020/
:scheme: https
accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
accept-encoding: gzip, deflate, br
accept-language: en-US,en;q=0.9
cookie: tdid=azJ6MW45bSUyQlRxMXhnMWlRdFlJbDJRJTNEJTNEOklyMk14M2tYVVpvSG9HUTRtJTJGZlFKdyUzRCUzRA; _ga=GA1.2.1783666257.1605728974; JSESSIONID=9C50C09FEE87F3CCF7701FC7C3F0F326; AWSALB=v4wU9BVN7zdWf0YrbhfTrsTRGXyV0x5VtFVhxHDMco7vIWs8SfIDrU9db00EbaakDwmEdE2pXltZSswTiEF/K069JdH6vMr4RvNYYpsSbsPUTVuUt/5NkLHTJEJd; AWSALBCORS=v4wU9BVN7zdWf0YrbhfTrsTRGXyV0x5VtFVhxHDMco7vIWs8SfIDrU9db00EbaakDwmEdE2pXltZSswTiEF/K069JdH6vMr4RvNYYpsSbsPUTVuUt/5NkLHTJEJd
sec-fetch-dest: document
sec-fetch-mode: navigate
sec-fetch-site: none
sec-fetch-user: ?1
upgrade-insecure-requests: 1
user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36

Заголовки ответа

cache-control: no-cache, no-store, max-age=0, must-revalidate
content-disposition: attachment; filename=client_Technical_Publications_stats.zip
content-security-policy: default-src 'none'; script-src 'self' 'unsafe-inline' 'unsafe-eval' data: blob:; connect-src 'self'; frame-src 'self'; frame-ancestors 'self'; img-src 'self' data: blob:; style-src 'self' 'unsafe-inline'; font-src 'self';
content-type: application/zip
date: Wed, 23 Dec 2020 17:22:55 GMT
expires: 0
feature-policy: geolocation 'self';midi 'none';sync-xhr 'self';microphone 'none';camera 'none';magnetometer 'none';gyroscope 'none';speaker 'self';fullscreen 'self';payment 'none';
pragma: no-cache
referrer-policy: no-referrer-when-downgrade
server: nginx/1.17.2
set-cookie: AWSALB=rYgsUIfM2f/cfdgdfgrf2SxsgFRrq58s0ChVFPOR7/zBzYdwb4/cRZYggtSXybifpD/J/0mBxH5kUIwVoDboy+KM8C3wN8o0HjUGCAjBg9qVIv2XA/r; Expires=Wed, 30 Dec 2020 17:22:55 GMT; Path=/
set-cookie: AWSALBCORS=rYgsUIfM2f/cQc9w1vbcvcvblQrf2SxsgFRrq58s0ChVFPOR7/zBzYdwb4/cRZYggtSXybifpD/J/0mBxH5kUIwVoDboy+KM8C3wN8o0HjUGCAjBg9qVIv2XA/r; Expires=Wed, 30 Dec 2020 17:22:55 GMT; Path=/; SameSite=None; Secure
status: 200
strict-transport-security: max-age=31536000; includeSubDomains
td-service: admin
x-content-type-options: nosniff
x-frame-options: SAMEORIGIN
x-xss-protection: 1; mode=block

команда

wget --header='Accept-Encoding: gzip, deflate,br' \
     --header='content-type: application/zip'\
     --header='Accept-Language: en-US,en;q=0.9'\
     --header='sec-fetch-mode: navigate'\
     --header='upgrade-insecure-requests: 1'\
     --header='sec-fetch-dest:document'\
     --header='sec-fetch-mode:navigate'\
     --header='scheme:https' \
     --user-agent='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36' \
     --user=user.test@Navistar.com \
     --password=secret! \
     -O ctp_stats.zip \
     "https://msi.domain.com/admin/ui/feedbackCSV/organizationReports/2Fsjf3j45345345bsdf?reports%5B%5D=pageviews&%20reports%5B%5D=searches&from=Nov%2012%202020&to=Nov%2019%202020/" 

Я передал те же заголовки в своей команде, я получаю код ответа 200 и ниже вывод Длина: не указана [text / html] Сохранение в: ‘ctp_stats.zip’ Когда я открывал zip-папку, я вижу пустой файл

0
задан 23 December 2020 в 23:05

1 ответ

Учитывая, что вы передаете учетные данные веб-серверу, формирующему этот отчет, вам, вероятно, также потребуется передать дополнительную информацию заголовка запроса, например:

wget --header='Content-Type: text/plain' \
     --header='Accept-Encoding: gzip, deflate' \
     --user-agent='User-Agent: Mozilla/5.0 (Windows; MSIE 5; Windows ME; en-US)' \
     --user=test.user@domain.com \
     --password=secret! \
     -O ctp_stats.zip \
     "https://msi.domain.com/admin/ui/feedbackCSV/organizationReports/sjf3j45345345bsdf?reports[]=pageviews&reports[]=searches&from=Nov 12 2020&to=Nov 19 2020/client_Technical_Publications_stats.zip"

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

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

Хотя это и не входило в вопрос, там также есть опция -O для вывода файла в ctp_stats.zip, чтобы вы не сошли с ума -длинное имя. Не стесняйтесь использовать/изменять/удалять это, если это не добавляет никакой ценности.

0
ответ дан 23 December 2020 в 07:49

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

Похожие вопросы: