ログインするとウィキペディアの一部が異なって表示されます。ユーザーページをwgetして、ログインしているように見せたいと思います。
このようなユーザーページを取得する方法はありますか
http://en.wikipedia.org/wiki/User:A
これはログインページです。
http://en.wikipedia.org/w/index.php?title=Special:UserLogin&returnto=Login&campaign=ACP3
ログインするとウィキペディアの一部が異なって表示されます。ユーザーページをwgetして、ログインしているように見せたいと思います。
このようなユーザーページを取得する方法はありますか
http://en.wikipedia.org/wiki/User:A
これはログインページです。
http://en.wikipedia.org/w/index.php?title=Special:UserLogin&returnto=Login&campaign=ACP3
回答:
最も簡単な方法:一般に、ログインしたかのようにページを取得するには、特定のWebサイトから(ログインした)Cookieをwgetまたはcurlに提供する必要があります。
Firefoxを使用している場合は、Cookieのエクスポートアドオンを使用して簡単に実行できます。アドオンをインストールします。
cookies.txt
ファイルを保存します(ファイル名/宛先を変更できます)。ターミナルを開きwget
、--load-cookies=FILENAME
オプションとともに使用します。例えば
wget --load-cookies=cookies.txt http://en.wikipedia.org/wiki/User:A
curl --cookie cookies.txt ...
(Chrome / Chromiumユーザー向けにこの回答を更新してみます)
--cookie-jar
--save-cookies --keep-session-cookies
grep mydomain cookies.txt > mydomain-cookies.txt
余分なものをインストールせずに私のために働いた別の簡単なソリューション:
これにより、シェルに直接貼り付けることができるコマンドが提供されます。これには、すべてのCookie認証情報が含まれます。
curl 'https://mysite.test/my-secure-dir/picture1.jpg' \
-H 'User-Agent: Mozilla/5.0 ...' \
-H 'Cookie: SESSIONID=abcdef1234567890'
その後、コマンド内のURLを変更して、必要なものを取得できます。
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でレンダリングできません。ソースコードを取得するだけです。
-X
パラメーターは「do post」を表しますが、使用--data=xxx
-X
は暗黙的であるため、確実に削除できます。
-b
はread cookie
まだこの質問に興味がある人のために、CurlWGetと呼ばれる非常に便利なChrome拡張機能があり、ワンクリックで認証手段などのwget
/ curl
リクエストを生成できます。この拡張機能をインストールするには、次の手順を実行します。
楽しい!
ブログ投稿のWget with Firefox Cookiesは、FirefoxがCookieを保存するsqliteデータファイルにアクセスする方法を示しています。そうすれば、wgetで使用するためにCookieを手動でエクスポートする必要がなくなります。コメントは、セッションCookieでは機能しないことを示唆していますが、試してみたサイトでは正常に機能しました。
これを試しましたか?
wget --user=username --password=password http://en.wikipedia.org/wiki/User:A
次のようなものを試してください:
wget --keep-session-cookies --save-cookies cookies.txt --post-data 'user=goyamy&passwrd=mypassword' http://forum.ubuntu-it.org/
こちらのリンクもご覧ください:
> filename.html
出力を現在のディレクトリに保存するか、完全なファイルパスを配置するために使用します。これは、LinuxシステムとWindowsシステムの両方に適用されます。
より複雑なWebサイトベースのログインの場合、Pythonスクリプトと、またはの代わりにhttp://wwwsearch.sourceforge.net/mechanize/のようなブラウザを模倣するモジュールの使用を検討する必要があります。curl
wget
これにより、セッションCookieが自動的に処理され、リンクをたどってログインフォームに入力できるので、Webブラウザを使用しているかのようにログインプロセスを自分で「スクリプト化」できます。