一个复杂且长的链接(url)如何变成一个短小精悍的短链接?我们可以借助新浪微博短链API,可以将任意长度的url都变成形如t.cn/XXXX格式的短链接。本文介绍下微博的这个短链API,以及提供一个短链生成工具。
t.cn是新浪花重资买下的一个域名,也有说法是某某大佬买下后来送给新浪的,这个不重要,反正现在t.cn是属于新浪的了,直接访问t.cn会跳转到weibo.com,也就是新浪微博的网站。
新浪在得到t.cn这个域名后,开放了以这个域名为基础的微博API,其中一个就是短链接口,顾名思义,就是通过这个接口,任意url都可以生成一个短链接。例如https://t.cn/Ryh0P2j就是https://www.baidu.com的短链接。
上方介绍的短链接口API第二版中需要access_token,参数介绍“采用OAuth授权方式为必填参数,OAuth授权后获得”,看了下介绍,是需要用户先登陆微博才会有这个授权,只是为了做这个简单的短链工具,肯定不能每次都登陆啊!所以这个时候我们就需要借助一些第三方的工具来实现这个功能了!
微博短链接在线生成工具
麦云短网址
麦云短网址可让您通过简单地复制粘贴链接就能缩短你的长链接,把你的URL转换简短的t.cn短网址,您在几秒钟内就可以设置一个新的短链接域名,用于包装你的长链接,且无需验证码或额外的验证。平台支持API接口调用以及在线生成2种请求方式:
在线生成
新浪短网址在线压缩:http://maiyurl.cn/
1、复制要缩短的网址。粘贴到输入栏。你可以缩短任何长网址,长度不重要。
2、将要缩短的URL粘贴到新浪短链接生成器后。把你的光标移动到缩短按钮。点击“生成”按钮。它会为您创建缩短的URL。您的新缩短的URL将被显示。自己保存好缩短的链接就可以了!
API接口调用
新浪短网址API接口地址:http://maiyurl.cn/yunapi.html
PHP调用演示:
$url = 'http://www.baidu.com'; $api_url = 'http://maiyurl.cn/weibourl?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://maiyurl.cn/weibourl?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://maiyurl.cn/' path = 'weibourl?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)
注意事项:
① 调用api接口时,只需将 “http://www.baidu.com”换成需要缩短的长网址即可。
② 接口支持url参数,当url中出现 & 符号时,请用 %26 代替(或者使用url编码格式),否则参数可能会丢失。
③ 填写url时,必须要以http(s)://开头,否则可能会导致生出的短网址无法访问原网站。
④ 上文提到的几个url.cn短网址api接口,经测试都是比较稳定的,觉得好记得收藏一下,以免丢失。
常见问题:
① 长链接转换,为什么结尾的参数丢失了?
答:因为url中含有特殊字符,需要使用UTF8编码格式,将url编码
② 接口没有返回结果,是什么情况?
答:有些时候接口返回数据会有延迟,延时未返回则会提示生成失败;或者是因为原链接被封了。
③ 生成的短网址有效期是多久?有没有访问次数限制?
答:生成的短网址都是永久有效的,而且没有点击次数限制,可以任意使用