- A+
腾讯的一些资源越来越稀缺,如微信和QQ,想多申请微信特别难,不过还好QQ目前比较容易申请,于是就多申请了些qq号。然而,QQ多了不好管理,登录麻烦,同时,若不经常登录申请的QQ就有可能被腾讯收回。因此,需要一款方便的批量登录QQ的软件或脚本才好,下面具体介绍:
一、多种批量登录方式的比较
根据了解,爱在灵灵久博客大概总结了三种批量登录的方式,第一种是通过PyAutoGUI操作鼠标,键盘以及截图、识图来实现,类似按键精灵的操作,这种方式优点是学习使用相对简单,哪里需要点哪里,缺点是占用电脑操作界面,容易出现意外点击不到;第二种方式是通过Pywinauto来获取窗口句柄进行操作,同时也有键盘,鼠标等模拟输入,这种方式优点是稳定,受外界的影响较小,缺点是学习成本高,难以获取窗口句柄以及进行相应的操作(目前市面上收费的批量登录软件主要是利用该种方式,直接操作窗口句柄)。第三种方式是利用QQ自身的密码保存及自动登录的功能,保存及替换其中的一个数据库文件从而进行批量登录。
另外,可能还有一类操作是使用酷Q进行批量登录。以前酷Q使用的web协议进行登录,但现在已经改使用手机协议进行登录了,可以直接操作酷Q进行批量登录。操作酷Q可能会比操作qq官方的软件会更好,QQ官方软件每次最多只能有十个qq登录,若需要继续登录就得关掉已经登录了的;酷Q使用的是手机协议,曾经看到过很多酷Q同时在线,应该是没得限制。至于是否会有限制以及具体怎么用酷Q进行批量登录,大家可以试试用PyAutoGUI或Pywinauto进行测试。下面讲解的是第三种方式,直接利用QQ的密码保存及自动登录功能实现批量登录QQ。
二、自动批量登录的原理讲解
每次登录QQ的时候除了输入账号及密码外,还有两个特别重要的勾选项,自动登录及保存密码,若勾选两者后下次再使用qq软件登录时会自动进行登录,我们也正是利用该点进行批量登录。但是大家会发现自动登录的QQ未退出,继续登录下一个QQ后又会出现点击登录的对话框,要怎样实现每个QQ都是自动登录的呢?这就需要修改qq安装目录中的一个文件了:History.db 。
每次勾选自动登录及保存密码并成功进行登录后QQ会将登录的这些信息保存在C:\Users\Administrator\Documents\Tencent Files\All Users\QQ\History.db 这个数据库文件中。每个qq共用这一个History.db,下个QQ继续保存密码自动登录时会覆盖这个文件,因此,每次自动登录时只能有一个qq实现自动登录,其他的还是需要进行点击登录。那么怎样才能实现批量登录呢?或许大家会想到了,自动登录后将该文件复制出来,保存到对应号码的文件夹中,继续下一个登录,登录后又将该文件保存到自身对应号码的文件夹中,其他的同理进行保存。那么下次需要自动登录时将复制出来的对应QQ号文件夹中的History.db替换掉C:\Users\Administrator\Documents\Tencent Files\All Users\QQ\History.db,这样就可以实现该号码的自动登录了,其他号码的自动登录也是同理。
替换History.db登录,继续替换登录,这样就实现了QQ批量登录了。
三、批量登录的实现步骤
第一步,运行QQ软件,输入账号、密码并勾选上保存密码及自动登录后点击登录,成功登录后会生成一个新的C:\Users\Administrator\Documents\Tencent Files\All Users\QQ\History.db 数据库文件,里面保存了该号码自动登录对应的信息,复制到一个自己设定的文件夹中。(需要提前pip install psutil模块)
- #-*-coding:utf-8-*-
- import time
- import os
- import shutil
- import psutil
- def login_qq(qq_num):
- """first records qqnumber 创建存储qq历史记录的文件夹"""
- qq_num_path = os.path.join(BASE_PATH, qq_num)
- if os.path.exists(qq_num_path):
- print("当前qq号码的历史记录已经存在,不用重复记录。")
- else:
- os.makedirs(qq_num_path)
- """Second 登录qq账号并将历史记录文件移动到对应的qq账号中"""
- os.startfile(QQ_PATH)
- input("如果输入完毕并登录了QQ,请直接回车即可。:\n")
- shutil.copycopy(QQ_HISTORY, qq_num_path)
第二步,遍历已经登录并保存History.db文件的QQ号码文件夹,然后将其复制替换qq安装目录中对应的那个History.db文件,替换后就可运行qq软件了。在遍历目录的中间插入了对已经在运行的qq的数目判断,通过QQ.exe进程的数量判断,如果已经超过了十个QQ登录了就杀死这些进程歇息一段时间后继续登录剩下的。当然,自己也可以加入一些判断逻辑或等待时间等,如处理验证码之类的。
- def auto_login():
- qq_list = os.listdir(BASE_PATH)
- for qq_num in qq_list:
- history_file = os.path.join(BASE_PATH, qq_num, 'History.db')
- pr_list = [pr for pr in psutil.process_iter() if pr.name() == 'QQ.exe']
- if len(pr_list) < 10:
- shutil.copycopy(history_file, "C:\\Users\\Administrator\\Documents\\Tencent Files\\All Users\\QQ")
- print("当前正在登陆的QQ号码是:{}".format(qq_num))
- os.startfile(QQ_PATH)
- time.sleep(25)
- else:
- for pr in pr_list:
- try:
- pr.kill()
- except Exception:
- continue
- time.sleep(10)
最后,可以将上面的两步进行整合,形成一个main函数,如怎样的执行逻辑,中间如果出现问题该怎么处理,提示一些信息等。
四、注意点说明
QQ批量自动登录需要先登录一次,程序自动记录了每个QQ的History.db 以后才能批量登录,这是有点麻烦的。另外,可能会有一个麻烦的是ip变动后qq会弹出验证码,需要进行处理。一般家用的电脑ip是动态的,每天都会不一样,常常出现验证码,若是在服务器上,有固定的ip,很少会出现这个问题。最后建议大家批量登录QQ时在服务器上进行处理,同时可考虑使用酷Q进行批量登录。
以上是关于QQ批量登录的一些介绍,后续会尝试使用酷Q进行批量登录,欢迎关注本博客:爱在灵灵久