C#获取QQ群所有成员的QQ号

之前有朋友需要获取自己的qq群的所有成员的qq号,于是做了下研究,也算是有所成功,记录下来

方案一

在晚上搜到的基本上都是登录qq群官网https://qun.qq.com,然后找到群管理,按照网友的说法,自己创建的群或者自己是群的管理的群是可以一件到处复制的,

但是我研究了一通,貌似现在并没有这个功能了,所以放弃该方案

方案二

我们是可以通过群管理看到自己加入的群的成员的

C#获取QQ群所有成员的QQ号

 

但是,每次只能加载21个,如果需要复制所有的,那么需要不停地往下拉动滚动条,直到所有的都出现了,然后再开始复制,然后粘贴到文本文件里或者是excel表格中,

我尝试粘贴在了excel表格中,并不是很理想,有些列是空的,所以导致所有的qq号并不是在同一列中,增加了粘贴复制的难度,像我这种嫌麻烦的人,果断放弃

方案三

 

 找到qq群页面上相应的接口,使用代码模拟http请求,这才是一个程序员的思路。。。首先登录qq群,切换到群管理,随便找个群点开,然后F12,看后台j请求,不难猜测,加载成员

的方法肯定是个异步请求,我们只看XHR,果然,我们看到一个search_group_members的请求,翻译过来就是 查询群成员 。查看返回值,果然是我们需要的

C#获取QQ群所有成员的QQ号

 

剩下的就简单了,切换到 headers,找到

请求地址:https://qun.qq.com/cgi-bin/qun_mgr/search_group_members  如果尝试使用https 不能成功,请切换成 http,其余不变

然后最关键的就是cookie

最后是请求参数

gc:目标qq群号

st:开始索引值

end:结束索引值

sort:未知,默认0就可以

bkn:应该是某种特征值,经过尝试,这个是个动态变化的,所以肯定有某种计算机制在里面

C#获取QQ群所有成员的QQ号

 

 直接使用postman搞它,复制cookie,还有formdata的参数,没问题,成功获取到

 后发现,使用get请求,然后将参数直接拼接到接口后也能成功获取

C#获取QQ群所有成员的QQ号

 

 如此就开始编写代码了,最初直接用textbox接收cookie等参数的值,成功获取

C#获取QQ群所有成员的QQ号

 

 后发现这样太麻烦,不如添加上登录,获取到cookie等参数,就可以快乐玩耍了,经过一番研究,如果使用httpclient什么的模拟qq登录,

那是相当麻烦,有的需要判定是否有验证码,如果有,还要加载验证码,并且判定验证法是否正确,还有的需要手机验证,有的设置了手机密保令牌,等等

然后想到了另一个思路,那就是qq提供的第三方登录接口,在qq开发者平台一阵研究,果断放弃,主要怕暴露信息。。。

然后突然想到,可以用webBrowser 控件啊,立马搞它,果然成功获取到cookie,但是网上有说这样获取到的cookie不能用,测试一番可以。。。

但是,前面说的 bkn这个特征值就比较难搞了,这个在webBrowser的Document中并不存在,所以猜测这个是通过客户端计算得到的,如此继续撸web页面

如此 我们在本地的js中检索这个bkn,果然被找到

C#获取QQ群所有成员的QQ号

 

 把所有js都拷贝出来,然后找个在线的js解压,直接解压,复制出来看详细代码实现

C#获取QQ群所有成员的QQ号

 

 如此,bkn也找到了,最后,撸上代码就可以了

码云:https://gitee.com/dzf/GetQQGroupMember

 

 

 

C#获取QQ群所有成员的QQ号

上一篇:使用Duilib开发Windows软件(3)——控件的样式


下一篇:.Net Core3.0 WEB API 中使用FluentValidation验证,实现批量注入