1. ホーム
  2. linux

[解決済み] ログインが必要なページに別ページからアクセスするためのCURL

2022-05-27 18:25:48

質問

2つのページがあります。 xyz.com/axyz.com/b . にしかアクセスできません。 xyz.com/b にログインした場合のみ xyz.com/a に最初にアクセスします。もし xyz.com/b を経由せずにアクセスすると、ブラウザ経由で単にアクセス拒否されます(ログインへのリダイレクトはありません)。一旦、私が xyz.com/a でログインすると、もう一方にアクセスできるようになります。

私の問題は、curlコマンドを使用してこれを行うことです。私は正常にログインすることができます xyz.com/a にログインできますが、その後 xyx.com/b を実行すると、アクセスが拒否されます。

私は以下のように使っています。

curl --user user:pass https://xyz.com/a  #works ok
curl https://xyz.com/b #doesn't work

2行目を&でユーザー/パスワードの部分を除いて使ってみましたが、まだうまくいきません。どちらのページも同じCAを使用しているので、問題はありません。何か提案はありますか?ありがとうございます。

どのように解決するのですか?

このWebサイトでは、おそらく クッキー を使用して、セッション情報を保存しています。あなたが

curl --user user:pass https://xyz.com/a  #works ok
curl https://xyz.com/b #doesn't work

curl は2つの別々のセッションで、2回実行されます。したがって、2番目のコマンドが実行されたとき、1番目のコマンドによって設定されたクッキーは利用できません; それはあたかもあなたがページにログインして a にログインし、ページ b にアクセスしようとしました。

必要なのは 保存する で、最初のコマンドで作成されたクッキーを保存します。

curl --user user:pass --cookie-jar ./somefile https://xyz.com/a

を実行し、2回目を実行するときにそれらを読み込む。

curl --cookie ./somefile https://xyz.com/b

あるいは、同じコマンドで両方のファイルをダウンロードしてみることもできます。この場合、同じクッキーを使うことになると思います。