Google短网址的API

作者: 阮一峰

日期: 2011年1月16日

2009年底,Google发布了短网址服务goo.gl

Google声称

"......(这是)互联网上最稳定、最安全、最快速的短网址服务。"

有人做了比较,证明确实如此。

从上图可以看到,goo.gl的响应和跳转时间是最短的。

除了速度快,goo.gl还提供详细的点击统计。比如,Yahoo首页的短网址是http://goo.gl/QuXj,那么它的统计数据就在http://goo.gl/info/QuXj。加上后缀".qr",还能得到这个网址的二维条形码,Yahoo的就是http://goo.gl/QuXj.qr

======================================

但是当时,这个服务只供Google内部使用,不向外部使用者开放,大家只好眼睁睁地流口水。

上周,这个限制终于取消了。Google宣布,正式公开goo.gl的API。这意味着,所有外部使用者都能利用它,得到自己想要的短网址。感兴趣的同学,可以自己去研究这个API,还是很简单的。ChromeFirefox浏览器,都已经提供了相应的扩展。

根据这个API,我写了一个"短网址生成器",欢迎访问,网址是:

http://www.ruanyifeng.com/webapp/url_shortener.html

另外,我还提供一个Bookmarklet,将"短网址"这个链接加入书签栏,只需一次点击,就可以在当前页面上动态显示该网页的短网址。

======================================

附言

我本来还想实现"自动复制"功能(就是鼠标一点,文字自动复制到剪贴板),但是发现似乎没有通用的解决方案,除非使用Flash。我觉得太麻烦,就放弃了。

但是,我发现了一个很优秀的函数库Zero Clipboard。如果你有类似需要,推荐使用这个库。

(完)

珠峰培训

stuQ

留言(33条)

可以使用下面这个javascript方法弹出一个窗口,里面的内容是默认选中的,这样只要ctrl+c一下就可以把内容复制走了
window.prompt('URL: ' longurl 'short for',url)

其实很久以前我也写了个类似的:

http://lab.gracecode.com/url-zipper/

其实现在很多短网址服务都已经中断了

不管怎么样 Google 提供的服务还是让人很放心的(有奖竞猜下,这个服务短期内会被 gfw 认证吗?)

鼠标移上去全选也行

短网址生成器里的j.mp写成了j.pm

阮兄写的那个生成器一下子生成几个url,感觉好浪费呀。。。。。(因为只取其一就足够了。。)

老兄绝对是个计算机大侠,当初怎么会学经济学呢:)

纯js实现确实没有啥比较方便的....

如果使用Google Chrome浏览器的话,插件ChromeMUSE - Multi-URL Shortener/Expander 是个现成的shorten url的东西,当生成short url的时候,直接复制到剪贴板,即不必Ctrl C, 直接Ctrl V就行了。

我本来还想实现"自动复制"功能(就是鼠标一点,文字自动复制到剪贴板)
——linux系统默认就具有的功能,但是浏览器上来说貌似只有用flash了(flash比浏览器霸道,可以操作clipboard)

不过不建议这么做,因为非linuxer肯定都不习惯。原来玩的好好的,在你的blog选了一次文本,刷,自己剪切板的东西没了……肯定郁闷

Google的东西就担心被墙认证了

那么这玩意被墙也是必然的

引用toraleap的发言:

短网址生成器里的j.mp写成了j.pm

多谢指出,已经改正了。

引用J的发言:

可以使用下面这个javascript方法弹出一个窗口,里面的内容是默认选中的,这样只要ctrl+c一下就可以把内容复制走了
window.prompt('URL: ' longurl 'short for',url)

我觉得,alert、prompt那样的窗口,用户体验很差,而且使用样式,还是少用比较好。

引用phpqhz的发言:

鼠标移上去全选也行

这是一个好主意,鼠标移上去全选可以用select()方法实现,但是移开后取消选择应该如何实现呢?Javascript里面好像没有这种方法……

这个很实用

longUrl='+encodeURI(l)
换成:
longUrl='+escape(l)

longUrl='+encodeURIComponent(l)

比较好.
否则 遇到一些特殊符号会出问题?
http://www.w3school.com.cn/js/jsref_encodeURI.asp

引用NLF的发言:

换成:
longUrl='+encodeURIComponent(l)

比较好.否则 遇到一些特殊符号会出问题?

谢谢指出这个错误,我疏忽了,已经改过来了。

阮兄,请教您一个问题,Google短网址为什么会加快加载速度哪?Google在其中做了些什么?

我朋友自己做的短网址获取: http://tao.bb/
不过他没有用google api,自己开发的

对不起,我理解错了。

想不到有人和我一样关注Goo.gl的API
而且很巧合就在看到这篇文章前我还又去看了一遍API文档(刚出来时我就翻墙去完整看了一遍)
但是考虑到暂无合适应用,加之年底实在犯懒就放弃了
随后上V2EX看到老兄的“不要在起床的时候收邮件”
之后就很神奇的看到这篇文章
这世界上的事咋就这么神奇呢

发现一个bug,下面的链接用你的bookmarklet生成的短网址少了&后面一段
http://www.mindmeters.com/showlog.asp?cat_id=27&log_id=10025

To aleung:

已经修改好了。

把你的bookmarklet删掉,重新安装就可以了。

我用firefox,有很多支持shorter的扩展。
原来使用url shortern, 回来不在更新,目前正在使用cutyfox,
鼠标一点,就把短url复制到剪贴板了。

Bookmarklet失效了么?只能弹出一个空框。

一直用博主的这个,能麻烦看下么?

博主不好意思。
重新测试结果是Opera11.10版自身问题。。。
非常抱歉!
您的小书签很好用,十分感谢!

如果解除google的短网址绑定呢,请赐教!

博主关于这个小插件有点问题想问您,不介意的话请查看一下您的gmail,谢谢

我想问一下,如何指定这个书签ico?浏览器默认的实在很丑陋,而且不容易辨识功能

我也做了一个短网址,http://2.gy/
博主能帮忙推荐一下么

使用短域名很方便。。。比较资源有限,好记的都没有了 url dot cn, net dot cn 多好的域名 早就被人注册了 ~~~~(>_

博达,可以帮些个PHP 的 126.am 的么,,,

goo现在需要验证码。
你的【短网址生成器】生不出来……

https://goo.gl/

实现原理: 我个人认为就是一个域名重定向而已,感觉没有什么技术含量(就是比较谁的 DNS 解析更快!)。

对短的URL 并没有什么用!

xgqfrms.xyz => goo.gl/0fSk8V 或 goo.gl/0fSk8V.qr

对长的链接,还是不错的!

https://xgqfrms.github.io/blogs/pages/001.html => goo.gl/57yUtg

我要发表看法

«-必填

«-必填,不公开

«-我信任你,不会填写广告链接