有同学了解短网址还原的原理吗?

2018-04-16 15:07:14 +08:00
 musclepanda
问了度娘实在找不到,只能找到 2 种
1、如何生成短网址;但现在的问题不是如何生成,而是如何还原
2、直接解析出最终网址;没法分步了解每个短连接是如何转化的

举个栗子: http://bitly.co 目前好像只看到这个网站可以分步解析出短网址还原过程中每个 url

求问同学们啥原理可以实现
8164 次点击
所在节点    程序员
35 条回复
akira
2018-04-16 23:25:38 +08:00
一路 301 302 回去就是了,
不过有见过一种所谓的短地址,是会给你另外一个页面,然后在里面点按钮跳转的,这个要多一个步骤了
randyzhao
2018-04-17 01:10:38 +08:00
@imdong 其实好像都不查重的,同样一个原链接生成两次,就发两个号。
txydhr
2018-04-17 07:22:39 +08:00
一一对应存在数据库里。。。。
balamiao
2018-04-17 09:17:32 +08:00
服务端不就保存一个 map 嘛,根据 key 拿 value 的事情呀~
shuizhengqi
2018-04-17 09:45:24 +08:00
很简单,你请求一个短连接过来,我给你返回个网址,301 重定向,根本就没有还原短网址这一说法
moonsola
2018-04-17 10:01:12 +08:00
你输入一个短网址 a,后端访问这个短网址后根据返回的头信息可以获取原网址 b,将 b 输出到前端就可以了。应该就是这么简单粗暴
至于你说的“分步解析出短网址还原过程中每个 url ”,不清楚是什么意思
opengps
2018-04-17 10:48:01 +08:00
如果用算法生成短网址,那么可能用算法还原。
但是如果用字典或者说数据库生成,那么外部人员是无法还原的
luozic
2018-04-17 11:08:07 +08:00
key-value 或者算法 md5 那种方式类似➕缩略图
pmispig
2018-04-17 12:45:56 +08:00
谁告诉你能还原的?
pmispig
2018-04-17 12:47:09 +08:00
你给的这个网站还原的方式就是 get 一次,把 302 地址给你,这就叫还原了?
wizardforcel
2018-04-17 15:44:22 +08:00
负载均衡+kv 数据库。。。
xxxy
2018-04-17 17:12:06 +08:00
每一家公司的短地址生成方式都不太一样,想直接还原是不可能的。直接访问一下查看历史跳转记录就行。
sampeng
2018-04-17 18:08:37 +08:00
nginx+lua+redis。。了解一下。
FrankAdler
2018-04-17 19:58:00 +08:00
生成方式不一样, 还原方式就不一样, 我说一个基于文件的短网址吧
一个文件, 原本 size 是 x, 网址长度 y, 写入文件后, 文件大小变成 z, 那么把 x,y 记录下来, 下次可以以 fseek 的方式还原 url
这里有几个问题
1. x,y 可能比较大或者说是长度比较长, 那么可以转为高进制, 比如 64 进制, 进制越高, 长度越短, 但是稀奇古怪的字符越多
2. url 越来越多, 文件越来越大, 那么可以占用 1 位长度来做散列, 能保证很长的一段时间 url 足够短
FrankAdler
2018-04-17 19:59:39 +08:00
不建议用任意一种数据库来存储这个对应关系

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/447206

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX