过去公司一直在安排各种学习任务,**章节很多**,有的是技术性的,有的是政策性的,如果你没有按时完成学习任务,会通知你。 但是,这些学习内容并不一定有帮助,所以大家都养成了刷课堂的习惯,就是点**,让它挂在那里。 但是有一个问题,**过程会检测用户是否操作过,如果检测时间长时间不操作会弹出框提示,只有点击弹窗框上的继续按钮才能继续**,这导致我们在刷类时经常注意页面是否暂停,刷班效率有点低。为此,制作了一个桌面图标检测小工具,它检测到桌面上出现特定图标后,它模拟鼠标点击以完成继续的功能。
这就是一个人的用武之地python
图书馆——pyautogui
。这个库是这样用的,并且用这个库做一个刷赞的助手,但建议不要用它来真正刷赞。
首先,需要安装pyautogui
是一个 Python 库,用于以编程方式控制鼠标和键盘操作,可用于自动执行测试、任务和其他要求。 这是其中之一pyautogui
基本教程。
pyautogui
pip install pyautogui
pyautogui
您可以控制鼠标移动到屏幕上的特定位置。 这可以通过moveto
函数实现,需要 x 和 y 坐标作为参数。
import pyautogui
将鼠标移动到屏幕的 (100, 100) 位置。
pyautogui.moveto(100, 100, duration=1)
duration
该参数是可选的,表示移动到指定位置所需的时间(以秒为单位)。
用click
函数可以模拟鼠标单击或指定单击位置。
在当前位置单击鼠标左键。
pyautogui.click()
右键单击屏幕 (200, 200)。
pyautogui.click(200, 200, button='right')
scroll
函数可以滚动鼠标。 正数表示向上滚动,负数表示向下滚动。 本机不直接对应屏幕上的像素数,而是取决于操作系统和应用程序的滚动设置。 例如,在某些文本编辑器或 Web 浏览器中,一行可以定义为一行文本的高度,而在其他上下文中,它可能取决于系统的滚动速度设置。
向上滚动。
pyautogui.scroll(200)
向下滚动。
pyautogui.scroll(-200)
pyautogui
它还可以模拟键盘操作,例如击键、文本输入等。
按下并松开空格键。
pyautogui.press('space')
输入字符串。
pyautogui.write('hello, pyautogui!', interval=0.25)
interval
该参数表示每个字符之间的延迟时间(以秒为单位)。
pyautogui
可以捕获屏幕截图,这对于自动化测试和监控很有用。
捕获全屏屏幕截图。
screenshot = pyautogui.screenshot()
screenshot.s**e('screenshot.png')
pyautogui
图像的位置可以在屏幕上找到。 如果找到,则返回四倍(left, top, width, height)
,表示在屏幕上找到的图像的位置和大小。 如果未找到匹配的图像,则函数将返回none
。它可以通过confidence
参数可提高搜索的容错能力。 confidence
参数用于指定匹配的准确性,范围从 0 到 1。 注意,使用confidence
需要安装的参数opencv-python
图书馆——
location = pyautogui.locateonscreen('button.png', confidence=0.9)
用pyautogui
,尤其是在自动控制鼠标和键盘时,请确保有足够的安全措施,例如设置延迟或使用pyautogui.failsafe = true
启用故障安全功能。 启用故障安全功能后,将鼠标移动到屏幕左上角将抛出pyautogui.failsafeexception
以中断脚本。 在运行自动化脚本之前,请确保了解将采取哪些措施来防止鼠标和键盘上的意外操作或其他问题。 该工具的核心是使用 python 库pyautogui
pynput
跟opencv-python
实现交互自动化。 工作流程如下:
打开知乎关注页面首先,手动打开知乎关注页面,准备开始自动化操作。 屏幕检测到审批图标:该工具将不断扫描屏幕以查找特定的背书图标。 模拟用户阅读:找到审批图标后,该工具模拟点击图标上方的行打开全文,然后模拟鼠标上下滚动模拟阅读过程。 自动点赞:阅读后,工具模拟点击同意图标完成点赞操作。 退出阅读并继续测试:识别出折叠的图标后,退出阅读状态,模拟鼠标滑动检测下一个批准图标。 通过这一系列操作,该工具可以自动点赞知乎上的文章,模拟用户的正常浏览行为。
“批准”图标
“折叠”图标
喜欢的图标。
项目 ** 托管在github
,可以通过以下链接***和图标访问:github-
import random
import time
import pyautogui
from pynput import keyboard
import threading
侦听 ESC 密钥标识符(听到 ESC 密钥时停止运行)。
listener_esc = false
图像示例的路径。
agree_path = 'image/agree.png'
read_more_path = 'image/read_more.png'
close_path = 'image/close.png'
中断的长度(以 s 为单位,最好更长)。
sleep_time = 1
置信度(建议提高,否则容易误触)。
confidence = 0.8
鼠标滚动速度。
scroll_speed = 10
def on_press(key):
按下该键时的动作。
try:if key == keyboard.key.esc:
当检测到 ESC 键时,将输出消息并停止监听。
print('按下 esc 键停止侦听。 ')
ESC 已被按下。
global listener_esc
listener_esc = true
返回 false 停止 ***
return false
except attributeerror:
passdef get_a_number(a, b):
生成一个随机数 [a, b]。
return:
return random.random().randint(a, b)
def on_release(key):
释放密钥时的操作。
passdef start_listener():
监听 ESC 键。
return:
with keyboard.listener(on_press=on_press, on_release=on_release) as listener:
listener.join()
def reading():
模拟阅读。 1.随机滚动鼠标。
2. 随机滚动像素行数。
return:
随机上下滚动鼠标 ()。
scroll_times = get_a_number(1, 3)
while scroll_times > 0 and not listener_esc:
随机滚动像素行数。
lines = get_a_number(50, 100)
向下滑动。
for _ in range(int(lines / scroll_speed)):
pyautogui.scroll(-scroll_speed)
time.sleep(sleep_time)
向上滑动,就可以回到刚才的位置。
for _ in range(int(lines / scroll_speed)):
pyautogui.scroll(scroll_speed)
time.sleep(sleep_time)
scroll_times -= 1
def close():
模拟关闭读数,循环是为了防止坐标不准确而不关闭。
return:
try:close_location = pyautogui.locateonscreen(close_path, confidence=confidence)
while close_location:
计算图像中心点。
center = pyautogui.center(close_location)
pyautogui.click(center)
print(f"close-clicked on ")
time.sleep(sleep_time)
close_location = pyautogui.locateonscreen(close_path, confidence=confidence)
except pyautogui.failsafeexception:
print("close not found")
return
def do_read(x, y):
模拟单击“阅读更多”。
param x:
param y:同意,点击上方约50像素查看全文。
return:
在屏幕上查找图像以阅读全文。
if not listener_esc:
点击这里查看全文。
pyautogui.click(x, y)
print(f"read more-clicked on , ")
加载内容。
time.sleep(sleep_time)
读。 reading()
def do_click():
模拟喜欢。 :return:
检查是否按下了 esc 键,如果是,请退出循环。
while not listener_esc:
给自己一些时间准备切换到目标应用窗口。
time.sleep(sleep_time)
try:在屏幕上找到喜欢的图片,可以调整置信度参数,以适应图片匹配的精度要求。
agree_location = pyautogui.locateonscreen(agree_path, confidence=confidence)
if agree_location:
计算图像中心点。
center = pyautogui.center(agree_location)
x, y = center
模拟阅读。
do_read(x, y - 50)
竖起大拇指。 if not listener_esc:
# pyautogui.Click(x, y) 可防止因坐标移动而导致的偏差,并重新获取批准坐标。
agree_location = pyautogui.locateonscreen(agree_path, confidence=confidence)
center = pyautogui.center(agree_location)
pyautogui.click(center)
print(f"agree - clicked on ")
单击“关闭”按钮。
close()
except pyautogui.imagenotfoundexception:
print("agree not found. trying again...")
稍作停顿,以免循环执行得太频繁。
time.sleep(sleep_time)
向下滚动,向下滚动约 200 像素。
for _ in range(int(200 / scroll_speed)):
pyautogui.scroll(-scroll_speed)
print("exited.")
创建并启动侦听 esc 密钥的线程。
listener_thread1 = threading.thread(target=start_listener)
listener_thread1.start()
这里的**可以执行而不会被阻塞。
print("like mode begin...")
do_click()
print("like mode end...")
为了运行此工具,需要安装以下 python 库:
pip install pyautogui pynput opencv-python
pyautogui
:用于模拟鼠标点击和滚动。 pynput
:用于模拟键盘输入和捕获退出信号。 opencv-python
:用于图像识别,检测屏幕上的特定图标。 坐标精度:确保使用的像素坐标是左上角,而不是中心坐标,以提高识别精度。 图标清晰度:点赞和关闭按钮的屏幕截图应清晰,并且网页的缩放级别应与程序运行时相同。 防检测措施:为避免被平台检测到,建议设置较长的随机休息时间。 合理使用:此物品仅供学习和研究使用,不得用于任何违规行为。 **演示中的休息间隔缩短并加倍。2月** 动态激励计划