清理两个QQ群中的重复成员

今天清理了下 MiOTA 三个群的重复成员

本想用QQ机器人的,谁知道是腾讯抽了还是机器人抽了,怎么也无法检测出来……
没办法,还得自己动手……

好吧,惯例打开qun.qq.com,发现腾讯这货又改版了……不难想象无法检测的原因

注意到群成员列表的网址:(其中235705139为群号)
http://qun.qzone.qq.com/group#!/235705139/member

本想直接正则抓的,后来一看 Chrome 的 Network 面板,有现成的:
http://qun.qzone.qq.com/cgi-bin/get_group_member?uin=71881****&groupid=235705139&random=*******&g_tk=125454***

我这省略了几个参数,uin是QQ号,random顾名思义是随机数,g_tk这货貌似是类似token般的存在,不知道咋生成的,我只知道这货不能错,而且不同群是通用的。

好吧,打开后直接将参数中的 data.item 提取成一个 JS 数组:

var s = new Array;
s = [ "(此处省略数组内容)" ];

然后写个循环,提取非管理/创始人的QQ号码:

var qqs = new Array;    http:// 筛选后数据转存过来
for(var i=0;i<s.length;i++){
    if(!s[i].iscreator && !s[i].ismanager) qqs.push(s[i].uin);
}
qqs.join(' ');        http:// Chrome 的开发者工具会直接显示此结果

JavaScript只能帮到这了……,接下来得靠PHP了:

<?php
$qqs_1 = '群一 qqs.join(' ') 的值';
$qqs_2 = '群二 qqs.join(' ') 的值';
$qq1 = explode(' ', $qqs_1);
$qq2 = explode(' ', $qqs_2);
$result = '';
foreach($qq2 as $uin){
    if(in_array($uin, $qq1)) $result .= "{$uin}\r\n";
}
http:// 由于我是在命令行下运行,而CMD窗口复制太麻烦,所以直接输出成文件
file_put_contents('result.txt', $result);
?>

接下来,该咋处理咋处理了……

标签: PHP javascript


已有 6 条评论
  1. 乌克兰胚胎干细胞 乌克兰胚胎干细胞

    看看了哦

  2. QZONE.FrontPage.getACSRFToken._DJB=function(str){var hash=5381;for(var i=0,len=str.length;i

  3. 嗯,新版的群空间只能获取群成员了。想问下@kookxiang有没有可用的群踢人接口呢?
    另:g_tk是按照QQ号的skey(登陆时会获取)计算得出的,js算法如下:
    QZONE.FrontPage.getACSRFToken._DJB=function(str){var hash=5381;for(var i=0,len=str.length;i

    1. 在群成员页面手动清理都经常出现超时,右键删除却没问题……不知道是不同的接口还是有超时自动重试。今天中午找了下,貌似没有别的T人办法了 :evil:
      另外感谢算法,应该可以用js完成抓取和统计了,貌似只是为了防CSRF攻击加的参数
      (代码显示问题应该是Typecho的bug了吧 囧)

      1. = =嗯,谢谢啦,希望TX能出新接口哈..刚才代码和下面的文字都被截掉了,好坑爹 :arrow:

添加新评论