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


46

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

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

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

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

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


Google Chrome + cURLを使用した簡単なソリューションについては、stackoverflow.com
a / 21919431/1136018

回答:


50

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

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

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

  1. [ ツール... Cookieのエクスポート]に移動して、cookies.txtファイルを保存します(ファイル名/宛先を変更できます)。
  2. ターミナルを開きwget--load-cookies=FILENAMEオプションとともに使用します。例えば

    wget --load-cookies=cookies.txt http://en.wikipedia.org/wiki/User:A
    • 以下のためにカール、それはですcurl --cookie cookies.txt ...

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

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

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

1
いいヒント。多くの場合、モバイルサイトのコードはかなりクリーンです。
いとこコカイン

4
このようなcookies.txtはどのように見えますか?
フレデリックノール

この「Cookieのエクスポート」アドオンは、FirefoxでアクセスしたすべてのサイトのCookieを含むCookieファイルを作成しました。したがって、この回答に従えば、ヒットしているサイトにすべてのCookieを提示することになります。私はこれをこの答えのセキュリティ上の欠陥と考えています。次を使用して、この問題を簡単に回避できます grep mydomain cookies.txt > mydomain-cookies.txt
。– erik.weathers


FirefoxのCookie Managerアドオンを使用して、選択したCookieのみをエクスポートできます。
ハンスGinzel

7

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

これにより、シェルに直接貼り付けることができるコマンドが提供されます。これには、すべてのCookie認証情報が含まれます。

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

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


4

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

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

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

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

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

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


1
-Xパラメーターは「do post」を表しますが、使用--data=xxx -Xは暗黙的であるため、確実に削除できます。
erm3nda

-bread cookie
ティモ

3

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

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

楽しい!


2

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


2

Firefoxのcligetご覧ください。

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


1

これを試しましたか?

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

はい-残念ながら機能しませんでした=(
user784637

6
注:この構文は、Webページベースの認証ではなく、基本的なHTTP認証(ブラウザが特別な[ユーザー名/パスワード]ダイアログボックスを表示する場所)でのみ機能します。
っぽい

基本的なHTTP認証URL形式はadmin:admin@www.url.comですが、@ izxが言っているように、基本的なHTTPはブラウザの機能であり、PHPプログラミングでもコードでもありません。いつかhtaccessで保護されたURLにアクセスする必要がある場合は、そのモードを使用できます; D
erm3nda

私は降格しませんでしたが、これは認証するのに良い方法ではありません。もしあなたが偶然そのようなスクリプトを公開すると、人々はあなたのパスワードを使うことができます。
ウィレムヴァンOnsem 14年

1
downvotesとは何ですか?キャッチオールアンサーではなく、アンサーかもしれません。
オーバーコード

1

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

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

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

wgetでこのWebページをダウンロードする方法は?


他の出力と同じです。> filename.html出力を現在のディレクトリに保存するか、完全なファイルパスを配置するために使用します。これは、LinuxシステムとWindowsシステムの両方に適用されます。
erm3nda

そのため、wgetにはcURLやその逆のような多くの機能があることがわかります。POSTを実行できるため、Webサイトにログインできます。面白い。
erm3nda

1

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

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


ええ、mechanizeを使うのは本当にいいことです。また(もし元々)Perlで利用可能です。
-andol
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.