web-dev-qa-db-ja.com

ログインしているサイトからwget / curlを使用してダウンロードするにはどうすればよいですか?

ログインするとウィキペディアの一部の表示が異なります。ユーザーページをwgetして、ログインしているかのように表示したいと思います。

このようなユーザーページを取得する方法はありますか

http://en.wikipedia.org/wiki/User:A

これはログインページです。

http://en.wikipedia.org/w/index.php?title=Special:UserLogin&returnto=Login&campaign=ACP3
44
user784637

簡単な方法:ブラウザでログインし、Cookieをwgetに渡します

最も簡単な方法:一般に、特定のWebサイトからの(ログイン)Cookieをwgetまたはcurlに提供する必要がありますログインしたかのようにページを取得します。

Firefoxを使用している場合は、 Export Cookies アドオンを使用して簡単に実行できます。アドオンをインストールします。

  1. Tools ... Export Cookiesに移動し、cookies.txtファイルを保存します(ファイル名/宛先を変更できます)。
  2. ターミナルを開き、wget--load-cookies=FILENAMEオプションとともに使用します。

    wget --load-cookies=cookies.txt http://en.wikipedia.org/wiki/User:A
    
    • curlの場合、curl --cookie cookies.txt ...

(Chrome/Chromiumユーザー向けにこの回答を更新します)

難しい方法:curl(できれば)またはwgetを使用してセッション全体を管理する

  • 詳細なハウツーはこの答えの範囲を超えていますが、curl--cookie-jarまたはwgetとともに使用します--save-cookies --keep-session-cookiesoptionsと、HTTP/S PUTメソッドを使用してサイトにログインし、ログインCookieを保存してから、それらを使用してブラウザーをシミュレートします。
  • 言うまでもなく、これにはログインページのHTMLソースを入力する必要があり(入力フィールド名などを取得する)、単純なログイン/パスワード認証以外のものを使用するサイトで作業するのが難しい場合があります。
  • ヒント:このルートに行くと、多くの場合、mobileバージョンの処理がはるかに簡単です少なくとも認証ステップ用のWebサイト(利用可能な場合)。
48
ish

余分なものをインストールせずに私のために働いた別の簡単なソリューション:

  • "Web Developer" ツールの「ネットワーク」タブを開く:Ctrl-Shift-E
  • 保存したいページにアクセスします(例えば、ログインの背後にある写真)
  • リクエストを右クリックして 'Copy'-> 'Copy as cURL' を選択します

これにより、シェルに直接貼り付けることができるコマンドが提供されます。

curl 'https://mysite.test/my-secure-dir/picture1.jpg' \ 
-H 'User-Agent: Mozilla/5.0 ...' \
-H 'Cookie: SESSIONID=abcdef1234567890'

その後、コマンド内のURLを変更して、必要なものを取得できます。

5
BlackShift

CURLを使用すると、両方の方法でCookieを簡単に処理できます。

curl www.target-url.com -c cookie.txtは、cookie.txtという名前のファイルを保存します。ただし、ログインする必要があるため、curl -X --data "var1=1&var2=2" www.target-url.com/login.php -c cookie.txtのような引数を指定して--dataを使用する必要があります。 loggued Cookieを取得したら、curl www.target-url.com/?user-page.php -b cookie.txtで送信できます。

保存して送信するには、-c(--cookie)または-b(--cookie-jar)を使用します。

注1:cURL CLIの使用はPHPよりはるかに簡単で、おそらくより高速です;)

最終コンテンツを保存するには、cURLコマンドに> filename.htmlを簡単に追加し、完全なhtmlコードを保存します。

「フル」に関する注2:YoはcURLでJavaScriptをレンダリングできません。ソースコードを取得するだけです。

4
erm3nda

この質問にまだ興味がある人のために、wget/curlリクエストを生成できるCurlWGetと呼ばれる非常に便利なChrome拡張がありますワンクリックで認証手段などを使用できます。この拡張機能をインストールするには、次の手順を実行します。

  1. Chrome Webstore から拡張機能をインストールします。
  2. ダウンロードするWebページに移動します。
  3. ダウンロードを開始します。
  4. 拡張機能により、リンクが生成されます。

楽しい!

3
jehon

firefoxの cliget をご覧ください。

ダウンロードしようとすると、最終的なダウンロードダイアログで、ダウンロードをcurlコマンドラインとしてクリップボードにコピーするオプションが表示されます。

2
weberjn

ブログ投稿 Wget with Firefox Cookies は、FirefoxがCookieを保存するsqliteデータファイルにアクセスする方法を示しています。そうすれば、wgetで使用するためにCookieを手動でエクスポートする必要がなくなります。コメントは、セッションCookieでは機能しないことを示唆していますが、試してみたサイトでは正常に機能しました。

2
Falko Menge

次のようなものを試してください:

wget --keep-session-cookies --save-cookies cookies.txt --post-data 'user=goyamy&passwrd=mypassword' http://forum.ubuntu-it.org/

こちらのリンクもご覧ください。

wgetを使用してこのWebページをダウンロードする方法

1
kenorb

より複雑なWebサイトベースのログインの場合は、代わりにPythonスクリプトと http://wwwsearch.sourceforge.net/mechanize/ のようなブラウザを模倣するモジュールの使用を検討する必要があります。 curlまたはwgetの。

これにより、セッションCookieが自動的に処理され、リンクをたどってログインフォームに入力できるので、Webブラウザを使用しているかのようにログインプロセスを自分で「スクリプト化」できます。

1
StW

これを試しましたか?

wget --user=username --password=password http://en.wikipedia.org/wiki/User:A
1
Corey Whitaker