xyz.com/a
とxyz.com/b
の2つのページがあります。最初にxyz.com/b
にログインした場合にのみ、xyz.com/a
にアクセスできます。他を経由せずにxyz.com/b
にアクセスする場合、ブラウザを介してアクセスが拒否されます(ログインへのリダイレクトは行われません)。 xyz.com/a
でログインすると、もう一方にアクセスできます。
私の問題は、curlコマンドを使用してこれを行うことです。 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サイトは、おそらくセッション情報を保存するために cookies を使用します。走るとき
curl --user user:pass https://xyz.com/a #works ok
curl https://xyz.com/b #doesn't work
curl
は、2つの別々のセッションで2回実行されます。したがって、2番目のコマンドを実行すると、1番目のコマンドで設定されたCookieは使用できません。あるブラウザセッションでページa
にログインし、別のブラウザセッションでページb
にアクセスしようとしたかのようです。
あなたがする必要があるのは、save最初のコマンドで作成されたクッキーです:
curl --user user:pass --cookie-jar ./somefile https://xyz.com/a
そして、2番目を実行するときにそれらを読み戻します。
curl --cookie ./somefile https://xyz.com/b
あるいは、同じコマンドで両方のファイルをダウンロードしてみてください。同じCookieを使用すると思います。
また、ブラウザ経由でログインし、Cookieを含むすべてのヘッダーでコマンドを取得することもできます。
開発者ツールの[ネットワーク]タブを開き、ログインして、必要なページに移動し、[cURLとしてコピー]を使用します。
いくつかのグーグル検索の後、私はこれを見つけました:
curl -c cookie.txt -d "LoginName=someuser" -d "password=somepass" https://oursite/a
curl -b cookie.txt https://oursite/b
うまくいくかどうかはわかりませんが、正しい方向に導くかもしれません。