Я пытаюсь загрузить файл с веб-сайта, который требует входа в систему. Эта команда извлекает cookie.txt и загруженный html показывает, что я вошел в систему (хорошо):

(Я разбил команду в строках для удобства чтения)

wget 
--user-agent="Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) 
Gecko/20100101 Firefox/45.0" 
--keep-session-cookies
--save-cookies cookies.txt
--post-data "login_username=MyUserName&login_password=*******" 
--header="Host: somewebsite.com"
--header="Referer: http://somewebsite.com/files/download.php?i=2157716" 
http://somewebsite.com/login.php

Здесь я получаю cookies.txt. (все в порядке). И после этого: (пытается скачать)

wget 
--user-agent="Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) 
Gecko/20100101 Firefox/45.0" 
--load-cookies cookies.txt
--header="Host: somewebsite.com"
--header="Referer: http://somewebsite.com/files/download.php?i=2157716" 
--header="Connection: keep-alive" --header="Accept-Language: en-US,en;q=0.5"
--header="Accept-Encoding: gzip, deflate"
http://somewebsite.com/files/dl.php?t=2157716

Но вместо загрузки файла возвращается HTML-код, говорящий о том, что файл можно загрузить только с веб-сайта.

Вот данные POST от Firefox прямо перед началом загрузки:

опубликовать данные из фактической загрузки Firefox

Чего не хватает?

1 ответ1

1

Решаемые. HTML имеет скрытую форму, которая отправляет запрос через POST. Мне просто нужно было добавить --post-data "login_username=****&login_password=****" . Сервер только начинает загрузку, если это запрос POST.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .