Я пытаюсь загрузить файл с, wget
и curl
он отклонен с ошибкой 403 (запрещено).
Я могу просмотреть файл с помощью веб-браузера на том же компьютере.
Я пытаюсь снова с пользовательским агентом моего браузера, полученным http://www.whatsmyuseragent.com . Я делаю это:
wget -U 'Mozilla/5.0 (X11; Linux x86_64; rv:30.0) Gecko/20100101 Firefox/30.0' http://...
а также
curl -A 'Mozilla/5.0 (X11; Linux x86_64; rv:30.0) Gecko/20100101 Firefox/30.0' http://...
но это все еще запрещено. Какие другие причины , там может быть за 403, и каким образом я могу изменяю wget
и curl
команды для их преодоления?
(речь идет не о возможности получить файл - я знаю, что могу просто сохранить его из браузера; речь идет о понимании того, почему инструменты командной строки работают по-разному)
Обновить
Спасибо всем за прекрасные ответы на этот вопрос. Конкретная проблема, с которой я столкнулся, заключалась в том, что сервер проверял реферер. Добавив это в командную строку, я мог получить файл, используя curl
и wget
.
Сервер, который проверил реферер, отскочил через 302 в другое место, которое вообще не выполняло никаких проверок, поэтому curl
или wget
этот сайт работал нормально.
Если кому-то интересно, это произошло потому, что я читал эту страницу, чтобы узнать о встроенном CSS, и пытался взглянуть на CSS сайта для примера. Фактический URL я получаю проблемы с было это и curl
я закончил вверх с
curl -L -H 'Referer: http://css-tricks.com/forums/topic/font-face-in-base64-is-cross-browser-compatible/' http://cloud.typography.com/610186/691184/css/fonts.css
и виджет
wget --referer='http://css-tricks.com/forums/topic/font-face-in-base64-is-cross-browser-compatible/' http://cloud.typography.com/610186/691184/css/fonts.css
Очень интересно.
Ответы:
HTTP-запрос может содержать больше заголовков, которые не установлены curl или wget. Например:
key=val
, вы можете установить его с помощью опции-b key=val
(или--cookie key=val
) дляcurl
.curl
Вариантом является-e URL
и--referer URL
.curl
с помощью опции-u user:password
(или--user user:password
).Mozilla
, или не содержат,Wget
илиcurl
).Обычно вы можете использовать инструменты разработчика вашего браузера (Firefox и Chrome поддерживают это), чтобы прочитать заголовки, отправленные вашим браузером. Если соединение не зашифровано (то есть не использует HTTPS), вы также можете использовать для этой цели анализатор пакетов, например Wireshark.
Помимо этих заголовков, веб-сайты могут также вызывать некоторые действия за кулисами, которые изменяют состояние. Например, при открытии страницы возможно выполнение запроса в фоновом режиме для подготовки ссылки на скачивание. Или перенаправление происходит на странице. Эти действия обычно используют Javascript, но также может быть скрытая рамка для облегчения этих действий.
Если вы ищете метод легко получить файлы с сайта загрузки, посмотрите на plowdown, включенный с лемехом .
источник
wget
попытке добавления--auth-no-challenge
. Работает как магия.Просто хочу добавить к приведенным выше ответам, что вы можете использовать функцию «Копировать как cURL», присутствующую в инструментах разработчика Chrome (начиная с версии 26.0) и Firebug (начиная с версии 1.12 ). Вы можете получить доступ к этой функции, щелкнув правой кнопкой мыши строку запроса на вкладке Сеть.
источник
Enable persistent logs
на вкладке настроек инструментов разработчика Firefox, чтобы запретить очистку сетевых журналов при перенаправлении. У Chrome аналогичная опция. Кстати, «Копировать как cURL» уже давно присутствует в Firefox Nightly / Aurora / Beta и выйдет в следующем крупном выпуске (31.0).Пробовал все вышеперечисленное, однако не повезло; использовал инструмент браузера dev для получения строки user-agent, как только я добавил следующее, успешно:
источник
В зависимости от того, что вы просите, это может быть печенье. С Firefox, вы можете сделать щелчок правой кнопкой мыши, когда вы находитесь на странице, о которой идет речь, «Просмотр информации о странице». Выберите значок «Безопасность», а затем нажмите кнопку «Просмотр файлов cookie».
Для того, чтобы озадачить куки, необходим плагин Firefox «Live HTTP Headers». Вы можете видеть, какие файлы cookie установлены и какие файлы cookie отправляются обратно на веб-сервер.
wget
может работать с файлами cookie, но это приводит в бешенство, поскольку не дает намек на то, что они не отправляли файлы cookie. Лучше всего, чтобы вы удалили все связанные куки из вашего браузера и прошли через любой начальный логин или последовательность просмотра страниц. Посмотрите на «Живые HTTP заголовки» для файлов cookie и любых параметров POST или GET. Выполните первый шаг входа в систему сwget
использованием параметров «--keep-session-cookies» и «--save-cookies». Это даст вам файл cookie, который вы можете просмотреть в текстовом редакторе. Используйтеwget --load-cookies
с файлом cookie для следующих шагов.источник
Еще одна причина, по которой это может произойти, - если сайт требует SSL. Ваш браузер будет автоматически пересылать с HTTP на HTTPS, но curl и wget не будут. Поэтому попробуйте запрос с HTTPS вместо HTTP.
источник