ショートURLサービスはどのように機能しますか?


105

TinyURLMetamarkなどのサービスはどのように機能しますか?
小さなURLキーを、元のURLへの「HTTPリダイレクト」を提供する[仮想?] Webページに関連付けるだけですか?それとももっと「魔法」がありますか?

[元の表現]私はTinyURLやMetamarkなどのURL短縮サービスをよく使用していますが、使用するたびに、これらのサービスがどのように機能するのか疑問に思います。別のページにリダイレクトする新しいファイルを作成しますか、それともサブドメインを使用しますか?


1
[非]質問を言い換えると、「TinyURLのようなサービスはどのように機能しますか?元のURLへの "HTTPリダイレクト"を提供するだけの小さなURLキーを[仮想?] Webページに関連付けるだけですか?これはあなたですか?質問していますか?
mjv

1
短縮されたURLが期限切れになることはありますか?(つまり、それらのURLのデータベースエントリはサーバーから削除されます)
thd

2
@thd:はい。ただし、(毎日の)ヒットと短いURLサービスプロバイダーのポリシーに依存する場合があります。彼らはまた、無期限を許可するかもしれません。
2011年

回答:


224

いいえ、ファイルを使用しません。そのようなリンクをクリックすると、httpリクエストがhttp://bit.ly/duSk8wK(この質問へのリンク)のような完全なURLでサーバーに送信されます。彼らはduSk8wK自分のデータベースにマップするパス部分(ここ)を読み取ります。彼らはデータベースで、説明(時々)、あなたの名前(時々)、そして実際のURLを見つけます。次に、リダイレクトを発行します。これは、HTTP 302応答とヘッダー内のターゲットURLです。

この直接リダイレクトは重要です。ファイルを使用するか、最初にHTMLをロードしてからリダイレクトすると、ブラウザーは履歴にTinyUrlを追加しますが、これは望ましいことではありません。また、リダイレクト先のサイトには、リファラー(元のサイト)がTinyUrlリンクが存在するサイト(つまり、twitter.com、自分のサイト、リンクがある場所)であると表示されます。これも同様に重要なので、サイトの所有者は人々がどこから来ているのかを確認できます。これも、リダイレクトするページが読み込まれると機能しません。

PS:より多くのタイプのリダイレクトがあります。HTTP 301は、永続的なリダイレクトを意味します。それが発生した場合、ブラウザーはもうbit.lyまたはTinyUrlサイトを要求せず、それらのサイトはヒット数をカウントする必要があります。これが、一時的なリダイレクトであるHTTP 302が使用される理由です。ブラウザは毎回TinyUrl.comまたはbit.lyに問い合わせます。これにより、ヒット数をカウントすることができます(一部の小さなURLサービスがこれを提供しています)。


2
実際、Bit.lyは302ではなくHTTP 301(最後に聞いた話)を使用していると思います
Kenny Cason

1
bit.lyではURLの1つが指す場所を変更できないので、301は理にかなっています。bit.lyのバージョンを覚えて再確認する必要はありません。
Joost Schuur、2010

11
@KennyCason / @Joost Schuur:確かに、タイムスタンプとともに使用されるのはHTTP 301です。これはそれをMovednotに変えMoved Permanentlyます。これは微妙な違いです。タイムスタンプを追加することにより、ブラウザは、このタイムアウトに達したときにリソースが変更されたかどうかを確認する必要があると見なします。is.gdなどの他のものは通常の方法を使用し301 Moved Permanently、ブラウザは再チェックする必要はありません(多くの場合そうします)。最後に、url4.euのようなサービスはまったくリダイレ​​クトしませんが、最初に広告を表示します。301を使用しても、サービスはユニークビジターをカウントできますが、すべてのヒットをカウントできるわけではありません。
Abel

6
サンプルのビットリーURLは実際のものになり、実際にはこの質問にリダイレクトされます;-) 情報ページについては、bitly.com / duSk8wK +を参照してください。
ロナルド

1
@コスタ:クリックをカウントする方法はたくさんありますが、ネットワークカードIDを追跡している可能性があります。これは、同じコンピューターからのリクエストかどうかを追跡する方法です。そのIDを偽造したり変更したりすることは可能ですが、絶対確実というわけではありません。また、以前に設定され、別のブラウザーで同じユーザーに設定されたサードパーティのCookieを追跡または使用する可能性があります。これは、すべてのセッションデータを消去し、匿名ブラウザーを使用して確認できます。
アベル

