Я пытаюсь использовать Wget для загрузки страницы, но не могу выйти из экрана входа в систему.
Как отправить имя пользователя / пароль, используя данные публикации на странице входа в систему, а затем загрузить фактическую страницу как аутентифицированный пользователь?
Ответы:
На основании страницы руководства:
Убедитесь, что
--post-data
параметр правильно закодирован в процентах (особенно в амперсандах!), Иначе запрос, возможно, не удастся выполнить. Также убедитесь, чтоuser
иpassword
правильные ключи; Вы можете узнать правильные ключи, используя HTML-код страницы входа в систему (посмотрите на функцию «проверить элемент» вашего браузера и найдитеname
атрибут в полях имени пользователя и пароля).источник
-p
(--page-requisites
) для этого.--delete-after
к первому поиску, чтобы вы не спасли страницу результатов от входа в систему.WGET64: missing URL
я поместил всю команду wget в одну строку и удалил `\`Если вам это нужно для однократного использования, вы можете войти через браузер и впоследствии скопировать необходимые заголовки:
Используйте «Копировать как cURL» на вкладке «Сеть» Инструментов разработчика (перезагрузите страницу после открытия) и замените флаг заголовка curl,
-H
а--data
также wget--header
и--post-data
.источник
wget
с правильным cookie - нет; Я подозреваю, что веб-служба проверяет наличие нескольких различных заголовков GET, даже, казалось бы, неважных, таких как «User-Agent» или «Cache-Control».wget
предоставил данные неправильно.Я непосредственно передал файлы cookie существующего соединения wget с параметром --no-cookies и заголовком HTTP-запроса Cookie. В моем случае это был вход в университет Moodle, где вход выглядит более сложным (с использованием нескольких запросов с билетом для входа). Я добавил --post-data, потому что это был запрос POST. Например, получить список всех пользователей Moodle:
wget --no-cookies --header "Cookie: <name>=<value>" --post-data 'tab=search&name=+&personsubmit=Rechercher&keywords=&keywordsoption=allmine' https://moodle.unistra.fr/message/index.php
источник
У меня такая же проблема. Мое решение состояло в том, чтобы выполнить вход через Chrome и сохранить данные куки в текстовый файл. Это легко сделать с помощью этого расширения Chrome : расширение экспорта Chrome cookie.txt .
Когда вы получаете данные куки, есть также пример того, как их использовать с wget. Вам предоставляется простая командная строка copy-paste.
источник
Я хотел однострочник, который не загружал никаких файлов; Вот пример передачи вывода cookie в следующий запрос. Я только протестировал следующее на Gentoo, но оно должно работать в большинстве сред * nix:
wget -q -O /dev/null --save-cookies /dev/stdout --post-data 'u=user&p=pass' 'http://example.com/login' | wget -q -O - --load-cookies /dev/stdin 'http://example.com/private/page'
(это одна строка, хотя она, вероятно, переносится в ваш браузер)Если вы хотите сохранить вывод в файл, измените
-O -
на-O /some/file/name
источник
Вам не нужно cURL, чтобы сделать данные формы POST.
--post-data 'key1=value1&key2=value2'
работает просто отлично. Примечание: вы также можете передать имя файла в wget с данными POST в файле.источник
Если они используют базовую аутентификацию:
Если они используют данные формы POST, вам нужно использовать что-то вроде cURL .
источник
Решение, которое использует lynx и wget.
Примечание: Lynx должен быть скомпилирован с флагом --enable-persistent-cookies, чтобы это работало
Если вы хотите использовать wget для загрузки какого-либо файла с сайта, который требует входа в систему, вам просто нужен файл cookie. Чтобы создать файл cookie, я выбираю lynx. Lynx - это текстовый веб-браузер. Сначала вам нужен файл конфигурации для lynx, чтобы сохранить cookie. Создайте файл lynx.cfg. Запишите эти настройки в файл.
Затем запустите lynx с помощью этой команды:
После ввода имени пользователя и пароля и выбора «сохранить меня на этом компьютере» или что-то подобное. При успешном входе вы увидите красивую текстовую веб-страницу сайта. И вы выходите из системы. В текущем каталоге вы найдете файл cookie с именем cookie.file. Это то, что нам нужно для Wget.
Затем wget может скачать файл с сайта с помощью этой команды.
источник
Пример для загрузки с помощью wget на сервер большой ссылки на файл, которую можно получить в вашем браузере.
Например, используя Google Chrome.
Войдите в систему, где вам нужно, и нажмите скачать. Перейдите, чтобы скачать и скопировать вашу ссылку.
Затем откройте DevTools на странице, где вы войдете в систему, перейдите на консоль и получите куки, введя
document.cookie
Теперь перейдите на сервер и загрузите ваш файл:
wget --header "Cookie: <YOUR_COOKIE_OUTPUT_FROM_CONSOLE>" <YOUR_DOWNLOAD_LINK>
источник