关于如何免注册使用t.cn提供的短网址接口

t.cn的短网址想必都不陌生,最初主要是做微博短链接.不会因为微博中有网址链接而占去太多的字数限制.

这些都不多提了,说说相关API接口的使用吧.

第一种方法,使用官方提供的接口 .这不是本篇的重点,只是随笔提下.因为该方法的使用,是会受到各种限制的.

官方给出的接口地址详见文档页面:

http://open.weibo.com/wiki/2/short_url/shorten

里面提供了带有access_token 和 带有请求频次限制的接口使用说明及文档.

 

这个方法就不多些多说了,程序员都能够看得懂。

如果不是程序员我也没什么办法能够短时间内讲解到让你能看懂。

下面进入正题,说说不受限制的使用接口。

这可能也许是人们口中常说的滥用,但是在某些网站项目中,比如说如果客户非要要求动态页面的每个id参数不同的页面都输出和生成短网址显示,那可能就不得不使用到它,毕竟官方给出的是有频次限制受限。

第二种方法,获取不受限制接口。

首先我们百度【t.cn短网址】,随便上网找找,发现排在前面的有个站点 http://sina.lt/

打开进去看,这个是新浪短网址的站点。是不是官方的站点暂且也不去论也不去思考,主要是看其功能,看其是否实现了站点t.cn短网址的生成功能。点了进入短网址,又跳到另外一个站点http://dwz.wailian.work/ ,在这个站点上我们找到了下面这个页面。

如下图,直接对图片按钮审查元素,以及对 单选按钮 t.cn 进行审查元素,得到下图中三个关键点信息。

 

1.得到按钮信息,是图片按钮,里面没啥内容。也没有onclick代码。

2.表单form 提交之后,会执行short方法,带有两个参数值过去。一个是输入框输入的url,另外一个是当前选中的单选框的shortsite.val。之后查看源代码进行搜索short函数,没有内容,即没有javascript的short方法,查看头部,只有引入的jquery文件和JS文件。

3. t.cn的value 是sina ,这个后面会用到。

此时得到了部分信息之后,可以页面直接右键,点击查看源代码了。

源代码的head 代码块里面,引入了4个JS文件,第1第2,都是jquery框架,只看名字第三个差不多就是我们想要的了。第4个看名字应该是提供base64编码用的方法。

直接点击第三个,打开。ctrl+F ,搜索,直入主题搜索short,

得到了我们想要的内容,那么就是这个JS了,这里看着代码排版还行,可辨识度也很高。直接看就可以了,如果代码辨识度不高,可以通篇复制到notepad++里面进行排版。如下图:(选择语言,J->javascript)

因代码太直观,太好找了,直接就找到有这么一行:

var request = "api.php?from=w&url="+ base64encode(utf16to8(url))+"&site="+site;

然后下面的$.ajax是jquery 的异步请求,也是请求的这个地址。

分析链接,这里有俩个函数 base64encode(utf16to8(url)) ,

其中base64encode 不用多说就是进行base64编码了,这也是head里面引用base64.js的用处,是需要用里面的这个方法。

另外一个函数,utf16to8(url),看名字猜测是把UTF-16编码转换为UTF-8编码,传入的是URL链接长网址。这个我们直接就不需要去管他了。通常我们都是使用的utf-8比较多。直接随便找个网址测试接口。

http://www.baidu.com  等于 base 64 的 aHR0cDovL3d3dy5iYWlkdS5jb20=

因为这里的接口的api.php是相对路径,根据站点进行拼接,实际接口就是:

http://dwz.wailian.work/api.php?from=w&url=aHR0cDovL3d3dy5iYWlkdS5jb20=&site=sina

去除无意义的非关键参数from=w ,得到简约接口地址:

http://dwz.wailian.work/api.php?url=aHR0cDovL3d3dy5iYWlkdS5jb20=&site=sina

浏览器直接进行get访问打开,得到页面:

可以看到,返回的是JSON 格式的信息,里面已经有我们的t.cn短网址,这个信息段正是我们想要的。

剩下可以做的事情已经很少很少了,就是反序列化JSON ,去除转义字符。就搞定。

http://dwz.wailian.work/api.php?url=aHR0cDovL3d3dy5iYWlkdS5jb20=&site=sina

接口地址:http://dwz.wailian.work/api.php?url=base64URL=&site=sina

接口参数:

url:经过base64加密后的长链接字符串

site:短网址类型,默认如果不传递就是sinalt (因JS代码里面有句代码如下),t.cn的是sina ,其它值就是去页面上去找radio单选框的value即可。

//JS里面定义了默认不传递site时生成的是sinalt类型。

    if (site == '' || site == undefined) {
        site = 'sinalt';
    }

文章就写到这里吧 ,实现代码就挺简单的,一个get请求,一个JSON反序列化,字符串处理掉转义字符,代码我就不发了,我也只写了两种语言版本的代码。

ps: 如果你尝试打开

http://dwz.wailian.work/api.php?url=aHR0cDovL3d3dy5iYWlkdS5jb20=&site=sina

返回JSON结果为error,并且提示:

\u60a8\u7684\u8bf7\u6c42\u8fc7\u4e8e\u9891\u7e41
\u8bf7\u7a0d\u540e\u518d\u8bd5!

实际上unicode编码转汉字以后是:您的请求过于频繁   请稍后再试!

这个是多次尝试对同一个链接进行生成时会发生的。只需要换一个新的链接进行生成就可以了。

不要在短时间内过多次尝试进行同一个链接的生成,返回error失败的次数过多时,JSON接口就会返回captcha了。

{"result":"captcha","data":{"success":1,"gt":"0e3c487c91ce47741cc2b9597f5f9c70","challenge":"58664c7fb1825e21ab912b89a244afa4"}}

captcha是因重复链接的请求过多而到来,会出现验证码,这种情况想必一般人都不太喜欢吧。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值