Проверьте свою большую часть журнала ошибок, он, вероятно, расположен в /var/log/apache2/error.log
или /var/log/httpd/error.log
(или подобный). Это, вероятно, укажет на Вас на проблему, которую @Eduan описывает в другом ответе.
Это - хорошая практика, чтобы всегда проверить журналы ошибок сначала, часто существует ценная информация в них.
Вероятно, информация о сеансе сохраняется в файле cookie, чтобы вы могли перейти к другим страницам после входа в систему.
Если это так, то вы можете сделать это в два этапа :
wget
--сохраняйте cookie-файлы mycookies. txt
и --сохранение cookies
на странице входа в систему вебсайта вместе с опциями --имя пользователя
и -пароль
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
Со страницей происхождения я смог понять немного больше о том, что происходит. При этом я не могу быть уверен, что она работает, потому что у меня нет (и я не хочу) действительных учетных данных.
Учитывая это, вот что происходит :
https://progtest.fit.cvut.cz/
устанавливает куки PHPSESSID
и представляет вам опции для входа. 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
_idp_authn_lc_key
и перенаправляет вас на страницу https://idp2.civ.cvut.cz:443/idp/AuthnEngine
, которая снова перенаправляет вас на https://idp2.civ.cvut. cz:443/idp/Authn/UserPassword
(реальная страница входа)j_username
и j_password
вместе с куки-файлом из ответа SSO Первые четыре шага можно сделать с помощью 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
самостоятельно следует за перенаправлением, что нам очень помогает в данном случае.
То, как я бы сделал это: сначала я бы использовал Live Http заголовки для Firefox, чтобы проанализировать связь. Исполниками и все эти вещи могут потребоваться. Как только у меня есть эта информация, которую я буду имитировать, что с wget
сохраняют файлы cookie и нагрузки при необходимости.
Почему ты играешь с wget
? Лучше использовать безголовый браузер для автоматизации этой задачи.
Что такое безголовый браузер, спрашиваешь?
Браузер без головы - это веб-браузер без графического интерфейса пользователя. Они обеспечивают автоматическое управление веб-страницей в среде, аналогичной популярным веб-браузерам, но выполняются через интерфейс командной строки или с помощью сетевого взаимодействия.
Двумя популярными безголовыми браузерами являются phantomjs
(javascript) и Ghost.py
(python).
Сначала необходимо установить 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 вам понадобится pip
:
sudo apt-get install python-pip #On a Debian based system
sudo pip install Ghost.py
Теперь вы установили Ghost.py. Теперь, чтобы использовать его внутри скрипта python, просто следуйте документации, приведенной на его домашней странице. Я пытался использовать Ghost.py на https-сайте, но он как-то не сработал. Попробуйте и посмотрите, работает ли он.
Вы также можете использовать такие инструменты как Selenium для автоматизации процесса входа в систему и получения информации. Это довольно просто в использовании. Вам нужно лишь установить плагин для вашего браузера из здесь. А затем вы сможете записать процесс и воспроизвести его позже.
Попробуйте использовать «Curl»
curl --data "j_username=value1&j_password=value2" https://idp2.civ.cvut.cz/idp/Authn/UserPassword
Вам может понадобиться посмотреть на тип ответа и установить заголовок «содержимого»
заголовок для соответствия; I.E: XML, JSON ETC
В дополнение к куки-файлам используйте в качестве агента пользователя в качестве фейерфокса, хрома и т.д. Потому что большинство серверов ненавидят менеджеры dwonload.
В качестве альтернативы используйте расширение firefox scrap book
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!