星空软件

 找回密码
 立即注册

易语言获取QQ群好友列表,附bkn算法源码

发表于 2020-1-23 15:45:56 | 显示全部楼层 |阅读模式
易语言
工具(脚本)名称: 易语言获取QQ群好友列表
工具(脚本)大小: 1000 KB
开发平台: 易语言
工具(脚本)类型: 其他
功能简介: 我们做互联网营销难免需要接触到QQ营销,因为QQ的流量非常大,有些营销需要我们到处某个QQ群所有的好友数据,如果用传统手动的方式导出的话比较麻烦,所以我们今天用易语言给大家实现批量导出QQ群好友列表
我们做互联网营销难免需要接触到QQ营销,因为QQ的流量非常大,有些营销需要我们到处某个QQ群所有的好友数据,如果用传统手动的方式导出的话比较麻烦,所以我们今天用易语言给大家实现批量导出QQ群好友列表,如果对你有用的话,请用心读下去,不废话直接进入到主题。我们利用POST抓包形式来读取QQ群好友列表。
需要的工具:
1、易语言
2、精易模块
3、精易VIP超级模块
4、精易编程助手(需要网络抓包)
操作方法:
一、我们首先打开精易助手的抓包功能,需要抓取的地址为:qun.qq.com,在工具里面扫码登陆,完了点击页面的群管理,完了会弹出一个群列表页,大家可以看下面例图。
1.png
二、弹出群列表页后,我们点击工具的开始抓包按钮,然后我们在群列表页随便点击某个群,完了就会获取到这个群页面的好友数据列表。
QQ截图20200123145707.png
三、主要能正确的提交POST数据,我们就能获取到某个群的所有好友数据,这时候我们需要分析POST提交数据:
提交地址为:https://qun.qq.com/cgi-bin/qun_mgr/search_group_members
提交方式:POST
提交数据:gc=9633670&st=0&end=20&sort=0&bkn=187606947
重点是提交数据的一些参数值,“GC”值表示群号,“ST”值不用管,“end”值不用管,默认即可,好像是一次需要获取的好友数,“sort”值也不用管,“BKN”值这个参数才是最重要的,如果这个参数值提交错误的话是没办法POST到好友数据的,那么这个“BKN”参数值如何获取呢,我们分析发现,在页面没办法直接获取,需要先获取登陆成功后的COOKIE数据,然后从COOKIE获得skey参数值,完了再通过特定算法计算SKEY值然后计算出的另一个值就是提交数据里面的bkn值了。
易语言BAKN值计算函数代码:
[ecode=1].版本 2

.子程序 QQ_gtk, 文本型
.参数 skey, 文本型
.局部变量 基值, 整数型
.局部变量 计数, 整数型
.局部变量 长度, 整数型
.局部变量 结果, 整数型

基值 = 5381
计数 = 0
长度 = 取文本长度 (skey)
.判断循环首 (计数 < 长度)
    基值 = 基值 + 左移 (基值, 5) + 取代码 (skey, 计数 + 1)
    计数 = 计数 + 1
.判断循环尾 ()
结果 = 位与 (基值, 2147483647)
返回 (到文本 (结果))
[/ecode]
三、计算出了BKK值,这个程序的大问题就搞定了,我们直接在易语言里面新建一个程序,然后放三个编辑框,一个超文本浏览器,一个按钮,然后把下面的案例代码直接复制粘贴到你的代码框。
案例代码:
[ecode=1].版本 2
.支持库 spec
.支持库 eAPI

.程序集 窗口程序集_启动窗口

.子程序 _按钮1_被单击
.局部变量 cookie, 文本型
.局部变量 bkn, 文本型
.局部变量 提交数据, 文本型
.局部变量 QQ群号, 文本型
.局部变量 skey, 文本型
.局部变量 第一次, 文本型
.局部变量 返回数据, 文本型

cookie = 网页_取Cookie (“qun.qq.com”)
调试输出 (cookie)
第一次 = 取文本右边 (cookie, 80)
调试输出 (第一次)
.判断开始 (寻找文本 (第一次, “pgv_info”, , 假) > 1)
    skey = 文本_取出中间文本 (cookie, #前面, #后面)
    调试输出 (skey)
.默认
    skey = 取文本右边 (第一次, 10)
    调试输出 (skey)


.判断结束


bkn = QQ_gtk (skey)
调试输出 (bkn)
返回数据 = 到文本 (网页_访问 (“https://qun.qq.com/cgi-bin/qun_mgr/search_group_members”, 1, “gc=” + 编辑框3.内容 + “&st=0&end=” + 编辑框1.内容 + “&sort=0&bkn=” + bkn + “”, cookie))
调试输出 (返回数据)
编辑框2.内容 = 返回数据
打开指定网址 (“http://www.xkrj5.com”)

.子程序 QQ_gtk, 文本型
.参数 skey, 文本型
.局部变量 基值, 整数型
.局部变量 计数, 整数型
.局部变量 长度, 整数型
.局部变量 结果, 整数型

基值 = 5381
计数 = 0
长度 = 取文本长度 (skey)
.判断循环首 (计数 < 长度)
    基值 = 基值 + 左移 (基值, 5) + 取代码 (skey, 计数 + 1)
    计数 = 计数 + 1
.判断循环尾 ()
结果 = 位与 (基值, 2147483647)
返回 (到文本 (结果))

.子程序 __启动窗口_创建完毕
.局部变量 填表, 网页填表

延迟 (3000)
填表.初始化 (超文本浏览框1.取窗口句柄 ())

填表.链接_点击 (“登录”)
[/ecode]

四、添加完案例代码,还需要添加几个常量。
需要添加的常量:
[ecode=1].版本 2

.常量 前面, "<文本长度: 5>", , 常量值为:skey=
.常量 后面, "<文本长度: 1>", , 常量值为:;
[/ecode]
五、完了我们运行你的程序,然后扫码登陆即可直接获取到某个QQ群好友的数据列表哦!是不是很简答呢?最难的就是获取BKN参数值了,这个大家下去了好好研究一下。

获取列表

获取列表

关于“BKN”参数值的问题补充:
其实这个BKN值是用户客户端提交给服务器的,那么这个BKN值肯定是在客户端浏览器完成生成的,这时候我们第一时间需要想到的就是JS代码,果不其然,小编在QQ群页面的某个JS文件里面找到了BKN参数值的计算函数。
“BKN”参数值JS计算函数:
bkn=function(){for(var e=$.cookie("skey"),t=5381,n=0,o=e.length;n<o;++n)t+=(t<<5)+e.charAt(n).charCodeAt();return 2147483647&t}
21321312312321.png
易语言获取QQ群好友列表程序下载:(附源码)
易语言获取好友列表下载.txt
附件大小:114 Bytes
下载次数:11




上一篇:易语言Discuz3.4登陆加发私信工具,附源码
下一篇:易语言计次循环网页置标题怎么弄?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

sitemap|星空软件

GMT+8, 2020-6-3 05:54 , Processed in 0.140468 second(s), 30 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表