获取 Live Skydrive 的真实地址

我们都知道,国外网站好的服务大多惨遭不幸,国内网站就没有什么出彩的服务可以和国外同类网站相比,就算偶尔冒出两个也维持不了多久,等翅膀长硬了,于是就纷纷搞收费服务,或者变向甚至不加掩饰地压缩用户现有的空间或者服务产品等。比如说自以为土皇帝的网易就这么干过,曾经应允了永久免费且支持外链的网易相册,在一夜之间,没有任何通知的情况下,就压缩了我所有高清的照片,分辨率和原图像素、大小都被大大压缩,这是何等的卑劣!所以之后我就毅然地放弃了网易相册,国内网站一般黑,我一刻也呆不下去了,之后我就选择了可靠的微软的服务,也就是现在的 Live Skydrive 作为图床。

为了不给服务器造成太大的压力,相信很多朋友都把图片和多媒体等比较大的文件放在第三方的服务器上,比如说 dropbox、skydrive 等,不过就如同之前所说的,国外很多优秀的网络服务都被墙奸了,现在稳定且还未被墙的第三方存储服务就要算 Skydrive 比较知名的了,我现在博客上的所有外链图片都是存放在 Skydrive 上的,比较满意。

不过用久了 Skydrive 就会发现一个问题,其外链地址是会改变的,这个让人比较囧,以至于上次发布了一本 w3school 离线版电子书教程的下载点,这本电子书存放在了 Skydrive 上,然后三天两头有人来提醒我说链接地址无效,我还经常去更新一下呢。知道 Skydrive 有这个问题(不知道是 bug?还是微软故意为之),但是一直不知道怎么解决。

那天看到灰狼兄的一篇文章,才恍然大悟,原来这是有解决办法的,是任平生大哥的杰作,严重怀疑任兄是微软的内部工作人员,居然能开发出 Live 服务这么多好的优化产品,我们是受益匪浅啊。以下就记录一下如何获取 Live Skydrive 外链的真实不变的地址。

在 Skydrive 登陆后,选择需要得到外链的文件页面,在浏览器的地址栏里粘贴以下代码:

javascript:var%20n=document.title.replace('%20-%20Windows%20Live','');var%20id=((location.hash=='')?window.selfPageData.currentItemHash:location.hash).replace('#resId/','');var%20u='http://storage.live.com/items/'+id+'?filename='+encodeURI(n);var%20p='http://'+document.location.host+'/redir.aspx?page=self&resId='+id;var%20e='<input%20onmouseover=%22this.select();%22%20onclick=%22this.select();%22%20value=%22';var%20f='%22%20style=%22width:580px%22%20type=%22text%22%20/><br>';var%20d='by%20(<a%20href=%22http://rpsh.net/%22>Rpsh</a>)';var%20c='\u5916\u94FE\u5730\u5740:'+d+e+u+f+'\u5206\u4EAB\u5730\u5740:'+e+p+f;var%20a=document.getElementById('content');var%20g=(a.getElementsByTagName('p')[0]);var%20b=g?g:document.createElement('P');b.innerHTML=c;a.insertBefore(b,a.firstChild);void(0)

此时会得到一个形如:http://storage.live.com/items/……这样的地址,这才是上传文件真正的、不变的、唯一的外链地址,很明显,这比原来那又臭又长的 URL 要干净清爽很多。如下图:

这张截图我就用了这唯一外链地址,另外我还想作个小测试,因为 Skydrive 的外链在某些网络下被墙的,比如在我学校的校园网内就无法看到在 Skydrive 上的外链图片,老七也是经常吼着看不到我的图,不知道现在换了新的不变的外链地址能不能看到这图呢?我明天去学校测试看看,也请大家帮忙测试啊,特别是七叔,能不能看到上面这张图?如果能看到的话就太好了,一下子解决了我两个问题。

参考自:http://rpsh.net/archives/get-direct-url-of-files-on-live-skydrive/