之前有朋友需要获取自己的qq群的所有成员的qq号,于是做了下研究,也算是有所成功,记录下来
方案一
在晚上搜到的基本上都是登录qq群官网https://qun.qq.com,然后找到群管理,按照网友的说法,自己创建的群或者自己是群的管理的群是可以一件到处复制的,
但是我研究了一通,貌似现在并没有这个功能了,所以放弃该方案
方案二
我们是可以通过群管理看到自己加入的群的成员的
但是,每次只能加载21个,如果需要复制所有的,那么需要不停地往下拉动滚动条,直到所有的都出现了,然后再开始复制,然后粘贴到文本文件里或者是excel表格中,
我尝试粘贴在了excel表格中,并不是很理想,有些列是空的,所以导致所有的qq号并不是在同一列中,增加了粘贴复制的难度,像我这种嫌麻烦的人,果断放弃
方案三
找到qq群页面上相应的接口,使用代码模拟http请求,这才是一个程序员的思路。。。首先登录qq群,切换到群管理,随便找个群点开,然后F12,看后台j请求,不难猜测,加载成员
的方法肯定是个异步请求,我们只看XHR,果然,我们看到一个search_group_members的请求,翻译过来就是 查询群成员 。查看返回值,果然是我们需要的
剩下的就简单了,切换到 headers,找到
请求地址:https://qun.qq.com/cgi-bin/qun_mgr/search_group_members 如果尝试使用https 不能成功,请切换成 http,其余不变
然后最关键的就是cookie
最后是请求参数
gc:目标qq群号
st:开始索引值
end:结束索引值
sort:未知,默认0就可以
bkn:应该是某种特征值,经过尝试,这个是个动态变化的,所以肯定有某种计算机制在里面
直接使用postman搞它,复制cookie,还有formdata的参数,没问题,成功获取到
后发现,使用get请求,然后将参数直接拼接到接口后也能成功获取
如此就开始编写代码了,最初直接用textbox接收cookie等参数的值,成功获取
后发现这样太麻烦,不如添加上登录,获取到cookie等参数,就可以快乐玩耍了,经过一番研究,如果使用httpclient什么的模拟qq登录,
那是相当麻烦,有的需要判定是否有验证码,如果有,还要加载验证码,并且判定验证法是否正确,还有的需要手机验证,有的设置了手机密保令牌,等等
然后想到了另一个思路,那就是qq提供的第三方登录接口,在qq开发者平台一阵研究,果断放弃,主要怕暴露信息。。。
然后突然想到,可以用webBrowser 控件啊,立马搞它,果然成功获取到cookie,但是网上有说这样获取到的cookie不能用,测试一番可以。。。
但是,前面说的 bkn这个特征值就比较难搞了,这个在webBrowser的Document中并不存在,所以猜测这个是通过客户端计算得到的,如此继续撸web页面
如此 我们在本地的js中检索这个bkn,果然被找到
把所有js都拷贝出来,然后找个在线的js解压,直接解压,复制出来看详细代码实现
如此,bkn也找到了,最后,撸上代码就可以了
码云:https://gitee.com/dzf/GetQQGroupMember
原文地址:https://www.cnblogs.com/rsj1767/p/11988442.html