(半)自动批量添加QQ好友

0X00 前言

出于营销(误:P的原因,需要添加一些好友,手动复制 QQ 号搜索,添加,每次需要至少二三十分钟。于是有了编写自动化添加好友的想法。需求如下:

  1. 自定义验证问题回答(必须),自定义备注,自定义加入分组(可选)
  2. 添加结果,失败,成功(可选)

0x01 分析分析

很自然想到调用第三方接口实现,上网查了一下 qqbot 倒是可以实现,不幸的是 qqbot 基于 smartQQ,正好于 19 年 1 月 3 日下线了,QAQ

没办法,咨询了下万能的淘宝,发现类似的营销软件都是通过操作 QQ 页面的方式实现,可以参考:使用教程视频集,因为需要设置分辨率,分析可能是使用类似按键精灵,定位图像制作,起初感觉不是很优雅

朋友推荐一款叫做 酷安机器人 的工具,是一款腾讯授权的第三方 api 接口,可以自定义编写程序,论坛也有现成的可更改的添加好友程序,不过这款软件开始收费了,迫于贫穷作罢

思考和分析后,总结出三种实现方式:

  1. 按键精灵类效果,控制鼠标和键盘完成
  2. 调用第三方 api,方便快捷
  3. 控制 win32 程序实现自动操作

第一种方式实现原理很简单,但还要去学习相关按键精灵知识,也不是很喜欢这种方式,作为备选。第二种是我最青睐的方式,不过 qqbot 已挂,也买不起付费 api,加之 tx 对此监管也很严格,只能作罢,当然仅限于 pc 端,其他方式没有了解。

那就退而求其次,控制 win32 窗口的方式实现,查找了一下,python 模块 pywinauto 可以实现编写 txt,excel 实现办公自动化,但是由于 QQ 的防修改措施,无法获取到 QQ 的句柄信息,不能进行精确操作。

最后选择了 pyautogui + pywinauto 混合控制 win32 程序和图像识别的方式实现,最后还是折中了m(_ _;;m

0x02 开始码代码

搜索好友这里选用了两种方法:

  1. 通过 QQ 添加好友窗口查找添加
  2. 接口方式,tencent://AddContact/?fromId=45&fromSubId=1&subcmd=all&uin=10000&website=bbs.125.la

第二种虽然快捷,但是容易失效,虽然发送了请求,但却显示没有发送

核心逻辑

运行效果

0x03 总结思考

完成了没有无验证问题下好友自动添加,实际测试下添加一个好友大概需要20秒左右,其余情况也可以自动化解决,考虑到添加好友平均时间问题以及图像识别速度,就没有继续完善下去了,期待更好的解决方法

pyautogui 自动添加 QQ 好友 - https://github.com/j785786058/add_qq_friends

pyautogui 坑点 - https://blog.csdn.net/yaoliuwei1426/article/details/87933205

win32 自动发送信息 - https://blog.csdn.net/wjb123sw99/article/details/83475516

win32 自动登录 QQ - https://blog.csdn.net/qq_42022255/article/details/80659848

pywinauto 简明教程 - https://gaianote.github.io/2018/06/13/pywinauto%E7%AE%80%E6%98%8E%E6%95%99%E7%A8%8B/

pywinauto 教学 - https://blog.csdn.net/shawpan/article/details/78170117

pyinstaller 简明教程 - http://legendtkl.com/2015/11/06/pyinstaller/

pyinstaller 详解 - https://yujunjiex.gitee.io/2018/10/18/PyInstaller%E6%89%93%E5%8C%85%E8%AF%A6%E8%A7%A3/

pyinstaller 打包 opencv 错误 - https://blog.csdn.net/zx520113/article/details/82793312