URL 缩短器如何计算 URL 键?它们是如何工作的?
Posted
技术标签:
【中文标题】URL 缩短器如何计算 URL 键?它们是如何工作的?【英文标题】:How do URL shortener calculate the URL key? How do they work? 【发布时间】:2011-03-30 04:43:51 【问题描述】:URL shortener's 和bit.ly 一样,如何计算每个链接的随机密钥?我需要知道什么算法才能创建自己的算法?
【问题讨论】:
查看***.com/questions/742013/how-to-code-a-url-shortener了解一些可能的解决方案 您没有阅读技术 (en.wikipedia.org/wiki/URL_shortening#Techniques) 部分吗?那里有什么你不明白的吗?请参阅 Jeff 的博文:codinghorror.com/blog/2007/08/… @dirkgently Jeff 博客上的那篇文章应该是一个答案。很好的信息,我现在正在阅读它...... @ChrisF 你用那个链接回答了这个问题。 在这种情况下,这是重复的 - 我不是 100% 确定这就是我没有投票关闭的原因。 【参考方案1】:到目前为止,我从http://briancray.com/2009/08/26/free-php-url-shortener-script/找到了代码
function getShortenedURLFromID ($integer, $base = ALLOWED_CHARS)
$length = strlen($base);
while($integer > $length - 1)
$out = $base[fmod($integer, $length)] . $out;
$integer = floor( $integer / $length );
return $base[$integer] . $out;
以及上面提到的Marcel J. 的更复杂的答案。
【讨论】:
【参考方案2】:我认为他们不要随机选择一个新密钥并检查数据库中是否存在,因为它比仅使用序列号并应用一些 criptography 算法要慢将顺序 id 转换为 UNIQUE 字符串。
例如:
idUrl = 1003;
urlCode = doSomething(idUrl); // 161Llz
要使用的网址: http://bit.ly/161Llz
Tks:mykhal 和尼克·约翰逊
【讨论】:
.. 然后他们希望不会有冲突:) 密码学与此无关。【参考方案3】:也许他们将其存储在数据库中,然后给您一个链接 ID。当您查询此密钥时,他们会查看他们的数据库并将您转发到存储的真实链接。要对 id 进行编码,可能会使用 base64(或类似的)。
【讨论】:
很明显他知道,因为那是他链接的内容 链接到英文版会很好【参考方案4】:他们很可能将其存储在数据库中,然后随机生成密钥。我假设这是因为您可以制作自己的密钥,如果他们只是解码它,您将无法自己选择它。
至于如何做,您可以在 mysql 中创建一个数据库并让它保存密钥和完整站点。只需搜索密钥,然后将用户重定向到完整站点。
【讨论】:
谢谢,但我知道如何存储密钥 - 我的问题是他们如何“为每个链接计算随机密钥?” 有很多方法。他们可能只是做一些简单的事情,比如想出几个随机数字,然后为每个数字分配一个字母并将它们粘在一起。他们使用数据库来存储和查找它们的事实意味着他们可以使用任何他们想要的方法,并且他们的算法不必考虑实际的 URL以上是关于URL 缩短器如何计算 URL 键?它们是如何工作的?的主要内容,如果未能解决你的问题,请参考以下文章