Как пройти страницу входа в систему с помощью Wget?
Я пытаюсь использовать Wget для загрузки страницы, но я не могу пройти мимо экрана входа.
Как я могу отправить имя пользователя/пароль с помощью почтовых данных на странице входа в систему, а затем загрузить фактическую страницу в качестве аутентифицированного пользователя?
Ответы
Ответ 1
На странице руководства:
# Log in to the server. This only needs to be done once.
wget --save-cookies cookies.txt \
--keep-session-cookies \
--post-data 'user=foo&password=bar' \
--delete-after \
http://server.com/auth.php
# Now grab the page or pages we care about.
wget --load-cookies cookies.txt \
http://server.com/interesting/article.php
Убедитесь, что параметр --post-data
правильно процентный код (особенно амперсанды!), или запрос, вероятно, не удастся. Также убедитесь, что user
и password
- правильные клавиши; вы можете узнать правильные ключи, заручив HTML-страницу входа (загляните в функцию браузера "проверить элемент" и найдите атрибут name
в полях имени пользователя и пароля).
Ответ 2
Я напрямую передал файлы 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
Ответ 3
Если вам это нужно для однократного использования, вы можете войти через браузер и впоследствии скопировать необходимые заголовки:
Используйте "Копировать как cURL" на вкладке "Сеть" Инструментов разработчика (перезагрузите страницу после открытия) и замените флаг заголовка скручивания -H
и --data
на wget --Header
и --post-data
.
Ответ 4
У меня такая же проблема. Мое решение состояло в том, чтобы выполнить вход через Chrome и сохранить данные куки в текстовый файл. Это легко сделать с помощью этого расширения Chrome: расширение экспорта Chrome cookie.txt.
Когда вы получаете данные куки, есть также пример того, как их использовать с wget. Вам предоставляется простая командная строка copy-paste.
Ответ 5
Я хотел однострочник, который не загружал никаких файлов; Вот пример передачи вывода 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'
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
Ответ 6
Вам не нужно cURL, чтобы делать POSTed данные формы. --post-data 'key1=value1&key2=value2'
работает просто отлично. Примечание: вы также можете передать имя файла в wget с данными POST в файле.
Ответ 7
Если они используют базовую аутентификацию:
wget http://username:[email protected]/page.html
Если они используют данные формы POSTed, вам нужно использовать вместо этого cURL.
Ответ 8
Решение, которое использует lynx и wget.
Примечание: Lynx должен быть скомпилирован с флагом --enable-persistent-cookies, чтобы это работало
Если вы хотите использовать wget для загрузки какого-либо файла с сайта, который требует входа в систему, вам просто нужен файл cookie. Чтобы сгенерировать файл cookie, я выбрал lynx. Lynx - это текстовый веб-браузер. Сначала вам нужен файл конфигурации для lynx, чтобы сохранить cookie. Создайте файл lynx.cfg. Запишите эти настройки в файл.
SET_COOKIES:TRUE
ACCEPT_ALL_COOKIES:TRUE
PERSISTENT_COOKIES:TRUE
COOKIE_FILE:cookie.file
Затем запустите lynx с помощью этой команды:
lynx -cfg=lynx.cfg http://the.site.com/login
После ввода имени пользователя и пароля и выбора "сохранить меня на этом компьютере" или что-то подобное. Если авторизоваться успешно, вы увидите красивую текстовую веб-страницу сайта. И вы выходите из системы. В текущем каталоге вы найдете файл cookie с именем cookie.file. Это то, что нам нужно для Wget.
Затем wget может скачать файл с сайта с помощью этой команды.
wget --load-cookies ./cookie.file http://the.site.com/download/we-can-make-this-world-better.tar.gz
Ответ 9
Пример для загрузки с помощью wget на сервер большой ссылки на файл, которую можно получить в вашем браузере.
В примере используется Google Chrome.
Войдите в систему, где вам нужно, и нажмите скачать. Перейдите, чтобы скачать и скопировать вашу ссылку.
![enter image description here]()
Затем откройте DevTools на странице, где вы войдете в систему, перейдите в Консоль и получите куки, введя document.cookie
![enter image description here]()
Теперь перейдите на сервер и загрузите ваш файл: wget --header "Cookie: <YOUR_COOKIE_OUTPUT_FROM_CONSOLE>" <YOUR_DOWNLOAD_LINK>
![enter image description here]()