ユーザー名とパスワードのあるHTTPSウェブサイトをダウンロードするには、wgetのみを使用しますか?

ユーザー名とパスワードのあるHTTPSウェブサイトをダウンロードするには、wgetのみを使用しますか?

通常、ログインしている場合にのみ利用可能なウェブサイトを繰り返しダウンロードしようとします。

有効なユーザー名とパスワードがありますが、問題は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つの手順でこれを実行できます。

  1. Webサイトのログインページで、オプションとwgetオプション--save-cookies mycookies.txtを使用してください。--keep-session-cookies--username--password
  2. 検索したい後続のページで使用するオプションwget--load-cookies mycookies.txt

編集する

--passwordandオプションが機能しない場合は、--usernameログインページがサーバーに送信する情報を見つけてそれを模倣する必要があります。

  • GETリクエストの場合は、wgetがインポートする必要があるアドレスにパラメータを直接追加できます(引用符やその他の特殊文字をGET正しく引用する必要があります)。 URLは次のとおりです。&=https://the_url?user=foo&pass=bar
  • 要求の場合は、必要なログイン情報とともに公開方法を使用するオプションを使用POSTできます。wget--post-data=the_needed_info

編集2

POSTwithメソッドj_usernamej_passwordsetメソッドが必要なようです。--post-data='j_username=yourusername&j_password=yourpassword選択してみてくださいwget

編集3

元のページを見ると、何が起こっているのかをよりよく理解できました。しかし、有効な資格情報がなく、望ましくないので、動作しているかどうかはわかりません。

その結果は次のとおりです。

  1. このページではCookieをhttps://progtest.fit.cvut.cz/設定しPHPSESSID、ログインオプションを提供します。
  2. ボタンをクリックすると、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
  3. SSO応答は、呼び出された新しいCookieを設定し、_idp_authn_lc_key再リダイレクトされるページ(実際のログインページ)にリダイレクトします。https://idp2.civ.cvut.cz:443/idp/AuthnEnginehttps://idp2.civ.cvut.cz:443/idp/Authn/UserPassword
  4. 資格情報を入力し、SSO応答から投稿データj_usernameとCookieを送信します。j_password
  5. ???

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クッキーを保存し、必要に応じてロードすることをシミュレートします。

関連情報