清理两个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