腾讯web引用skey g_tk bkn和日期显示分析

腾讯Web登录参数解析:skey、bkn与时间计算
本文介绍了腾讯Web应用中重要的skey参数,它在登录后存储于cookies中,用于计算bkn和g_tk。文章详细阐述了如何通过Java代码计算获取bkn和g_tk,并解释了时间显示的处理方式,包括从接收到的时间参数转换为页面显示的时间值的计算过程。

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

更多技术分享请到这里



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值