web-dev-qa-db-ja.com

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

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

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

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

368
user61629

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

curl -L <URL>

630
Nathan Kuchta

私は同様の問題を抱えていました。私はそれがコメント投稿者の一人を助けるかもしれないと信じているので私はここに私の解決策を掲載しています。

私にとって障害は、そのページにログインが必要で、それから私に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>

23
user3817445

前述のように、 リダイレクトに従う あなたはフラグ-Lまたは--locationを使うことができます:

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

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

--max-redirs <num>

許可されるリダイレクト追跡の最大数を設定します。 -L--locationが使用されている場合、このオプションはcurlが "in absurdum"の中のリダイレクトをたどらないようにするために使用できます。デフォルトでは、制限は50リダイレクトに設定されています。このオプションを-1に設定すると、無限になります。このオプションを複数回使用すると、最後のオプションが使用されます。

3
freedev