スポンサーリンク

このドキュメントの内容は、以下の通りです。

はじめに

ウェブサイトでは、ページを移動したときに、HTTPの機能のリダイレクトを利用して、利用者を新しいURLへ誘導することができます。ほとんど、利用者が気づかないうちに、ブラウザは新しいURLのページに移動して、利用者はコンテンツを目にしていると思います。

リダイレクトは、いくつかの目的で利用されます。例を以下に挙げます。
  • ページを移動させた
  • トラッキングがしたい
Linux/FreeBSD/Mac/Windowsなどのさまざまな環境で、ウェブサイトに対して、ブラウザ以外のコマンドを利用して、HTTPリクエストを送信することがあります。そのうちの1つが、 curl コマンドです。

リダイレクトの仕組み

クライアントをリダイレクトする場合には、HTTPヘッダを利用する場合とHTMLのタグやJavaScriptを利用するパターンなどがあります。
HTTPプロトコルでリダイレクトを行う場合には、HTTPレスポンスのLocationヘッダを利用して、リダイレクトを行います。

以下は、 facebook にアクセスした例です。 http でアクセスしたら、 Location ヘッダで、 https のサイトにリダイレクトされました。

$ curl -I http://www.facebook.com/
HTTP/1.1 302 Found
Location: https://www.facebook.com/
Content-Type: text/html; charset="utf-8"
X-FB-Debug: ...
Date: Sat, 30 May 2020 14:08:09 GMT
Alt-Svc: h3-27=":443"; ma=3600
Connection: keep-alive
Content-Length: 0

このように、利用者をリダイレクトするときに、Location ヘッダが利用されます。

開きたくないURLはブラウザ以外で開く

URL が送られてきたときに、不用意に開きたくないケースがあります。 Twitter とかでメッセージとしてよくわからない人からメッセージを受信したときとか、スパムっぽいメールとかあやしいメールのURLとかです。

ウイルスやマルウェアに感染させられそう、とか、そういったことが心配でなりません。 ブラウザ開くのは、怖いです。すでに世の中から消えているかもしれない Adobeの作った Flash や サン/オラクル のJava といったプラグイン達は、脆弱です。 サイバー攻撃は、zero day 攻撃を利用して行われます。

ただ、そういう状況においても、URLを開いて、中身を確認する必要があるかもしれません。

Windows で開くのは、はばかられるので、そういうときには、 FreeBSD など Unix OSのコマンドラインから確認します。そのときに使うのが、curl コマンドを利用します。

リダイレクトURLがリダイレクトURLを返すことがある

直接開きたくない例として、リダイレクト URL があります。リダイレクトURLは、いったい、どこのサイトに連れていかれるかわからないため、開きたくないということです。ですが、一般的に、リダイレクトURLは、広く使われています。多段リダイレクトが利用されることもあり、リダイレクトURLがさらにリダイレクトURLにリダイレクトされることもあります。リダイレクトの入れ子構造の場合、1つ1つ解決していくのは、面倒です。

curlコマンドでリダイレクトを追従する

curlコマンドには、リダイレクトを追従するオプションがあります。それは、 -L オプションです。

リダイレクトをたどる例

curl コマンドでリダイレクトを辿ってみます。
URL は、適当ですので、気にしないでください。

% curl -L -I 'http://t.co/foo'
HTTP/1.1 301 Moved Permanently
Date: Sat, 02 Feb 2013 14:27:38 GMT
Location: http://bit.ly/bar
Cache-Control: private,max-age=300
Expires: Sat, 02 Feb 2013 14:32:38 GMT
Content-Length: 0
Set-Cookie: k=XXXXX; path=/; expires=Sat, 09-Feb-2013 14:27:38 UTC; domain=.co; httponly
Server: tfe
Connection: close

HTTP/1.1 301 Moved
Server: nginx
Date: Sat, 02 Feb 2013 14:27:39 GMT
Content-Type: text/html; charset=utf-8
Connection: keep-alive
Set-Cookie: _bit=XXX;domain=.bit.ly;expires=Thu Aug  1 14:27:39 2013;path=/; HttpOnly
Cache-control: private; max-age=90
Location: http://hoge.com/
MIME-Version: 1.0
Content-Length: 119

...


おわりに

このように、curlコマンドであっても、リダイレクトに追従することが可能です。ただし、 JavaScript でリダイレクトするようなケースについては、対応できません。

また、本件とは、無関係ですが、 t.co と bit.ly Ha, httponly フラグを利用してますね。

スポンサーリンク
スポンサーリンク
 
いつもシェア、ありがとうございます!


もっと情報を探しませんか?

関連記事

最近の記事

人気のページ

スポンサーリンク
 

過去ログ

2020 : 01 02 03 04 05 06 07 08 09 10 11 12
2019 : 01 02 03 04 05 06 07 08 09 10 11 12
2018 : 01 02 03 04 05 06 07 08 09 10 11 12
2017 : 01 02 03 04 05 06 07 08 09 10 11 12
2016 : 01 02 03 04 05 06 07 08 09 10 11 12
2015 : 01 02 03 04 05 06 07 08 09 10 11 12
2014 : 01 02 03 04 05 06 07 08 09 10 11 12
2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12

サイト

Vim入門

C言語入門

C++入門

JavaScript/Node.js入門

Python入門

FreeBSD入門

Ubuntu入門

セキュリティ入門

パソコン自作入門

ブログ

トップ


プライバシーポリシー