Python实现批量QQ自动登录

需求描述

需要使用 Python 设计一个 QQ 的批量自动登录的脚本, 查了一些资料, 通过调 API 实现该功能。

准备工作

代码主要使用了几个常用的 API

  • win32gui
  • win32api
  • win32con
  • PyUserInput 前置需要安装 PyHook,否则会报错
    • pykeyboard
    • pymouse
  • 参考链接
    • PyHook3 安装 https://www.cnblogs.com/Denon-CAT/p/12771357.html

代码

注意

  • 在使用该程序时, 需要保证你登录的 QQ 不存在验证(滑动验证 / 文字点击验证的方式)。滑动验证的模块已经设计好, 如下代码中的注释部分。 但是QQ验证完成之后, 它会提示无法新设备无法登录, 因此使用代码的前提是你要登录的QQ已经指定你的电脑作为安全登录设备,无需验证。

  • 注意, 由于屏幕尺寸和分辨率的不同, 点击的位置可能出现偏差, 因此需要自己进行微调,

mouse.click(login_focus[4][0] + 200, login_focus[4][1] + 250, 1, 1)

修改偏移即可。

import os
import time
import win32gui
import win32api
import win32con
from pymouse import PyMouse
from pykeyboard import PyKeyboard
from ctypes import *


def autoLoginQQ(username, password):
    # 找到运行 QQ 的位置
    os.system('"C:\Program Files (x86)\Tencent\QQ\Bin\QQScLauncher.exe"')
    time.sleep(5)        # 延时, 防止提前点击
    # 获取QQ的窗口句柄
    # 参数1是类名,参数2是QQ软件的标题
    frame = win32gui.FindWindow(None, "QQ")
    # 获取QQ登录窗口的位置
    login_focus = win32gui.GetWindowPlacement(frame)
    # 定义一个键盘对象和一个鼠标对象
    keyboard = PyKeyboard()
    mouse = PyMouse()
    # 模拟点击事件, 用于点击输入用户名
    mouse.click(login_focus[4][0] + 200, login_focus[4][1] + 250, 1, 1)
    time.sleep(1)
    # 输入用户名
    keyboard.type_string(username)
    time.sleep(1)
    # 切换密码输入
    keyboard.tap_key(keyboard.tab_key)
    # 输入密码
    keyboard.type_string(password)
    # 按下回车
    keyboard.press_key(keyboard.enter_key)
    keyboard.release_key(keyboard.enter_key)
    time.sleep(10)
    # 最小化登录窗口
    frame = win32gui.FindWindow(None, "QQ")
    # 获取QQ登录窗口的位置
    login_focus = win32gui.GetWindowPlacement(frame)
    mouse.click(login_focus[4][0] + 240, login_focus[4][1] + 30, 1, 1)
    # # 这里如果需要验证, 一般也即无法进行登录, 所以去掉该模块
    # # 考虑是否有验证码滑动环节
    # # 获取鼠标焦点, 用于点击输入用户名
    # time.sleep(5)
    # # 循环滑动
    # mouse = PyMouse()
    # distance = 200
    # while True:
    #     windll.user32.SetCursorPos(login_focus[4][0] + 160, login_focus[4][1] + 340)        # 恢复鼠标位置
    #     mouse.position()  # 获取当前坐标的位置
    #     win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)  # 按下鼠标
    #     time.sleep(0.2)
    #     mouse.move(login_focus[4][0] + distance, login_focus[4][1] + 340)             # 鼠标移动到xy位置
    #     win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)    # 放开鼠标
    #     time.sleep(0.2)
    #     distance += 2
    #     # 超出距离, 验证失败或无法登录
    #     if distance >= 350:
    #         break


if __name__ == "__main__":
    # 示例 - autoLoginQQ("156623442", "XXXX")
    autoLoginQQ("", "")          # 这里输入用户名和密码
    autoLoginQQ("", "")          # 这里输入用户名和密码

滑动验证模块 滑动验证模块 滑动验证模块

# 这里如果需要验证, 一般也即无法进行登录, 所以去掉该模块
    # 考虑是否有验证码滑动环节
    # 获取鼠标焦点, 用于点击输入用户名
    time.sleep(5)
    # 循环滑动
    mouse = PyMouse()
    distance = 200
    while True:
        windll.user32.SetCursorPos(login_focus[4][0] + 160, login_focus[4][1] + 340)        # 恢复鼠标位置
        mouse.position()  # 获取当前坐标的位置
        win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)  # 按下鼠标
        time.sleep(0.2)
        mouse.move(login_focus[4][0] + distance, login_focus[4][1] + 340)             # 鼠标移动到xy位置
        win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)    # 放开鼠标
        time.sleep(0.2)
        distance += 2
        # 超出距离, 验证失败或无法登录
        if distance >= 350:
            break

运行结果

这里就不再贴结果了 win11 + python3 测试通过

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
回答: 如果你想批量保存文件,你可以使用Python的os模块和shutil模块来实现。首先,你需要指定要保存文件的路径和目标文件夹的路径。然后,你可以使用os模块的listdir函数来获取指定路径下的所有文件名。接下来,你可以使用shutil模块的copy函数将文件从原始路径复制到目标文件夹中。下面是一个示例代码: ```python import os import shutil # 指定原始文件路径和目标文件夹路径 source_path = './txt_9000/' target_folder = './target_folder/' # 获取原始文件路径下的所有文件名 files = os.listdir(source_path) # 遍历所有文件 for file in files: # 构建原始文件的完整路径 source_file = os.path.join(source_path, file) # 构建目标文件的完整路径 target_file = os.path.join(target_folder, file) # 复制文件到目标文件夹中 shutil.copy(source_file, target_file) print("文件保存完成") ``` 这段代码会将原始文件夹中的所有文件复制到目标文件夹中。你只需要将`source_path`和`target_folder`替换为你自己的路径即可。 #### 引用[.reference_title] - *1* *3* [python批量读取txt文本,处理,并批量保存](https://blog.csdn.net/qq_34904125/article/details/123120473)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Python自动化办公:批量将文件按分类保存,文件再多,只需一秒钟解决](https://blog.csdn.net/fei347795790/article/details/124348197)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值