Как загрузить веб-страницу, требующую имя пользователя и пароль?
Например, я хочу загрузить эту страницу после ввода имени пользователя и пароля:
Как загрузить веб-страницу, требующую имя пользователя и пароль?
Например, я хочу загрузить эту страницу после ввода имени пользователя и пароля:
Попробуйте представленное здесь решение:
http://www.unix.com/shell-programming-scripting/131020-using-wget-curl-http-post-authentication.html
# Log in to the server. This can be done only once.
wget --save-cookies cookies.txt \
--post-data 'user=foo&password=bar' \
http://server.com/auth.php
# Now grab the page or pages we care about.
wget --load-cookies cookies.txt \
-p http://server.com/interesting/article.php
Примечание для других, которые могут наткнуться на это:
user
и один с именем password
action
, установленный на http://server.com/auth.php
onsubmit
в элементе формыИтак, если имена атрибутов и URL-адрес формы различны, вам необходимо соответствующим образом изменить параметры на первую команду wget
.
Если он использует JavaScript, есть вероятность, что он не будет работать вообще - например. в случае примера веб-сайта OPs он использует хеширование JavaScript клиента, поэтому внешний вызов с использованием wget
не устанавливает необходимые поля в форме (в случае сайта Ubuntu, hash_passwrd
).
Использование параметров:
--password=PASS
--user=USERNAME
т.е.: wget http://www.example.com --user=joe --password=schmoe
Вы также можете добавить параметр --auth-no-challenge
в случае возникновения дополнительных проблем:
т.е.: wget http://www.example.com --user=joe --password=schmoe --auth-no-challenge
Следующие команды wget должны позволить вам получать доступ к страницам на веб-сайте, для которого требуется имя пользователя и пароль:
wget http://username:[email protected]/url/
wget --http-user=user --http-password=password http://example.org/url/
Возможно, это поможет. На сайте, на котором я пытался войти, были некоторые скрытые поля, которые мне нужно было получить, прежде чем я смог успешно войти в систему. Таким образом, первый wget получает страницу входа в систему, чтобы найти дополнительные поля, вторую учетную запись wget на сайте и сохраняет файлы cookie, а третий использует эти файлы cookie для получения страницы, которую вы после.
#!/bin/sh
# get the login page to get the hidden field data
wget -a log.txt -O loginpage.html http://foobar/default.aspx
hiddendata=`grep value < loginpage.html | grep foobarhidden | tr '=' ' ' | awk '{print $9}' | sed s/\"//g`
rm loginpage.html
# login into the page and save the cookies
postData=user=fakeuser'&'pw=password'&'foobarhidden=${hiddendata}
wget -a log.txt -O /dev/null --post-data ${postData} --keep-session-cookies --save-cookies cookies.txt http://foobar/default.aspx
# get the page your after
wget -a log.txt -O results.html --load-cookies cookies.txt http://foobar/lister.aspx?id=42
rm cookies.txt
Там есть полезная информация об этом другом сообщении: superuser → с помощью wget для загрузки pdf файлов с сайта, для которого необходимо установить файлы cookie
используйте параметры --user=X --password=Y
, чтобы указать имя пользователя X
и пароль Y
.