LINUX.ORG.RU

wget и авторизация


0

1

Ранее качал этим монстром с ресурсов, на которых авторизация была примитивна: http-user&http-password, но теперь всё не так - сайт принудительно требует предварительной авторизации для просмотра/скачивания страниц. Добывать куки я не умею (ранее никогда с необходимостью этого не сталкивался) и плохо понимаю принципы web-авторизации. Научите анализировать и работать с кукисами/хидерами/пост-запросами и помогите освоить эти новые для меня знания. За информацию, советы и ссылки заранее говорю СПАСИБО.

★★

--load-cookies=ФАЙЛ загрузить кукисы из ФАЙЛА перед сеансом.
-save-cookies=ФАЙЛ сохранить кукисы в ФАЙЛ после сеанса.
--keep-session-cookies загрузить и сохранить кукисы сеанса

XoFfiCEr ★★☆☆
()
Последнее исправление: XoFfiCEr (всего исправлений: 4)

Если использовать cookies взятый из браузера (так часто делают)то придется и user agent изменять.

XoFfiCEr ★★☆☆
()
Ответ на: комментарий от XoFfiCEr

Это я и сам смог найти. Гугл рулит! Но нигде нет точной или последовательной инструкции с объяснениями как и что делать, а, главное, почему именно так.

zzdnx ★★
() автор топика
Ответ на: комментарий от XoFfiCEr

Что делаю не так?

wget --user=login --password='pass' --save-cookies=cooke -U "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5" "http://xxxxxxxxxxx/"

wget --load-cookies=cooke --keep-session-cookies -U "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5" "http://xxxxxxxxxxx/download.php?id=8762&name=xxxxxxxxxxx"

Результат второго запроса: «вы должны авторизироваться».

zzdnx ★★
() автор топика
Ответ на: Что делаю не так? от zzdnx

в первом запросе вместо --user=login --password='pass' надо сделать что-то вроде --post-data='login=login&password=password' и запрос отправлять туда же, куда отправляется из формы логина.

maloi ★★★★★
()
Ответ на: комментарий от XoFfiCEr

403 Forbiiden?

No. Мне выдаётся именно страница с сообщением что «данный контент доступен пользователям только после логина. Просьба войти под своими логином и раролем.»

zzdnx ★★
() автор топика
Ответ на: комментарий от maloi

Я и так то же пробовал: пост-дата(экшн=логин&имя=имя&пасс=пасс), Пробовал и без «экшн=логин» - каждый раз одно и то же: Пожалуйста, войдите под своим логин/паролем.

zzdnx ★★
() автор топика
Ответ на: комментарий от anonymous

Да, понимаю, что лучше руби, питон, пхп или нечто подобное, но у меня доступены только знания баш, и то без хорошего знания sed и awk.

zzdnx ★★
() автор топика
Ответ на: 403 Forbiiden? от zzdnx

Wget редиректит на html-страницу?
Ну так залогинься (или зарегистрируйся сначала) и потом wget...

XoFfiCEr ★★☆☆
()
Ответ на: комментарий от zzdnx

так ты возьми firebug какой-нибудь, да погляди, что и как отправляет твой браузер при нормальном логине и повтори тот же POST-запрос в своём вгете, сохраняя куки, после чего уже подключая имеющиеся куки качай нужный контент.

рекомендую чуточку помучаться и воспользоваться curl - когда припёрло работать с куками и пост-запросами он оказался удобнее, чем wget.

billic ★★
()
Ответ на: комментарий от XoFfiCEr

Это всё уже сделано. Есть имя и пароль. Могу зайти на сайт, и ссылки работают (в браузере). А вот с wget договориться никак не могу... То-ли он не принимает мою идентификацию, то-ли сервер ведёт лог и не впускает, переправляя на страницу с просьбой залогиниться.

Я не работал с кукисами ранее и потому не знаю как это делается правильно. Возможно, я просто не правильно задаю какой-то параметр...

zzdnx ★★
() автор топика
Ответ на: Что делаю не так? от zzdnx

Параметры нужно передавать через POST-строку и скрипту, который отвечает за авторизацию. Названия переменных можно посмотреть в коде формы авторизации на сайте

derlafff ★★★★★
()
Ответ на: комментарий от billic

Проблема в том что мой английский не так хорош, чтобы я изучил и понял доки по CURL, а обучаться на частных примерах из сети... Думаю, понятно. Если есть ссылки на русскую доку по этой программе - очень прошу поделиться ссылкой.

zzdnx ★★
() автор топика
Ответ на: комментарий от derlafff

Я уже писал о том что крайне плохо понимаю механизмы взаимодействия в web. Так что я очень далёк от навыков составления пост-запросов. Если можете научить - прошу помощи... )

zzdnx ★★
() автор топика
Ответ на: комментарий от zzdnx

К примеру, форма может выглядеть так:

<form method=POST action="/login_script.php">

<input type=text name=nick size=15><br>
<input type=password name=passwd size=15><br>
<input type=submit value="Вход">

</form>

На ЛОРе есть CSRF, если на вашем ресурсе оно тоже есть - необходимо предварительно получать этот код из формы, сохраняя куки, и передавать вместе с логином-паролем

Если так, как в примере выше, то логин будет выглядеть примерно так:

wget http://site/login_script.php --post-data="nick=$user&passwd=$password" --save-cookies=file
derlafff ★★★★★
()
Последнее исправление: derlafff (всего исправлений: 2)
Ответ на: комментарий от zzdnx

по сути без разницы будет, каким инструментом пользоваться. главное - это выяснить, что ожидает получить сайт для «логина». с этим очень здорово помогает firebug, который, вроде как, должен быть в любом нормальном браузере.

суть проста:

  • ты приходишь на сайт, он даёт тебе куки,
  • ты посылаешь сайту куки вместе со специально составленным post-запросом, от чего сайт запоминает, что вот эти куки - они у дяди с таким-то логином.
  • ты запрашиваешь свой контент у сайта, присылая ему имеющиеся куки, на что он видит, что да, ты дядя правильный, тебе можно выдать контент, а не отфутболить каким-нибудь образом.
billic ★★
()
Ответ на: комментарий от derlafff
<form method="post" action="takelogin.php">
<table border="0"><tbody><tr valign="top"><td style="border: none;">
<img src="/pic/affiliate-login.jpg"></td><td style="border: none;">
<input size="18" name="username" class="login" type="text"><br>
<input size="18" name="password" class="pass" type="password"><br>
<span class="art-button-wrapper"><span class="art-button-l"> </span><span class="art-button-r"> </span><input class="art-button" value="Вход" type="submit"></span><br><br>
</td></tr></tbody></table>
</form>

Тогда запрос нужен, по идее, такой:

wget http://site/takelogin.php --post-data=«username=$user&password=$password» --save-cookies=file

А потом, как подключать кукисы? Так, как я писал выше?

zzdnx ★★
() автор топика
Ответ на: комментарий от billic

Спасибо, теперь становится более понятно. Пробую получить страницу с авторизацией.

zzdnx ★★
() автор топика
Ответ на: комментарий от derlafff

Спасибо! Работает! Теперь я понял как обойти эту авторизацию)

zzdnx ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.