110

他の人はリダイレクトがどのように機能するかについて答えましたが、あなたは彼らが彼らの小さなURLをどのように生成するかについても知っているべきです。短縮されたURLに固有のコードを生成するために、URLのハッシュを作成すると誤って聞いたことがあるでしょう。これはほとんどの場合正しくありません。ハッシュアルゴリズムを使用していません(衝突が発生する可能性がある場合)。

一般的なURL短縮サービスのほとんどは、URLのデータベース内のIDを取得し、それをBase 36 [a-z0-9](大文字と小文字を区別しない)またはBase 62(大文字と小文字を区別する)に変換します。

TinyURLデータベーステーブルの簡単な例:

ID       URL                           VisitCount
 1       www.google.com                        26
 2       www.stackoverflow.com               2048
 3       www.reddit.com                        64
...
 20103   www.digg.com                         201
 20104   www.4chan.com                         20

柔軟なルーティングを可能にするWebフレームワークにより、着信URLの処理が非常に簡単になります(Ruby、ASP.NET MVCなど)。

したがって、Webサーバー上に次のようなルートアクションがある(疑似コード):

Route: www.mytinyurl.com/{UrlID}
Route Action: RouteURL(UrlID);

これにより、ドメインwww.mytinyurl.comの後にテキストが含まれる受信リクエストがサーバーにルーティングされ、関連するメソッドRouteURLにルーティングされます。これは、URLのスラッシュの後に渡されるテキストをそのメソッドに提供します。

だから、あなたが要求したとしましょう:www.mytinyurl.com/fif

次に「fif」がメソッドRouteURL(String UrlID)に渡されます。次に、RouteURLは "fif"を対応するbase10 20103に変換し、データベース要求がID 20103(この場合はwww.digg.com)に保存されているURLにリダイレクトするように作成されます。また、正しいURLにリダイレクトする前に、Diggの訪問数を1つ増やします。

これは非常に単純化された例ですが、一般的な考え方を理解できるはずです。


12
素敵な説明をありがとう。では、誰かが既存の長いURLの短いURLを作成しようとするとどうなるでしょうか。データベースで全文検索を実行していますか?時間がかかりすぎるのでそうは思いません。ハッシュまたはメッセージダイジェストベースのアプローチの方が実用的です。
Piyush Kansal 2013年

@PiyushKansalでは、内部的にハッシュを使用して、O(1)重複を見つけるためのルックアップを実行できます。その後、既存の小さなURLをルーティングするか、新しいURLを生成することもできます。私の知る限りgoo.gl、同じURLの小さなURLを再利用しています。このページのあなたの側でこれを試してください:あなたはこれを手に入れgoo.gl/8gVb8Xますか?
Kingz

彼らはどのようにURLパラメータを処理しますか?例:www.digg.com?filter
Ronen

7

@A Salcedoの回答の拡張として:

一部のURL短縮サービス(Tinyarro.ws)は、Unicode(UTF-8)を使用して文字を短縮URLにエンコードすることで極端になり、追加の記号を追加する前に、より多くのWebサイトを許可します。ほとんどのUTF-8は、シンボルごとのサイトから〜にぶつかる((IRI)RFC 3987がほとんどのブラウザーで処理される)使用が許可されているためです。621,112,064

全体を見ると、1.2366863e + 12のサイトを2つの記号(1,112,064*1,112,064)でエンコードできます-2009年11月に、短縮されたリンクに10億回bit.lyアクセスされ2.1ました(その頃、bit.lyとTinyURLが最も広く使用されているURL短縮サービスでしたこれは、2つのシンボルに収まるよりも600倍少ないため、すべてのURL短縮サービスが存続している間は、3番目のシンボルを追加するまで最低20年間は継続する必要があります。


5

簡単に言うと、URL短縮プログラムは、任意の長い文字のシーケンス(元の長いゆるいurl)を短く滑らかな文字のシーケンスにマップします。これはハッシュにすぎません。ハッシュは、ルックアップテーブル、HashMap、md5ハッシュを暗号化の目的で作成するために最も一般的に使用されます。

URL短縮プロセスを理解するために、GitHubでデモプロジェクトとブログ投稿を作成しました。これを参照して、役に立ったかどうかをお知らせください。

ブログ投稿:URL短縮

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