目录

  • 前言
  • 自动化操作
  • 获得窗口句柄
  • 获取鼠标位置
  • 点击操作
    • 什么是偏移量加减?
  • 通过剪贴版输入中文,或文本
  • 自动提取文本操作
  • 截取屏幕保存到目标位置
  • 写入文本到记事本
  • 高级点击,匹配图片点击
  • 自动化

前言

文章起源
最进了一个诈骗群,里面就是根据一个人发的任务然后进入某个软件来点赞,一单三块,后面肯定是杀猪盘,我只想捞一波就走,就想写个自动化程序来自己完成刷单然后提交任务白嫖一波,结果我自动化程序刚刚写好,他就开始杀猪了气死我
我提醒群内的人,就被封了

就当复习自动化了!!
要想自动化步骤必须要清晰
步骤:
1:骗子在自己软件里发群公告不能复制,我们就使用文本识别然后保存到一个文件里
2:对刚刚的文本文件进行处理,得到关键信息然后返回
3:通返回来的关键信息来在选择城市,和输入关键信息搜索,然后选择点赞,或者根据关键信息后面的自动化重复几次,输入不同信息
4:对完成的任务截图保存到夜神模拟器的相册里
5:在夜神模拟器里自动发任务截图给那个人
6:半小时发群里发一次任务,于是完成一次整体操作后,每隔10min又重新识别群公告,如果关键信息一样就不运行,如果不一样就运行,无限重复
我们就成功完成了一个全自动化来完成任务,自己挂在电脑上运行就好了
源码就不放了,基本都是下面的操作。自由组合,不要一个文件写到底,有Bug的时候就裂开了,推荐将操作和主程序分开

自动化操作

需要的各种各样的库,有获得窗口位置的,进行鼠标键盘模拟的,截取窗口的
win32gui,win32api,win32con,pyautogui

获得窗口句柄

使用spyxx软件直接获取,点赞加收藏发信息给我,我发给你
也可以不使用软件获取,推荐用软件
在 Python 中,可以使用 pywin32 模块来获取窗口句柄。下面是一个例子,展示了如何使用 pywin32 获取指定窗口的句柄:

import win32gui
## 窗口类名和标题
class_name = None
window_title = "Untitled - Notepad"## 查找窗口句柄
hwnd = win32gui.FindWindow(class_name, window_title)## 检查是否找到了窗口
if hwnd == 0:print(f"无法找到窗口:{window_title}")
else:print(f"窗口句柄为:{hwnd}")

上面的代码中,我们使用 win32gui.FindWindow 函数来查找指定窗口的句柄。函数的第一个参数是窗口类名,可以为 None 表示匹配所有窗口类,第二个参数是窗口标题。如果找到了窗口,函数会返回窗口句柄,否则返回 0。

它不光是取的窗口的位置,要想你的自动化程序到达真正的自动化,就要使用句柄,我们的一切模拟操作都是是在以句柄为基础,比如点击操作,我们的确可以直接选定屏幕坐标进行点击,但我的窗口一但换文置,你下次要么重新选定坐标,要么就是将窗口移动回原处。但我们用句柄为基础就不一样了,只需要以句柄坐标为基础,在什么对x,y坐标进行偏移量加减就就不一样了。

获取鼠标位置

import pymouse
print('点击回车查看当前鼠标的坐标')while True:_ = input()  # input起到阻塞程序的作用print(pymouse.PyMouse().position())  # 获取当前鼠标指针的坐标,是屏幕大小为100%时的,这是个大坑

点击操作

from pymouse import PyMouse
m = PyMouse() # 创建鼠标对象
m.move(x,y) # 移动到目标位置
m.click(x, y, 1, 1) # 点击目标第一个1是点左键,2就是右键。最/后一个1是点击次数

我们发现通过截图软件得到的地址不能进行点击,那是应为我们的屏幕被放大了

如果你的屏幕被放大,那么PyMouse可以通过以下方法来进行调整:

首先,你需要确定你的屏幕被放大的比例是多少。这可以在屏幕显示设置中找到。在 Windows 系统中,你可以在「显示设置」菜单中找到缩放和布局选项,并查看缩放百分比。
在你的 Python 脚本中,你需要导入 PyMouse 库,并创建一个 PyMouse 对象:

