【问题标题】:How to create short urls without having database [duplicate]如何在没有数据库的情况下创建短网址 [重复]
【发布时间】:2012-12-12 18:09:06
【问题描述】:

可能重复:
how to shorten the url in a mathematical approach

它是一个大学 django 项目.. 我无法真正设置数据库模型来存储动态生成的 URL 并根据散列主键重定向到短 url.. 等

我正在考虑使用某种算法加密 URL 并在服务器上解密。最初,我想使用 md5 哈希,但我想我们无法解密。

我的实际网址如下所示:

http://mydomain.com/photo?friend_name=dennis&me_name=ritchie&ping_url=http%3A%2F%2Fmydomain.com%2Fimg%3Furl%3Dhttps%3A%fsjcsd.googleueusercontent.com%2F-Sf6bP2nOKa8%2FUMaw8vv0QLI%2FAaaddjhnkchkjda7E%2Fs800%2FHosbsco.png%26message%3Dhi+dude

我想把它转换成:

http://mydomain.com?encode=hksfhsfksuhkvbkjnukvns

然后在服务器端我想将hksfhsfksuhkvbkjnukvns 转换回实际的字符串。

我有没有 Python 库

【问题讨论】:

  • 可能不实用 - 您最好的选择可能是 base64 编码,但它为您的示例输入 URL 提供了一个 291 字节的字符串,这有点延长“短”的要求。跨度>
  • @DominicRodger 好吧..如果它易于实现并且可以工作。不是问题
  • base64 让事情变得更长,而不是更短。
  • base64 生成 256 个字符(即使您压缩输入),而原始字符串为 219 个。

标签: python django url encryption url-shortener


【解决方案1】:

您可以使用 url 压缩 + 加密/base64 方法。

对于压缩,您可以检查 python 的 zlib 或任何其他无损压缩库(lzma 等),然后通过 base64 将压缩的二进制字符串转换为 ascii。供您参考,您的网址的 zlib + base64 比原始网址差。

但是url可能永远不会像你想象的那么短,仅仅是因为url内容信息量大,压缩比不好等。所以这种方案有可能永远满足不了有文本长度限制的应用的需求(像推特)。

因此,如果您想要一个非常短的网址,则必须有一个地方来存储短-长对。

牢记这些,我在 Google 上搜索了“网址缩短器”,然后弹出了很多内容。

这些第三方网络应用程序只是为了完成这项工作:

不过,希望您可以使用第三方应用程序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-24
    • 2011-07-13
    • 1970-01-01
    • 2021-07-27
    • 2018-05-21
    • 2021-01-12
    • 1970-01-01
    • 2019-07-16
    相关资源
    最近更新 更多