Python微信自动抢红包程序(OpenCV,pyautogui)

微信自动抢红包教程有很多,有通过分析安卓组件写的,由于对java不熟悉,就想通过监视电脑屏幕的方法做,也就是OpenCV,或者卷积神经网络,刚好以前项目做到过。在查询资料的过程中有发现一个神奇的库——pyautogui。这个库可以很方便的控制鼠标和键盘。也可以识别屏幕元素,做模板匹配,翻看它的源码发现了cv2这个函数,仔细一看,也是用的OpenCV这个库。

ps:电脑用的是模拟器。

好的,废话不多说,上干货。

import pyautogui
import time
import random

# pyautogui.PAUSE = 1
print("请输入's'开始")
a = input()
flag_A = 0
# 1065,37
region = (0, 0, 1920, 1080)
while a == 's':
	while 1:
		start_time = time.time()
		A = pyautogui.locateCenterOnScreen("IMAGES/0.png", confidence=0.7)
		rad_num = random.randint(-20, 20)
		if A:
			print('A')
			if flag_A == 0:
				pyautogui.click(A[0] + rad_num, A[1] + rad_num)
				flag_A = 1
		B = pyautogui.locateCenterOnScreen("IMAGES/3.png", confidence=0.7)
		if B:
			flag_A = 0
			print('B')
			pyautogui.click(B[0] + rad_num, B[1] + rad_num)
			time.sleep(3)
			pyautogui.press('esc')
			end_time = time.time()
			print(f"the running time is: {end_time - start_time} s")
			time.sleep(2)
		C = pyautogui.locateCenterOnScreen("IMAGES/man.png", confidence=0.7)
		if C:
			flag_A = 0
			pyautogui.press('esc')
		print(flag_A)

大体原理就是看到没领的红包鼠标点过去点开然后退出。遇到抢完的红包直接退出。

里面三个图片对于是这样的,下载到不同的电脑上需要自己截图保存在IMAGES这个文件夹内。

关于pyautogui库的使用网上有很多,这里给出一些常用的用法。


#读取图片,图片名不能用中文:笑死、、、、、(opencv?)
#常用函数:
# 移动鼠标
pyautogui.moveTo(200,400,duration=2)
pyautogui.moveRel(200,500,duration=2)
第一行是将鼠标移动到指定的像素(200,400)位置,第二行代码是将鼠标按照当前点向右移动200px,向下移动400px这个方向移动。正表示右下负表示左上

print(pyautogui.position())   # 得到当前鼠标位置;输出:Point(x=200, y=800)

# 点击鼠标
pyautogui.click(10,10)   # 鼠标点击指定位置,默认左键
pyautogui.click(10,10,button='left')  # 单击左键
pyautogui.click(1000,300,button='right')  # 单击右键
pyautogui.click(1000,300,button='middle')  # 单击中间
pyautogui.doubleClick(10,10)  # 指定位置,双击左键
pyautogui.rightClick(10,10)   # 指定位置,双击右键
pyautogui.middleClick(10,10)  # 指定位置,双击中键

#拖动到指定位置
pyautogui.dragTo(100,300,duration=1)
#将鼠标拖动到指定的坐标;duration 的作用是设置移动时间,所有的gui函数都有这个参数,而且都是可选参数;
#按方向拖动
pyautogui.dragRel(100,500,duration=4)   # 第一个参数是左右移动像素值,第二个是上下,
#向右拖动100px,向下拖动500px, 这个过程持续 1 秒钟;

pyautogui.scroll(300)  # 向上滚动300个单位;
#屏幕截图
im = pyautogui.screenshot()
im.save('Screenshots/屏幕截图.png')
#屏幕识别
import pyautogui
pyautogui.PAUSE = 1
# 图像识别(一个)
btm = pyautogui.locateOnScreen('zan.png')
print(btm)  # Box(left=1280, top=344, width=22, height=22)