import pymouse
m = pymouse.PyMouse()

接下来,你需要告诉 PyMouse 屏幕被放大了多少倍。这可以通过设置鼠标位置的比例来实现。假设你的屏幕被放大了 200%(即缩放比例为 2.0)
你可以使用 PyMouse 的其他函数来模拟鼠标操作。例如,如果你想将鼠标移动到屏幕上的特定位置,你可以使用以下代码:

m.move(x_pos / 2, y_pos / 2)

这里的 x_pos 和 y_pos 是你想要移动到的位置的坐标,除以 2 是因为屏幕被放大了两倍。我们要变回去
注意,你需要根据你的具体情况调整上述代码中的屏幕比例和坐标值。

什么是偏移量加减?

比如我要点击某个窗口的某个地方,设这个窗口的句柄是0x000710CC

点击目标位置,(1381,111)是我从截图软件得的目标值,要除去自己的显示大小,才是真正的该位置

def point(x,y):from pymouse import PyMousem = PyMouse()m.move(x,y)m.click(x, y, 1, 1)
point(int(1381/(3/2)), int(111/(3/2)))

如果是通过前面获取鼠标位置的代码获取的目标值就直接填就行

点击目标位置,下面这个才是我们要写的,以窗口为相对位置进行点击

import win32guidef point(x,y):from pymouse import PyMousem = PyMouse()m.move(x,y)m.click(x, y, 1, 1)rect = win32gui.GetWindowRect(0x000710CC)
point(rect[0]+53,rect[1]+(42))

53和42,就是该点离左上角的距离
两个的区别就是一个可以随意的移动窗口也可以进行点击到目标位置

通过剪贴版输入中文,或文本

def key(str):import pyautoguiimport pyperclip# 将中文字符复制到剪贴板pyperclip.copy(f"{str}")# 将剪贴板中的内容粘贴到当前焦点应用程序中pyautogui.hotkey('ctrl', 'v')

自动提取文本操作

先要有个可以识别文本的软件就可以

def Picture(x,y):import pyautoguipyautogui.hotkey('Win', 'space') # 打开识别软件的快捷键import win32apiimport win32conimport time# 起点坐标start_x, start_y = x+15, y+170   # 相对窗口的坐标win32api.SetCursorPos((start_x, start_y)) # 鼠标移动到这# 终点坐标end_x, end_y = x+857, y+719# 鼠标按下左键win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, start_x, start_y, 0, 0)# 鼠标移动到终点坐标step_x = (end_x - start_x) / 10.0 # 每次的移动距离step_y = (end_y - start_y) / 10.0 # 每次的移动距离for i in range(10):new_x = int(start_x + step_x * (i + 1))new_y = int(start_y + step_y * (i + 1))win32api.SetCursorPos((new_x, new_y))time.sleep(0.1)# 鼠标放开左键win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, end_x, end_y, 0, 0)

截取屏幕保存到目标位置

def jietu(hwnd,name):import win32guifrom PIL import ImageGrabrect = win32gui.GetClientRect(hwnd)left, top, right, bottom = rect# 截图并保存img = ImageGrab.grab((left, top, right, bottom))img.save(fr'C:\Users\Blue\Nox_share\ImageShare\Screenshots\{name}.png')

win32gui.GetWindowRect(hwnd) 函数与 win32gui.GetClientRect(hwnd) 函数类似,也是 Python Win32 扩展库中的一个函数,不同的是 GetWindowRect 获取的是指定窗口的外框矩形,而 GetClientRect 获取的是指定窗口的客户区域矩形。

具体来说,hwnd 是指定窗口的句柄,函数返回一个矩形(left, top, right, bottom),表示窗口的外框矩形的坐标和大小。其中,left 和 top 分别表示窗口左上角的 x 坐标和 y 坐标,而 right 和 bottom 则表示窗口右下角的 x 坐标和 y 坐标。

与此不同的是,GetClientRect 函数返回的是窗口的客户区域矩形,这个矩形是在窗口的边框内部的,而 GetWindowRect 函数返回的则是包括窗口边框在内的矩形。

