QQ推出了群签到,连续签名15天会有橙色名字赐予,对于VIP党来说这可以忽略了。当然最重要的是可以批量进行签名,只要一个PHP文件即可,在服务器上做个定时任务,执行PHP,每天就能够自动签名了,一劳永逸的方法。
将下面代码存为PHP文件即可,放到服务器上或本地运行PHP即可执行你全部的群签到。
Github项目地址:https://github.com/xqin/qiandao
un = preg_replace('/^o0*/', '', $uin);//数字QQ号码
$this->cookie = sprintf('Cookie: uin=%s; skey=%s;', $uin, $skey);//Cookie
$this->g_tk = $this->getGTK($skey);//计算 g_tk
$this->sign($this->getQunList());//获取群列表并签到
}
function getGTK($skey){
$len = strlen($skey);
$hash = 5381;
for($i = 0; $i < $len; $i++){
$hash += ($hash << 5) + ord($skey[$i]);
}
return $hash & 0x7fffffff;//计算g_tk
}
function getQunList(){
$html = @file_get_contents(
sprintf('http://qun.qzone.qq.com/cgi-bin/get_group_list?uin=%s&g_tk=%s', $this->un, $this->g_tk),
false,
stream_context_create(array(
'http'=>array(
'method'=>'GET',
'header'=>$this->cookie
)
))
);
preg_match('/(\{[\s\S]+\})/', $html, $qunList);
if(count($qunList) == 0){
return NULL;
}
$qunList = json_decode($qunList[1]);
if($qunList == NULL || $qunList->code != 0){
return NULL;
}
return $qunList->data->group;
}
function sign($groups){
if($groups == NULL)return;
$i = 1;
foreach($groups as $qun){
$this->qiandao($qun->groupid);//签到
printf("%d\t%s(%d)\tok\r\n", $i++, $qun->groupname, $qun->groupid);//输出群信息
}
}
function qiandao($qin){
@file_get_contents($this->signUrl, false,
stream_context_create(
array('http' => array(
'method' => 'POST',
'header' => $this->cookie,
'content' => sprintf('gc=%s&is_sign=0&bkn=%s', $qin, $this->g_tk)
))
)
);
}
}
这样玩不够爽?能自定义签到内容吗?这当然可以。
准备工具:Chrome和一个抓包工具,可以用Fiddler。
先打开Fiddler,然后打开想要签到的QQ群,点击签到功能(不要点击签到),然后在Fiddler里面能够找到gc和bkn的值。

OK,打开Chrome,然后打开http://qiandao.qun.qq.com/,登录QQ,F12打开开发工具,先引入jq.
引入jq代码:
;(function(d,s){d.body.appendChild(s=d.createElement('script')).src='http://code.jquery.com/jquery-1.9.1.min.js'})(document);
然后(实现自定义签名说明的代码来了。)
$.post("http://qiandao.qun.qq.com/cgi-bin/sign",
{
gc:"XX55XXX", //这里填写你获取到的gc值
is_sign:"0",
from:"1",
bkn:"XXX88XXXX", //这里填写你获取到的bkn值
poi:"群也好久了,对于签到,其实是个苦力活,要签到起码要能够做点广告吧?来吧,来友链一个吧?http://www.joming.com 欢迎来换友链,就这样吧,Joming在此",
},
function(data,status)
{
alert("数据:"+ data.ec);
}
);
好了,检查你刚才打开的群吧。是不是签到成功了?