はじめに
リダイレクトしているようなコンテンツをcurlを使って取得したい場合に
以下のように301になってしまうので、リダイレクト先のコンテンツを取得したいときのメモです。
$ curl http://urx.mobi/GMSp <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>301 Moved Permanently</title> </head><body> <h1>Moved Permanently</h1> <p>The document has moved <a href="http://urx.nu/GMSp?h=urx.mobi">here</a>.</p> <hr> <address>Apache Server at urx.mobi Port 80</address> </body></html>
短縮URLということ自体は直接的に関係ない話しですが、
短縮URLを使うとリダイレクトされるのでその一例ということで。
どうやるか
やりかたは簡単でオプションとして-Lを指定するだけです。
$ curl -L
help/man
helpとmanの説明も載せておくとこんな感じでした。
# -Lのところだけ抜粋
$ curl -h
-L, --location Follow redirects (H)
--location-trusted like --location and send auth to other hosts (H)
# -Lのところだけ抜粋
$ curl --man
-L, --location
(HTTP/HTTPS) If the server reports that the requested page has
moved to a different location (indicated with a Location: header
and a 3XX response code), this option will make curl redo the
request on the new place. If used together with -i, --include or
-I, --head, headers from all requested pages will be shown. When
authentication is used, curl only sends its credentials to the
initial host. If a redirect takes curl to a different host, it
won't be able to intercept the user+password. See also --loca-
tion-trusted on how to change this. You can limit the amount of
redirects to follow by using the --max-redirs option.
When curl follows a redirect and the request is not a plain GET
(for example POST or PUT), it will do the following request with
a GET if the HTTP response was 301, 302, or 303. If the response
code was any other 3xx code, curl will re-send the following
request using the same unmodified method.
おわり
こんな単純なことでもまだまだ知らないことがありますね\(^o^)/