如何做短网址服务工作?如何做短网址服务工作?(How do short URLs services

2019-05-12 16:41发布

如何像服务TinyURL的或METAMARK工作?
难道他们只是用[虚?]网页这仅仅是提供一个“HTTP重定向”到原来的URL微小的URL钥匙联系起来? 或者是有更多的“魔力”呢?

[原创措辞]我经常使用网址缩短喜欢TinyURL的,METAMARK和其他服务,但我每次做的时候,我不知道这些服务是如何工作的。 难道他们创建一个新的文件,将重定向到另一页或他们使用子域名?

Answer 1:

不,他们不使用的文件。 当你点击这样的链接,一个HTTP请求被发送到他们的服务器的完整URL,如http://bit.ly/duSk8wK链接(这个问题)。 他们阅读的路径部分(这里duSk8wK ),这映射到他们的数据库。 在数据库中,他们发现的描述(有时),您的姓名(有时)和真实的URL。 然后,他们发出重定向,这是一个HTTP 302响应并在报头中的目标URL。

这种直接重定向是很重要的。 如果你使用的文件或第一次加载HTML,然后重定向,浏览器将添加TinyURL的的历史,这是不是你想要的。 同样,被重定向到会看到引用(您最初来自网站)作为该网站的链接TinyURL的网站上(即twitter.com,您自己的网站,只要该链接)。 这是同样重要的,这样网站所有者可以看到那里的人都来自哪里。 如果一个页面被加载重定向这也行不通。

PS:还有更多类型的重定向。 HTTP 301是指:永久重定向。 如果这会发生,浏览器不会请求bit.ly或TinyURL的网站再和这些网站要算命中。 这就是为什么HTTP 302被使用,这是一个临时重定向。 浏览器会再次询问TinyUrl.com或Bit.ly的每一次,这使得它可以统计的点击你(一些微小的URL服务提供了这一点)。



Answer 2:

其他人回答了重定向是如何工作的,但你也应该知道他们是如何生成他们的小网址。 你会误听说他们在以产生用于缩短URL是唯一的代码创建URL的哈希值。 这是在大多数情况下不正确,他们不使用散列算法(如你可能有冲突)。

最流行的URL缩短服务简单地采取的ID中的URL的数据库中,然后将其转换为任一底座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框架,允许灵活的路由使操作输入网址很容易(红宝石,ASP.NET MVC等)。

所以,在你的网络服务器,你可能有一个路由操作,看起来像(伪代码):

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

哪些航线任何传入的请求到服务器有你的相关方法,RouteURL域www.mytinyurl.com后的任何文本。 它提供了在你的URL给该方法通过在正斜杠后面的文本。

所以,让我们说你的要求:www.mytinyurl.com/fif

“FIF”将被传递给你的方法,RouteURL(URLID字符串)。 然后RouteURL将“FIF”转换为它的base10相当于20103和数据库请求将进行重定向到URL无论是ID 20103下保存(在这种情况下,www.digg.com)。 您也将通过一个重定向到正确的URL之前增加对Digg的访问计数。

这是一个非常简单的例子,但你应该能够得到的总体思路。



Answer 3:

作为扩展@A萨尔塞多的答案:

这使得不必增加额外的符号之前高量的网站 - 通过使用Unicode(UTF-8)编码在缩短的URL字符某些URL缩短服务(Tinyarro.ws)到极致。 由于大多数的UTF-8是接受使用 ( (IRI)RFC 3987大多数浏览器处理 ),从凸块62每个符号网站〜 1,112,064

要正确看待一个能够编码1.2366863e + 12位点与2个符号( 1,112,064*1,112,064 ) - 2009年11月,在缩短的链接bit.ly被访问2.1十亿次( 大约在那个时候,bit.ly和TinyURL的是最广泛常用的网址缩短服务。 )这是〜小于你能适应在短短的2个符号,所以对于所有的网址缩短服务的存在的整个持续时间应该持续20年最低,直到加入第三个符号600倍。



Answer 4:

简单地说,URL缩短字符(原始,长蹩脚URL)的任意长序列映射到字符的短和光滑序列。 这还不算什么,但散列,这是最常见的用于创建查找表,HashMap中,MD5哈希值用于加密的目的等。

要了解我创建GitHub上一个示范项目,也是一个博客文章的网址缩短过程。 请参阅本,让我知道,如果它是有帮助的。

博客文章: 网址缩短



文章来源: How do short URLs services work?