新浪微博的API官方提供了很多种调用方式,支持编程的,归根结底就是两种:
1.基于Oauth协议,使用Open API。(http://open.weibo.com/wiki/%E6%8E%88%E6%9D%83%E6%9C%BA%E5%88%B6%E8%AF%B4%E6%98%8E)
2.使用Weibo JS-SDK(http://open.weibo.com/sdk/js )。
官方的方式总是显得很麻烦。我们来探讨一下,能不能通过非官方的方法,免AppKey、免认证、Ajax跨域调用新浪微博API呢?
Web 2.0时代,短链服务非常流行。新浪的短链服务域名是t.cn,这个域名实在是非常短,没办法更短了。
打开新浪微博API的官方文档,关于短链服务是这样的描述的:
以上列举的方法调用都大同小异。我们再以第一个方法short_url/shorten为例。打开详细说明:http://open.weibo.com/wiki/2/short_url/shorten
我们来分析一下这一段说明:
1.是否需要登录:否。这很关键,既然不需要登录,我们的“免认证”就好发挥了。
2.频次限制:是。这也很关键,这意味着如果我们按照官方的方式,调用次数将非常受限。
3.支持格式:JSON。其实根据实验,新浪微博不仅支持JSON,还支持JSONP,只是文档没告诉我们罢了。这也很关键。因为有了JSONP,就意味着可以方便的跨域了。
4.URL:https://api.weibo.com/2/short_url/shorten.json 。其实这也是骗人的。HTTPS必定会影响速度。经过实验,直接把HTTPS改为HTTP,仍然是OK的。
接下来逐个攻破难点。
一,使用JQuery+JSONP跨域。
参考文档:http://baike.baidu.com/view/2131174.htm
Jquery对JSONP非常友好,只需要在AJAX调用时指明dataType : jsonp就可以了。
二,频次限制问题。
既然不需要登录,频次限制问题就可以绕过。因为AppKey本身是半公开的。我们可以很轻松地Google到一大堆牛逼应用的Appkey。
例如 :
iphone新浪微博客户端 App Key:5786724301
iPad新浪客户端App Key:2849184197
Google.Nexus浪客户端App Key:1206405345
周博通微博管家App Key:202088835
Weico App Key:211160679
以上列举的这些AppKey,都是来自于一些用户量非常多的手机应用,它们的频次限制非常宽松的,几乎可以理解为“不限制”。为了解决频次限制问题,我们用它们的Appkey就可以了。
另外:新浪微博API的频次限制是有两个维度的,服务IP维度和用户IP维度。http://open.weibo.com/wiki/Rate-limiting 。这一点与本文无关,因为Javascript在客户端运行。但如果您想对本文提到的方法进行改装,使用C#或其他高级语言在服务器端进行调用的话,就要注意服务器IP维度了。
三、简单的实验一下。
您现在可以直接在浏览器中访问这个地址:
http://api.weibo.com/2/short_url/shorten.json?source=2849184197&url_long=http://www.cnblogs.com
浏览器中将显示
{"urls":[
{"result":true,"url_short":"http://t.cn/h5FGy","url_long":"http://www.cnblogs.com","type":0}
]}
通过访问上述的地址,您已经得到了http://www.cnblogs.com的段地址:http://t.cn/h5FGy
注意我们使用的是http而非https,不需要使用https,上文已经提到了。
四、最终代码示例
最终代码的示例参考这里http://haotaoqu.com/item-45.html
这个示例将一个又臭又长的淘宝客URL地址转换为了新浪短地址。
<script type="text/javascript">
$(document).ready(function(){
var j=$("#urlText");
var i=$("#goumai");
$.ajax({
//使用iPad新浪微博客户端的Appkey
url: 'http://api.weibo.com/2/short_url/shorten.json?source=2849184197&url_long='+i[0].href,
type: "GET",
dataType: "jsonp", //使用JSONP方法进行AJAX
cache: false,
success: function (data) {
j.val ( data.data.urls[0].url_short); //处理返回数据,显示到网页上
});
}});
});
</script>
分享到:
相关推荐
授权接口 关系链接口 微博接口 时间线接口 名单接口 帐户接口 收藏接口 私信接口 LBS接口 搜索接口 短链接口 话题接口 热度,趋势 标签接口 数据更新接口 通知接口 微频道 投票接口 其他 文档更新历史 API问题QA ...
传入长URL生成短URL,里面有详细代码。
为什么需要另外一个Java版本的微博客户端? 新浪微博官方推荐的Java客户端 weibo4j 一直没有发布到maven仓库,而我们是重度maven用户,因而重新发明了这个新的轮子。 通过maven引用weiboclient4j 在项目pom.xml...
短链批量生成器,方便多连接生成短链,爆破版本
可用于多种程序的防封策略 内置检测域名模块 实时检测域名,禁用微信已...支持生成微信短链,有添加公众号并且有权限生成微信短链则会优先使用微信短链,无则用新浪短链进行生成 感兴趣拿走自行研究,不提供技术服务。
短链平台技术栈 ● 微服务技术:新版SpringCloudAlibaba全家桶+SpringBoot2.5+Nacos2.x+MybatisPlus ● 缓存+MQ中间件+调度:Redis6.X+RabbitMQ+Zookeeper+Kafka + XXLJob ● 海量数据分库分表+文件存储:Mysql8.0+...
可用于多种程序的防封策略 内置检测域名模块 实时检测域名,禁用微信已红域名 智能的通知管理员被封禁的域名...支持生成微信短链,有添加公众号并且有权限生成微信短链则会优先使用微信短链,无则用新浪短链进行生成
维多防封短链微信防封短链微信裂变短链微信防红短链微信防红系统
短链脂肪酸的生成及其吸收机制,任傲,童勤,短链脂肪酸是日粮纤维发酵产物,其对动物的肠道健康、机体免疫功能等方面具有极其重要的意义。本文综述短链脂肪酸的生成及影响因
源码介绍: 提供链接+二维码生成方案,欢迎体验! 1.增加TCN,URLCN,SUO,MRW 四种接口 2.优化静态资源加载速度 3.抛弃assets文件夹
数字经济视角下生鲜电商“智能超短链”模式构建.pdf
摘要:短链脂肪酸(Short-chainfattyacids,SCFAs)是肠道菌群的重要代谢产物,主要包括乙酸、丙酸和丁酸,对宿主的许多生理代谢过程具有有益的
适用于个人的密码本,短链等功能的PHP后台管理系统.zip
13、修正短链转中,若存在“父子链”时,会出现转换错误的问题 14、修复部分机型上无法将文字带进彩信输入框中的问题 15、Sample中获取关注列表页面bug修复 16、修改快捷分享参数设置方式 17、修复开心网,分享...
n-3多不饱和脂肪酸通过改变短链脂肪酸预防沙门氏菌感染,黄宏萱,刘俊生,为探究n-3多不饱和脂肪酸(EPA和DHA)对沙门氏菌感染的预防作用及其机制,本实验通过沙门氏菌感染小鼠模型,感染前分别提供富含n-3多
自己自定义后缀,带数据统计。 演示地址:https://ddl.ink/
好用的开源短链接PHP代码,亲测好用。代码简单,上手难度低,可用于搭建自己的短链服务器。需配置mysql环境
SpringBoot+Redis+Mysql+布隆过滤器实现 短链转换