通常、ログインしている場合にのみ利用可能なウェブサイトを繰り返しダウンロードしようとします。
有効なユーザー名とパスワードがありますが、問題はWebインターフェースを介してログインする必要があることです。したがって、これを使用することは--user=user and --password=password
役に立ちません。
wget
テキストを含むWebページのみダウンロード:
申し訳ありません。このページは利用できません。ログインするのを忘れましたか?
ダウンロードできますか?
以下のように、ログインを検索するFTP / HTTPファイルがないため、ログインページでも--user、--passwordを使用できませんman wget
。
--user=user
--password=password
Specify the username user and password password for both FTP and
HTTP file retrieval.
古典的なグラフィカルログインがすぐそこにあります。
.POSTメソッドを使用してログインしてCookieを保存しようとするwget --save-cookies coookies --keep-session-cookies --post-data='j_username=usr&j_password=pwd' 'https://idp2.civ.cvut.cz/idp/Authn/UserPassword'
と、Cookieファイルが空になり、保存されたページはいくつかのエラーページです。
ウェブサイトはですhttps://idp2.civ.cvut.cz/idp/Authn/UserPassword
。実際にログインhttps://progtest.fit.cvut.cz/
しようとするとこのページにリダイレクトされ、ログインに成功すると以前にあったページやログイン後に行きたいページにリダイレクトされます。
答え1
ログイン後に別のページに移動できるように、セッション情報をCookieに保存できます。
この場合、次の2つの手順でこれを実行できます。
- Webサイトのログインページで、オプションと
wget
オプション--save-cookies mycookies.txt
を使用してください。--keep-session-cookies
--username
--password
- 検索したい後続のページで使用するオプション
wget
。--load-cookies mycookies.txt
編集する
--password
andオプションが機能しない場合は、--username
ログインページがサーバーに送信する情報を見つけてそれを模倣する必要があります。
GET
リクエストの場合は、wgetがインポートする必要があるアドレスにパラメータを直接追加できます(引用符やその他の特殊文字をGET
正しく引用する必要があります)。 URLは次のとおりです。&
=
https://the_url?user=foo&pass=bar
- 要求の場合は、必要なログイン情報とともに公開方法を使用するオプションを使用
POST
できます。wget
--post-data=the_needed_info
編集2
POST
withメソッドj_username
とj_password
setメソッドが必要なようです。--post-data='j_username=yourusername&j_password=yourpassword
選択してみてくださいwget
。
編集3
元のページを見ると、何が起こっているのかをよりよく理解できました。しかし、有効な資格情報がなく、望ましくないので、動作しているかどうかはわかりません。
その結果は次のとおりです。
- このページではCookieを
https://progtest.fit.cvut.cz/
設定しPHPSESSID
、ログインオプションを提供します。 - ボタンをクリックすると、PHPSESSID Cookieのインポート
login
要求が送信されhttps://progtest.fit.cvut.cz/shibboleth-fit.php
(使用するかどうかはわかりません)、次のようにあなたに合うように設計されたURLを使用してSSOエンジンにリダイレクトされます。https://idp2.civ.cvut.cz/idp/profile/SAML2/Redirect/SSO?SAMLRequest=SOME_VERY_LONG_AND_UNIQUE_ID
- SSO応答は、呼び出された新しいCookieを設定し、
_idp_authn_lc_key
再リダイレクトされるページ(実際のログインページ)にリダイレクトします。https://idp2.civ.cvut.cz:443/idp/AuthnEngine
https://idp2.civ.cvut.cz:443/idp/Authn/UserPassword
- 資格情報を入力し、SSO応答から投稿データ
j_username
とCookieを送信します。j_password
- ???
wget
最初の4つのステップは次のように完了できます。
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
リダイレクトは完全に単独で行われるため、この場合は多くの役に立ちます。
答え2
なぜ遊んでいるのwget
?一部を使用する方が良いです。ヘッドレスブラウザこれを自動化します。
ヘッドレスブラウザとは何ですか?
ヘッドレスブラウザは、グラフィカルユーザーインターフェイスのないWebブラウザです。これは、広く使用されているWebブラウザと同様の環境でWebページの自動制御を提供しますが、コマンドラインインターフェイスまたはネットワーク通信を介して行われます。
広く使用されている2つのヘッドレスブラウザは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/');
特定の状況に合わせて実装するには、ドキュメントを確認してください。 SSLエラーが原因でWebサイトに問題がある場合は、https
次のようにスクリプトを実行してください。
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スクリプトで使用するには、そこに提供されているドキュメントに従ってください。ホームページ。 httpsウェブサイトでGhost.pyを試してみましたが、なぜかうまくいきません。試してみて、動作していることを確認してください。
アップデート:GUIベースのソリューション
次のツールを使用することもできます。セレンログインプロセスを自動化し、情報を取得します。使い方はとても簡単です。ブラウザにプラグインをインストールするだけです。ここ。その後、セッションを録画して後で再生できます。
答え3
試してみてください'curl'
curl --data "j_username=value1&j_password=value2" https://idp2.civ.cvut.cz/idp/Authn/UserPassword
応答の種類を確認し、'content-type'
一致するようにヘッダーを設定する必要があります(XML、jsonなど)。
答え4
方法は次のとおりです。まず、FirefoxのLive HTTPヘッダプラグインを使用して通信を分析します。参照とそのすべてが必要な場合があります。この情報を取得したら、wget
クッキーを保存し、必要に応じてロードすることをシミュレートします。