今天清理了下 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); ?>
接下来,该咋处理咋处理了……
看看了哦
QZONE.FrontPage.getACSRFToken._DJB=function(str){var hash=5381;for(var i=0,len=str.length;i
:arrow: 貌似JS被过滤掉了,直接上网址
http://ctc.qzonestyle.gtimg.cn/qzone/v6/interface/interface_v6_20121217.js
嗯,新版的群空间只能获取群成员了。想问下@kookxiang有没有可用的群踢人接口呢?
另:g_tk是按照QQ号的skey(登陆时会获取)计算得出的,js算法如下:
QZONE.FrontPage.getACSRFToken._DJB=function(str){var hash=5381;for(var i=0,len=str.length;i
在群成员页面手动清理都经常出现超时,右键删除却没问题……不知道是不同的接口还是有超时自动重试。今天中午找了下,貌似没有别的T人办法了 :evil:
另外感谢算法,应该可以用js完成抓取和统计了,貌似只是为了防CSRF攻击加的参数
(代码显示问题应该是Typecho的bug了吧 囧)
= =嗯,谢谢啦,希望TX能出新接口哈..刚才代码和下面的文字都被截掉了,好坑爹 :arrow: