質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Q&A

解決済

1回答

1364閲覧

wgetでサイトを丸ごとダウンロードする際のログイン認証の方法

kenben

総合スコア17

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

0グッド

1クリップ

投稿2022/09/10 15:37

編集2022/09/10 15:38

あるサイトをwgetコマンドにて丸ごとダウンロードしようとしています。
https://linuxcommand.net/wget/#i-2
のサイトに、認証の際のクッキーを保存してからダウンロードすると認証した状態での保存が可能とありました。

調べてみると認証の際には
https://○○.com/api/loginという場所に
session:
email: "〇〇"
is_remember: false
password: "password"
としてPOSTしているようでしたので、下記のコードを書きましたが、ERROR 422: Unprocessable Entity.が返ってきてしまいます。
書き方が違うのでしょうか。

wget --keep-session-cookies --save-cookies=cookies.txt --post-data='email=〇〇&password=password&is_remember=false' https://〇〇.com/api/login

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ockeghem

2022/09/11 06:41

Content-Typeが間違っている、あるいはUser-Agentをチェックしているなどいくつか原因は思いつきますが、サイト名がわからないと当方で確かめようがないです。
kenben

2022/09/11 10:09

ありがとうございます。 対象は下記サイトです。 https://hashhub-research.com/ ログインしている無料会員が読める記事があり、それで試しているのですがなかなかうまくいかない状況です。
guest

回答1

0

ベストアンサー

コメントいただいたサイトのログイン処理を見てみましたが、結構難易度が高そうです。

エラーになっている原因は以下と思われます。半分あたりましたね。

  • CSRF対策のトークンチェックに引っかかっている
  • オリジナルのPOSTデータはJSON形式すなわちContent-Type: application/jsonだが、提示されたwgetコマンドはapplication/x-www-form-urlencoded となっている

CSRFトークンの付与は結構面倒です。Cookie CSRF-TOKENをパーセントデコードして、ヘッダX-Csrf-Tokenして付与してやる必要があります。参考にされた記事のように、いったん手動でログインして返ってきたCookieをセットした方が難易度は下がると思いますが、完全な自動化にはなりません。

投稿2022/09/12 12:48

ockeghem

総合スコア11701

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kenben

2022/09/13 14:42

ありがとうございます。 試しにFirefoxで手動でログインし、Cookies.txtというアドオンで取得したCookie.txtをセットしてみましたが、やはりログイン前の画面が取得されてしまいます。 使用したコマンド(user agentを変えたり、リファーを設定したりはしてみましたが、同様にだめでした。) wget -m -p -E -k -np --load-cookies=cookies.txt https://hashhub-research.com/articles/2022-08-16-nouns-dao-overview/ 半ば諦め気味ではありますが、もしお気づきの点などありましたらコメント頂ければ幸いです。
ockeghem

2022/09/13 22:11

お気づきの点はあるのですが、お伝えする手段が難しいですねぇ。このサイトはJavaScriptをフルに活用して作成されているので、wgetでダウンロードするのは難しいと思います。記事本文はJSONという形でダウンロードされるようです。
kenben

2022/09/16 12:54

そうなのですね・・・ 当方の力では難しそうですので諦めることにします。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問