最近接了一个需求,涉及到了短链接的相关的知识,于是去查阅了相关的资料,在这里给大家整理分享一下。
一、短链接介绍
举个例子,现在我的推广的地址是这个:https://blog.csdn.net/CSDNedu/article/details/96436633
我通过新浪的短链接服务可以将上面的地址转成:https://t.cn/A6wTyLdA
那我为什么要将原有的URL转成较短的链接呢?比如我们发短信提醒用户去XXX,XXX有优惠活动,在文案上往往会带有一个链接进行跳转,方便用户快速去到对应的活动落地页。而短信的发送是需要成本的,短信的成本主要有两方面组成:
①、发送的人数(发的人越多,自然短信的花费就越大,这个我就不解释了)
②、短信发送的字数(比如,文案总字数超过70个字,那就算两条短信计费,超过140个字就算三条短信计费)
③、所以在发送短信给用户时:要么就投放更加精准优质的用户,以便控制好发送的数量,要么就尽可能控制文案的字数。
显然,如果在短信上配上普通的URL,那真正的文案可写的字数就没多少了。于是我们可以发现,各大公司的短信推送的URL都是短链接。
二、短链接平台推荐
好了废话不多说了直接进入推荐环节:
短链接在线生成工具:
使用说明:
①、复制要缩短的网址。打开上述平台提供的缩短网址服务。网站提供新浪短链接(T.cn)/腾讯短链接(Url.cn)
②、将要缩短的链接粘贴到生成器的输入框中。点击“生成”按钮。所有更短的网站都有一个按钮旁边的URL字段,点击时,它会为您创建缩短的URL链接。保存好缩短的链接就可以使用了!
API接口地址
①、http://maiyurl.cn/yunapi.html
使用说明:
将短网址api接口地址中 "http://www.baidu.com"换成需要缩短的网址,然后直接复制前往浏览器中打开即可。
PHP调用演示:
$url = ‘http://www.baidu.com‘; $api_url = ‘http://www.qqdwz.cn/sina.php?url_long=http://www.baidu.com; $short_url = file_get_contents($api_url); echo $short_url;
JAVA调用演示:
public static void main(String path[]) throws Exception { URL u = new URL("http://www.qqdwz.cn/sina.php?url_long=http://www.baidu.com"); InputStream in = u.openStream(); ByteArrayOutputStream out = new ByteArrayOutputStream(); try { byte buf[] = new byte[1024]; int read = 0; while ((read = in .read(buf)) > 0) { out.write(buf, 0, read); } } finally { if ( in != null) { in .close(); } } byte b[] = out.toByteArray(); System.out.println(new String(b, "utf-8")); }
Python调用演示:
import urllib, urllib2, sys host = ‘http://www.qqdwz.cn‘ path = ‘sina.php?url_long=‘ method = ‘GET‘ querys = ‘url=http%3A%2F%2Fwww.baidu.com‘ bodys = {} url = host + path + ‘?‘ + querys request = urllib2.Request(url) response = urllib2.urlopen(request) content = response.read() if (content): print(content)
三、短链接的定向跳转问题
这也是一个有意思的问题。这个问题主要是考察你对301和302的理解,以及浏览器缓存机制的理解。
301是永久重定向,302是临时重定向。短地址一经生成就不会变化,所以用301是符合http语义的。但是如果用了301, Google,百度等搜索引擎,搜索的时候会直接展示真实地址,那我们就无法统计到短地址被点击的次数了,也无法收集用户的Cookie, User Agent 等信息,这些信息可以用来做很多有意思的大数据分析,也是短网址服务商的主要盈利来源。所以,正确答案是302重定向。