tweeeetyのぶろぐ的めも

アウトプットが少なかったダメな自分をアウトプット<br>\(^o^)/

短縮URLをcrulで叩くときに301のリダイレクトになったりする時の対処法

はじめに

リダイレクトしているようなコンテンツを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^)/