294

Wgetを使用してページをダウンロードしようとしていますが、ログイン画面を通過できません。

ログインページの投稿データを使用してユーザー名/パスワードを送信し、認証されたユーザーとして実際のページをダウンロードするにはどうすればよいですか?

4

11 に答える 11

376

マニュアルページに基づく:

# Log in to the server.  This only needs to be done once.
wget --save-cookies cookies.txt \
     --keep-session-cookies \
     --post-data 'user=foo&password=bar' \
     --delete-after \
     http://server.com/auth.php

# Now grab the page or pages we care about.
wget --load-cookies cookies.txt \
     http://server.com/interesting/article.php

--post-dataパラメータが適切にパーセントエンコードされていることを確認してください(特にアンパサンド!)。そうでない場合、リクエストはおそらく失敗します。また、userpasswordが正しいキーであることを確認してください。ログインページのHTMLを調べることで、正しいキーを見つけることができます(ブラウザの「要素の検査」機能を調べてname、ユーザー名とパスワードのフィールドで属性を見つけます)。

于 2009-09-16T10:25:16.883 に答える
99

ブラウザ経由でログインし、後で必要なヘッダーをコピーできます。

スクリーンショット

ブラウザ開発ツールの[ネットワーク]タブで[cURLとしてコピー]を使用し、curlのフラグ-Hをwgetのフラグに置き換えます--header(必要--data--post-data応じて)。

于 2016-06-12T23:35:31.647 に答える
71

wgetwithへの既存の接続--no-cookiesのCookieとCookieHTTPリクエストヘッダーを直接指定しました。私の場合、それはログインがより複雑に見えるMoodle大学のログインでした(ログインチケットで複数のリクエストを使用)。リクエスト--post-dataだったので追加しました。POST

たとえば、すべてのMoodleユーザーリストを取得します。

wget --no-cookies --header "Cookie: <name>=<value>" --post-data 'tab=search&name=+&personsubmit=Rechercher&keywords=&keywordsoption=allmine' https://moodle.unistra.fr/message/index.php
于 2014-05-04T10:00:30.953 に答える
30

私も同じ問題を抱えていました。私の解決策は、Chrome経由でログインし、Cookieデータをテキストファイルに保存することでした。これは、次のChrome拡張機能で簡単に実行できます:Chromecookie.txtエクスポート拡張機能

Cookieデータを取得すると、wgetでCookieを使用する方法の例もあります。簡単なコピーアンドペーストコマンドラインが提供されています。

于 2014-03-09T18:55:58.273 に答える
10

ファイルをダウンロードしないワンライナーが欲しかった。これは、Cookieの出力を次のリクエストにパイプする例です。私はGentooで以下をテストしただけですが、ほとんどの*nix環境で動作するはずです。

wget -q -O /dev/null --save-cookies /dev/stdout --post-data 'u=user&p=pass' 'http://example.com/login' | wget -q -O - --load-cookies /dev/stdin 'http://example.com/private/page'

(これは1行ですが、ブラウザで折り返される可能性があります)

出力をファイルに保存する場合は、次のように変更-O -します。-O /some/file/name.ext

于 2016-10-11T09:07:26.627 に答える
9

POSTされたフォームデータを実行するためにcURLは必要ありません。--post-data 'key1=value1&key2=value2'うまく動作します。注:ファイル名を渡して、ファイル内のPOSTデータを使用してwgetすることもできます。

于 2010-12-15T05:12:24.573 に答える
8

基本認証を使用している場合:

wget http://username:password@www.domain.com/page.html

POSTされたフォームデータを使用している場合は、代わりにcURLなどを使用する必要があります。

于 2009-08-24T20:08:39.780 に答える
7

lynxとwgetを使用するソリューション。

注:これを機能させるには、Lynxを--enable-persistent-cookiesフラグを使用してコンパイルする必要があります

ログインが必要なサイトからwgetを使用してファイルをダウンロードする場合は、Cookieファイルが必要です。クッキーファイルを生成するために、私はlynxを選択します。lynxはテキストウェブブラウザです。まず、Cookieを保存するためのlynxの構成ファイルが必要です。lynx.cfgファイルを作成します。これらの構成をファイルに書き込みます。

SET_COOKIES:TRUE
ACCEPT_ALL_COOKIES:TRUE
PERSISTENT_COOKIES:TRUE
COOKIE_FILE:cookie.file

次に、次のコマンドでlynxを起動します。

lynx -cfg=lynx.cfg http://the.site.com/login

ユーザー名とパスワードを入力し、[このPCで保存する]などを選択します。ログインに成功すると、サイトの美しいテキストWebページが表示されます。そして、あなたはログアウトします。現在のディレクトリには、cookie.fileという名前のCookieファイルがあります。これがwgetに必要なものです。

次に、wgetはこのコマンドを使用してサイトからファイルをダウンロードできます。

wget --load-cookies ./cookie.file http://the.site.com/download/we-can-make-this-world-better.tar.gz
于 2017-10-19T08:32:45.883 に答える
6

サーバー上のwgetを使用して、ブラウザーで取得できる大きなファイルリンクをダウンロードする例。

たとえば、GoogleChromeを使用しています。

必要な場所にログインし、ダウンロードを押します。リンクをダウンロードしてコピーします。

ここに画像の説明を入力してください

次に、ログインするページでDevToolsを開き、コンソールに移動して、次のように入力してCookieを取得します。document.cookie

ここに画像の説明を入力してください

次に、サーバーに移動してファイルをダウンロードします。wget --header "Cookie: <YOUR_COOKIE_OUTPUT_FROM_CONSOLE>" <YOUR_DOWNLOAD_LINK>

ここに画像の説明を入力してください

于 2018-04-13T09:24:02.767 に答える
0

このプラグインはFirefoxにインストールできます:https ://addons.mozilla.org/en-US/firefox/addon/cliget/?src = cb-dl-toprated必要なもののダウンロードを開始し、プラグインをクリックします。これは、wgetまたはcurlのいずれかがsererにファイルをダウンロードするためのコマンド全体を提供します。非常に簡単!

于 2020-10-23T20:54:30.543 に答える
0

私はこのクローム拡張機能を使用しています。開いたダウンロードリンクのwgetコマンドが表示されます。

于 2021-01-20T14:13:15.600 に答える