Загрузить веб-сайт HTTPS можно только через имя пользователя и пароль с помощью wget?

Проверьте свою большую часть журнала ошибок, он, вероятно, расположен в /var/log/apache2/error.log или /var/log/httpd/error.log (или подобный). Это, вероятно, укажет на Вас на проблему, которую @Eduan описывает в другом ответе.

Это - хорошая практика, чтобы всегда проверить журналы ошибок сначала, часто существует ценная информация в них.

6
26.05.2015, 19:28
6 ответов

Вероятно, информация о сеансе сохраняется в файле cookie, чтобы вы могли перейти к другим страницам после входа в систему.

Если это так, то вы можете сделать это в два этапа :

  1. Используйте wget --сохраняйте cookie-файлы mycookies. txt и --сохранение cookies на странице входа в систему вебсайта вместе с опциями --имя пользователя и -пароль
  2. Используйте опцию wget --загрузка cookies mycookies.txt на последующих страницах, которые вы пытаетесь извлечь.

EDIT

Если опция -пароль и -- имя пользователя не работает, вы должны узнать информацию, отправленную на сервер по странице входа в систему и имитировать ее:

  • Для запроса GET можно добавить параметры GET непосредственно в адрес wget, который должен быть получен (убедитесь, что правильно процитированы &, = и другие специальные символы). Урл, вероятно, будет выглядеть как https://the_url?user=foo&pass=bar.
  • Для запроса POST вы можете использовать опцию wget -- post-data=the_need_info, чтобы использовать метод post для нужной регистрационной информации.

EDIT 2

Похоже, вам действительно нужен метод POST с набором j_username и j_password. Попробуйте использовать --post-data='j_username=yusername&j_password=yourpassword для параметра wget.

EDIT 3

Со страницей происхождения я смог понять немного больше о том, что происходит. При этом я не могу быть уверен, что она работает, потому что у меня нет (и я не хочу) действительных учетных данных.

Учитывая это, вот что происходит :

  1. Страница https://progtest.fit.cvut.cz/ устанавливает куки PHPSESSID и представляет вам опции для входа.
  2. Нажатие кнопки login отправляет запрос на https://progtest.fit.cvut.cz/shibboleth-fit.php, который берет куки-файл PHPSESSID (не уверен, что он его использует) и перенаправляет вас в SSO-движок со специально созданным для вас url, который выглядит следующим образом : https://idp2.civ.cvut.cz/idp/profile/SAML2/Redirect/SSO?SAMLRequest=SOME_VERY_LONG_AND_UNIQUE_ID
  3. SSO-ответ устанавливает новый cookie с именем _idp_authn_lc_key и перенаправляет вас на страницу https://idp2.civ.cvut.cz:443/idp/AuthnEngine, которая снова перенаправляет вас на https://idp2.civ.cvut. cz:443/idp/Authn/UserPassword (реальная страница входа)
  4. Вы вводите свои учетные данные и отправляете почтовые данные j_username и j_password вместе с куки-файлом из ответа SSO
  5. ? ??

Первые четыре шага можно сделать с помощью wget следующим образом :

origin='https://progtest.fit.cvut.cz/'

# Get the PHPSESSID cookie
wget --save-cookies phpsid.cki --keep-session-cookies "$origin"

# Get the _idp_authn_lc_key cookie
wget --load-cookies phpsid.cki  --save-cookies sso.cki --keep-session-cookies --header="Referer: $origin" 'https://progtest.fit.cvut.cz/shibboleth-fit.php'

# Send your credentials
wget --load-cookies sso.cki --save-cookies auth.cki --keep-session-cookies --post-data='j_username=usr&j_password=pwd' 'https://idp2.civ.cvut.cz/idp/Authn/UserPassword'

Обратите внимание, что wget самостоятельно следует за перенаправлением, что нам очень помогает в данном случае.

9
27.01.2020, 20:22