# 图像识别(多个)
btm = pyautogui.locateAllOnScreen('zan.png')
print(list(btm))  # [Box(left=1280, top=344, width=22, height=22), Box(left=25, top=594, width=22, height=22)]
#直接获得中心坐标
x, y = pyautogui.locateCenterOnScreen('IMAGES/已领取.png')
pyautogui.click(x, y)

#键盘输出
keyDown():模拟按键按下
keyUP():模拟按键松开
press():模拟一次按键过程,即 keyDown 和 keyUP 的组合
typewrite():模拟键盘输出内容
#eg:
pyautogui.keyDown('shift')
pyautogui.press('1')
pyautogui.keyUp('shift')
#运行上面的代码,如果你的鼠标是放在编辑框中,你会得到一个感叹号

pyautogui.typewrite('python', 1)
#第一个参数是输出的内容,第二个参数是间隔时间,单位是秒。
#运行上面代码,你的编辑器里面就会每隔1秒钟按顺序输出 python 的6个字母。

pyautogui.typewrite(['p','y','t','h','o','n','enter'])
运行上面代码,编辑器里面就会输出 python 之后换行。

pyautogui.hotkey('ctrl','c')
#和
pyautogui.keyDown('ctrl')
pyautogui.keyDown('c')
pyautogui.keyUp('c')
pyautogui.keyUp('ctrl')
# 相同

#屏幕截图
img = pyautogui.screenshot()
region = (300,400,606,500)
img = pyautogui.screenshot(region=region)
#这可以指定区域

 

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Python 微信自动抢红包是指使用Python编程语言编写一个程序,可以自动检测并抢夺微信红包。下面我将简要介绍实现此功能的一种方法: 首先,我们需要使用Python中的自动化测试工具,例如Appium或PyAutoGUI,来模拟用户在微信中的操作。这些工具可以帮助我们自动化模拟用户的点击、滑动等操作。 其次,我们需要使用Python中的图像处理库,例如OpenCV,来识别微信红包页面。我们可以通过分析红包页面的特征,例如红包图标、文字提示等,来判断红包是否出现。 一旦检测到红包出现,我们就可以使用自动化测试工具模拟点击红包,并进入红包详情页面。在该页面,我们可以使用相同的方法判断红包是否已经被抢过。 如果红包尚未被抢过,我们可以模拟点击打开红包。如果红包已被抢过,则可以返回上一页,继续检测下一个红包。 需要注意的是,为了避免被微信检测出异常行为,我们应该设置一定的点击间隔,并在每次点击后进行适当的休眠。此外,我们还应该注意不要频繁的点击红包,以免引起他人的不适或麻烦。 总结起来,Python可以通过自动化测试工具和图像处理库实现微信自动抢红包的功能。当然,红包的识别和抢夺是一个复杂的过程,需要考虑到各种情况的处理。以上只是一种简要的实现思路,具体的代码编写需要根据实际情况进行调整和完善。 ### 回答2: Python 可以通过调用微信的接口来实现自动抢红包功能。首先,我们需要安装一些必要的库,如itchat、time、random等。然后,我们可以使用itchat库来登录微信,并注册好相应的消息处理函数。 当收到红包消息时,我们可以在消息处理函数中编写相应的逻辑来自动抢红包。通过itchat获取红包的发送者、红包的金额等信息,并编写自动点击红包、输入口令等操作的代码。可以使用模拟点击的方式来点击屏幕上的红包图标,并模拟输入口令等操作来自动领取红包。 为了避免被封号或者频繁出现验证码等问题,我们可以在代码中加入一些延时操作、随机等待时间,并合理设置红包的打开速度。同时,为了提高代码的稳定性和可靠性,可以加入异常处理机制来处理各种异常情况。 在实际使用中,我们还可以结合一些其他技术,如图像处理、OCR识别等来提高自动抢红包的成功率。例如,可以使用图像处理技术来识别屏幕上的红包图标,并自动点击红包。也可以使用OCR识别技术来自动识别红包口令并自动输入。 需要注意的是,使用Python自动抢红包属于一种自动化行为,可能涉及到一些法律和道德问题。在进行相关操作前,请务必了解相关规定,并确保自己的行为符合法律法规和道德规范。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值