139

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

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

私は以下を使用します:

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

ユーザー/パスワード部分なしで&を使用して2行目を使用しようとしましたが、まだ機能しません。どちらのページも同じ CA を使用しているため、問題はありません。助言がありますか?ありがとう

4

4 に答える 4

167

この Web サイトでは、 Cookieを使用してセッション情報を保存している可能性があります。走るとき

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

curl2 つの別々のセッションで 2 回実行されます。したがって、2 番目のコマンドが実行されると、1 番目のコマンドによって設定された Cookie は使用できなくなります。あるブラウザ セッションでページにログインし、別aのブラウザ セッションでページにアクセスしようとしbたのと同じです。

最初のコマンドで作成された Cookieを保存する必要があります。

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

次に、2番目の実行時にそれらを読み戻します。

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

または、同じコマンドで両方のファイルをダウンロードすることもできます。これは、同じ Cookie を使用すると思います。

于 2012-09-13T03:53:18.713 に答える
54

いくつかのグーグルの後、私はこれを見つけました:

curl -c cookie.txt -d "LoginName=someuser" -d "password=somepass" https://oursite/a
curl -b cookie.txt https://oursite/b

それが機能するかどうかはわかりませんが、正しい方向に導く可能性があります。

于 2012-09-13T03:45:52.427 に答える