コマンドラインcURLでリダイレクトを追跡する方法はありますか?


456

私はそれをphpスクリプトで知っています:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

リダイレクトに従います。コマンドラインcURLでリダイレクトを追跡する方法はありますか?

回答:


763

ロケーションヘッダーフラグを使用します。

curl -L <URL>


1
これは、スプレッドシートにアクセスするためのGoogleでの認証でも機能しません。:/
fatuhoku 2014年

13
man curl:「認証が使用される場合、curlは資格情報を初期ホストにのみ送信します。<...>これを変更する方法については--location-trustedも参照してください。」
hudolejev 2014年

25

同様の問題がありました。私はそれがコメンターの1人を助けるかもしれないと思うので、ここに私の解決策を投稿しています。

私にとっての障害は、ページがログインを必要とし、JavaScriptを介して新しいURLを提供してくれることでした。これが私がしなければならなかったことです:

curl -c cookiejar -g -O -J -L -F "j_username=yourusename" -F "j_password=yourpassword" <URL>

j_usernameとj_passwordは、私のWebサイトのログインフォームのフィールドの名前です。ユーザー名フィールドの「名前」とパスワードフィールドの「名前」が何であるかを確認するには、Webページのソースを開く必要があります。その後、新しいURLが埋め込まれたjavaスクリプトを含むhtmlファイルに移動します。これを解析したら、新しいURLで再送信します。

curl -c cookiejar -g -O -J -L -F "j_username=yourusename" -F "j_password=yourpassword" <NEWURL>


15

前述のように、リダイレクトを追跡するには、フラグを使用する-L--location

curl -L http://www.example.com

ただし、リダイレクトの数を制限する場合は、パラメータを追加します--max-redirs

--max-redirs <num>

許可されるリダイレクトの最大数を設定します。が使用されている場合-L--locationこのオプションを使用して、curlが「不条理」なリダイレクトを行わないようにすることができます。デフォルトでは、制限は50リダイレクトに設定されています。このオプションを-1に設定すると、制限がなくなります。このオプションを複数回使用すると、最後のオプションが使用されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.