总之,GetWindowRect 与 GetClientRect 的区别在于它们获取的是窗口的不同矩形区域,前者包括窗口的整个区域,后者仅包括窗口的客户区域。这些信息可以帮助开发者在处理窗口时,根据需要选择合适的矩形区域来定位和处理窗口内的控件和内容。

写入文本到记事本

import pyautogui
import os
import time
import multiprocessing
def one():time.sleep(1)pyautogui.hotkey('ctrl', 'a')pyautogui.hotkey('ctrl', 'v')pyautogui.hotkey('ctrl', 's')os.system("taskkill /im notepad.exe /f")if __name__=="__main__":a_p = multiprocessing.Process(target=one, args=[])  # args里用list传参就行了,不要只写个参数,或者用元组(5,)应为只有一个参数不要忘记“,”号a_p.start()os.system(r"notepad d:\BlackTool\Microsoft VS Code\Python Code\Mode\out.txt")

用多进程写的原因

os.system(r"notepad d:\BlackTool\Microsoft VS Code\Python Code\Mode\out.txt")

不自己手动关闭就会一直运行,但我们是自动化

os.system(“taskkill /im notepad.exe /f”) 关闭,但前面还在运行我们要怎么关闭呢?

所以我们使用多进程,来进行,通过另一个进程来关闭它,然后使主进程继续运行

高级点击,匹配图片点击

import time
import pyautogui# 获取图片方式1
im = pyautogui.screenshot()  # 截取整个屏幕
im.save("img_S.png")
# 坐标截图软件就可以了
om = im.crop((184, 1306, 216, 1340))  # 根据截取的屏幕仅截取“带赞的手势图片”,可以用pyautogui.mouseInfo()获取图片的位置(284,416,302,438)
om.save("dianzan.png")  # 将图片保存供pyautogui.locateOnScreen()使用# 获取图片方式2 我更喜欢2
# im=ImageGrab.grab((401, 374, 460, 433)) # 要先导入库 from PIL import ImageGrad
# im.save("dianzan.png")def point():time.sleep(0.5)xy = pyautogui.locateOnScreen('dianzan.png')  # 是在寻找刚才保存点赞手势图片center = pyautogui.center(xy)  # 寻找图片的中心,返回图片中心在屏幕上的位置pyautogui.click(center)print('点赞成功!')count = 10  # 为了防止一直运行下去,点一点数量的赞就结束,自己定义while count:if pyautogui.locateOnScreen('dianzan.png'):point()  # 调用点赞函数count -= 1else:pyautogui.scroll(-500)  # 本页没有图片后,滚动鼠标;print('没有找到目标,屏幕下滚~')
print("完成")

自动化

学习的库有很多呀
win32gui 是 Python 中的一个模块,它提供了访问部分 Windows API 函数的能力,用于与 Windows 应用程序中的图形用户界面 (GUI) 元素进行交互。它可以用于自动化任务,例如在 Windows 程序中查找特定的窗口或控件,并模拟用户操作。

pyautogui 是一个 Python 库,用于自动化鼠标和键盘操作。它可以用于自动执行重复的任务、测试 GUI 应用程序或创建自动化脚本。

PIL (Python Imaging Library) 或 Pillow 是 Python 中一个图像处理库,它支持许多常用的图像格式,并提供了许多操作图像的功能,例如裁剪、旋转、缩放、调整亮度和对比度等。

pymouse 是一个 Python 库,用于控制鼠标的移动和点击。它可以用于编写自动化脚本,例如模拟鼠标操作来自动化一些任务。

Selenium 是一个用于自动化 Web 浏览器的 Python 库。它可以模拟用户在浏览器中的行为,例如打开网页、点击链接、填写表单等。它常用于测试 Web 应用程序或进行网络爬虫。