То, как я бы сделал это: сначала я бы использовал Live Http заголовки для Firefox, чтобы проанализировать связь. Исполниками и все эти вещи могут потребоваться. Как только у меня есть эта информация, которую я буду имитировать, что с wget сохраняют файлы cookie и нагрузки при необходимости.

0
27.01.2020, 20:22

Почему ты играешь с wget? Лучше использовать безголовый браузер для автоматизации этой задачи.

Что такое безголовый браузер, спрашиваешь?

Браузер без головы - это веб-браузер без графического интерфейса пользователя. Они обеспечивают автоматическое управление веб-страницей в среде, аналогичной популярным веб-браузерам, но выполняются через интерфейс командной строки или с помощью сетевого взаимодействия.

Двумя популярными безголовыми браузерами являются phantomjs (javascript) и Ghost.py (python).

Решение с использованием phantomjs

Сначала необходимо установить phantomjs. На системах, основанных на Ubuntu, вы можете установить его с помощью менеджера пакетов или собрать его из исходников с их домашней страницы .

sudo apt-get install phantomjs

После этого вы пишете скрипт javascript и запускаете его, используя phantomjs:

phantomjs script.js

Вот и все.

Теперь, чтобы узнать, как реализовать его для вашего случая, перейдите к его руководству по быстрому запуску. В качестве примера, чтобы войти в facebook автоматически и сделать снимок, можно воспользоваться сущностью, предоставленной здесь :

// This code login's to your facebook account and takes snap shot of it.
var page = require('webpage').create();
var fillLoginInfo = function(){
var frm = document.getElementById("login_form");
frm.elements["email"].value = 'your fb email/username';
frm.elements["pass"].value = 'password';
frm.submit();
}
page.onLoadFinished = function(){
if(page.title == "Welcome to Facebook - Log In, Sign Up or Learn More"){
page.evaluate(fillLoginInfo);
return;
}
else
page.render('./screens/some.png');
console.log("completed");
phantom.exit();
}
page.open('https://www.facebook.com/');

Оглянитесь вокруг документации, чтобы реализовать ее для вашего конкретного случая. Если у вас возникли проблемы с вашим сайтом https из-за ошибок ssl, запустите ваш скрипт следующим образом:

phantomjs --ssl-protocol=any script.js

Решение с помощью Ghost.py

Для установки Ghost.py вам понадобится pip:

sudo apt-get install python-pip   #On a Debian based system
sudo pip install Ghost.py

Теперь вы установили Ghost.py. Теперь, чтобы использовать его внутри скрипта python, просто следуйте документации, приведенной на его домашней странице. Я пытался использовать Ghost.py на https-сайте, но он как-то не сработал. Попробуйте и посмотрите, работает ли он.

UPDATE : Решение на основе GUI

Вы также можете использовать такие инструменты как Selenium для автоматизации процесса входа в систему и получения информации. Это довольно просто в использовании. Вам нужно лишь установить плагин для вашего браузера из здесь. А затем вы сможете записать процесс и воспроизвести его позже.

4
27.01.2020, 20:22

Попробуйте использовать «Curl»

curl --data "j_username=value1&j_password=value2" https://idp2.civ.cvut.cz/idp/Authn/UserPassword

Вам может понадобиться посмотреть на тип ответа и установить заголовок «содержимого» заголовок для соответствия; I.E: XML, JSON ETC

2
27.01.2020, 20:22

В дополнение к куки-файлам используйте в качестве агента пользователя в качестве фейерфокса, хрома и т.д. Потому что большинство серверов ненавидят менеджеры dwonload.

В качестве альтернативы используйте расширение firefox scrap book

  • easy to use
  • GUI
0
27.01.2020, 20:22

Estaba buscando lo mismo y finalmente escribí una herramienta basada en la respuesta de user43791 .

Por lo tanto, lo que está buscando es tal vez algo así:
https://github.com/atar-axis/TUM-tools/blob/master/moodle_grabber/moodle_grabber.sh

Debería ser muy fácil adaptar esto a cualquier otro sitio de shibboleth y se basa únicamente en wget!

0
27.01.2020, 20:22

Теги

Похожие вопросы