skey,bkn,g_tk获取 |
skey是一个比较重要的参数,腾讯的很多网页上的应用都有用到这个参数,这个参数是在登陆后存放在cookies
中的,比如bkn,g_tk就是用这个参数去计算获得。skey会定时该变。
获取可变参数值(bkn,g_tk)
步骤:
1、登陆或在cookie中获取skey
1、通过计算获取bkn(群信息获取)
2、通过计算获取g_tk
java代码计算:
private int getGTKorBKN(String skey) {
int hash = 5381;
for (int i = 0, len = skey.length(); i < len; ++i)
hash += (hash << 5) + skeyValue.charAt(i);
int gtkOrbkn = hash & 2147483647;
return gtkOrbkn ;
}
显示日期获取 |
在腾讯的一些应用上,很多时候我们会从一些接受到的数据中得到一个ceateTime,或者time之类的数据,但是
这个值跟我们在页面上看到的值不一样,以下我们就来看看我们获取到的值通过怎样的计算后可以得到我们显示在
页面上的时间值。
步骤:
1、获取带有time参数的值。
2、将获取到的值进行以下计算就能得到与页面显示相同的效果。
页面js源码:
b = $("qun-created");
b.innerHTML = genDateStr(new Date(qunInfo.gCrtTime * 1E3));
function genDateStr(a, b) {
b = b || "-";
return a.getFullYear() + b
+ String(a.getMonth() + 101).substring(1) + b
+ String(a.getDate() + 100).substring(1);
}
java 代码模拟实现:
//通过gcrTime获取真实的时间
public String getRealgCrtTime(String gcrtTime){
long real_gcrtTime = Long.parseLong(gcrtTime)*1000;
Date date = new Date(real_gcrtTime);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
String year = calendar.get(Calendar.YEAR)+"";
String month = calendar.get(Calendar.MONTH)+101+"";
String date2 = calendar.get(Calendar.DATE)+100+"";
String realgcetimeStr = year+"-" + month.substring(
1, month.length()) + "-"
+ date2.substring(1, date2.length());
System.out.println(realgcetimeStr);
return realgcetimeStr;
}
例子:
登陆后获取群创建时间:
链接:http://qinfo.clt.qq.com/cgi-bin/qun_info/get_group_info?gc=群号&bkn=以上计算获取
首发:http://blog.sina.com.cn/s/blog_97b60b5d0101finz.html
更多技术分享请到这里