自动化操作-实践(薅光诈骗群)相关推荐

  1. CapitalOne - Artifactory高可用集群的自动化部署实践

    背景 本文为大家介绍Capital One如何利用自动化流水线实现Artifactory HA集群进行自动化运维.Capital One银行是美国最大的数字化银行之一,在Capital One的dev ...

  2. python windows记事本_pywinauto自动化操作记事本

    一.什么是pywinauto Pywinauto是基于Python开发的,用于操作Windows标准图形界面的自动化测试的脚本模块. 二.pywinauto可以用来做什么 1.可以应用在程序中,来解决 ...

  3. 使用selenium自动化操作浏览器

    欢迎关注"生信修炼手册"! selenium是一个浏览器自动测试工具,通过驱动程序来自动化操作对应的浏览器,包括了打开浏览器窗口,定位元素,点击按钮,上传文件等操作,支持以下多款主 ...

  4. 您应该遵循的15个UI测试自动化最佳实践(上)

    本文转载自晨小菜订阅号,感谢大佬的分享 我们知道,在过去二十年UI端的自动化测试一直是我们项目上做自动化测试的重点.随着敏捷的发展,慢慢的越来越多人开始诟病UI自动化测试,觉得在UI端做自动化其稳定性 ...

  5. 用Python自动化操作PPT,看完这篇文章就够了!

    作者:超级大洋葱806 https://tangxing.blog.csdn.net/article/details/109568830 大家好,我是小z 今天给大家分享一波Python自动化操作PP ...

  6. 陆金所测试专家金玲谈《基于容器的自动化环境管理实践》

    金玲:大家下午好,我是来自陆金所测试部金玲,大家知道陆金所是做什么的吗?请举手示意一下.有在陆金所投资过的举手示意一下?陆金所是针对用户的个人投资理财平台,开始的时候是针对P2P起家,后来整个业务进行 ...

  7. Flink1.11中的CDC Connectors操作实践

    Flink1.11引入了CDC的connector,通过这种方式可以很方便地捕获变化的数据,大大简化了数据处理的流程.Flink1.11的CDC connector主要包括:MySQL CDC和Pos ...

  8. 已解决python selenium模块自动化操作谷歌浏览器点击元素失效问题解决(亲测有效)

    已解决python selenium模块自动化操作浏览器点击元素,抛出异常selenium.common.exceptions.ElementClickInterceptedException: Me ...

  9. python自动操作微信_微信全智能机器人测试,Python代码实现自动化操作,玩转智能应答...

    原标题:微信全智能机器人测试,Python代码实现自动化操作,玩转智能应答 本文为微信智能回复相关python项目,通过模拟网页端微信接口,实现跟好友之间自动的回复,并接入了图灵智能库,进行相应的内容 ...

最新文章

  1. 中setting怎么配置_maven的安装与配置(保姆级教学)
  2. 高并发大流量专题---5、CDN加速
  3. android layout 工具栏,没有工具栏的Android CollapsingToolbarLayout在某个点停止而不是完全关闭...
  4. ML之PLiR之Glmnet:利用Glmnet算法求解ElasticNet回归类型问题(实数值评分预测)
  5. 11月17日学习内容整理:jquery文档处理,事件细讲,动画
  6. 负载均衡在分布式架构中是怎么玩起来的?
  7. 操作系统修炼秘籍(1):秘籍简介
  8. 工业交换机为何要老化测试
  9. filepermission java,Java FilePermission getActions()方法与示例
  10. 三元一次方程组步骤_姜红梅名师工作室【教学感悟】三元一次方程组解法的思考...
  11. sql azure 语法_Azure SQL –使用Azure自动化的索引表
  12. [转]麻省理工学院(MIT)研究生学习指导[上]
  13. mysql存储food_Mysql存储过程
  14. hdu 1213 “How Many Tables”(并查集基本到优化)
  15. Super-pack按键精灵安卓离线打包发布
  16. intern()详解
  17. 查询MYSQL数据库中所有的表
  18. 在Vista下删除EISA配置的隐藏分区
  19. 【Python自动化测试8】流程控制语句讲解
  20. 培养下属的12条黄金法则

热门文章

  1. NTT DATA处女面
  2. 旁路电容与去耦电容的区别
  3. VLAN的作用 与 基本原理
  4. 绿幕抠图SDK技术对比
  5. 有限元分析中复合材料建模
  6. 毕业设计-基于深度学习的图像去噪方法研究
  7. c++图像处理入门教程
  8. linux驱动编程——ch340x驱动移植
  9. 每天睁开眼,开源众包就欠你60万!
  10. java html转excel