使用 Python 模拟点赞助手

小夏 科技 更新 2024-02-07

过去公司一直在安排各种学习任务,**章节很多**,有的是技术性的,有的是政策性的,如果你没有按时完成学习任务,会通知你。 但是,这些学习内容并不一定有帮助,所以大家都养成了刷课堂的习惯,就是点**,让它挂在那里。 但是有一个问题,**过程会检测用户是否操作过,如果检测时间长时间不操作会弹出框提示,只有点击弹窗框上的继续按钮才能继续**,这导致我们在刷类时经常注意页面是否暂停,刷班效率有点低。为此,制作了一个桌面图标检测小工具,它检测到桌面上出现特定图标后,它模拟鼠标点击以完成继续的功能。

这就是一个人的用武之地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 库pyautoguipynputopencv-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月** 动态激励计划

相似文章

    在 Python 中使用 tkinter 模拟掷骰子

    Python 中有各种第三方库来设计图形用户界面。Tkinter 是最流行 最常见和最易于使用的库,用于构建 GUI 图形用户界面应用程序。Tkinter 提供了一个强大的面向对象的界面,并且易于使用。在本文中,我们将使用 Tkinter 和 Random 创建一个模拟掷骰子的 GUI 应用程序。f...

    龙城赞助点效果:英雄护身符传奇赞助点可以兑换灵符吗?

    龙城决斗三端互通手游,今天就给大家介绍一下赞助积分的作用,赞助积分是否可以兑换精神符文。龙城决斗游戏中所有击杀的怪物都有机会掉落实物奖励,这些实物物品可以获得赞助积分,还有一些在首次爆破中的个人在第一次掉落时也可以获得赞助积分。赞助积分用于赞助 界面右下角的兑换,赞助积分可用于兑换元宝或灵符,每天可...

    如何在Python中高效编写代码?Python实用编程技巧分享!

    Python 是一种高效 易学且功能强大的编程语言,具有许多实用的编程技巧,可以帮助开发人员更高效地编写。以下是一些实用的 Python 编程技巧的细分和示例 .列表推导式 列表推理是一种在 Python 中创建和操作列表的简洁 易于阅读的方法。它可以使 更简洁,减少冗余。例如,将列表中的所有元素平...

    Python 爬虫详细使用了 4 种代理 IP 方法

    在 Internet 世界中,客户端的 IP 地址是唯一的,因此目标将使用 IP 地址作为客户端的标识。通常,目标 的服务器会判断是否从同一个IP地址发送频繁的请求,如果访问速度过高或访问次数过高,会对IP地址进行反爬虫访问限制。因此,我们需要 ip来协助我们的工作。在本期 百科 中,我们将梳理出 ...

    快乐学习Python,如何正确使用pandas处理时间类型数据?

    在日常数据分析中,数据通常按日期进行分析。例如,我们需要通过用户的下单时间来分析用户在不同时间段对产品的偏好 例如,使用访问日志的访问时间来分析系统的访问周期和负载,为不同时间段的资源分配提供依据。例如,通过用户较短的刷牙时间分析用户的行为特征和工作时间和工作类型 可以看出,在数据分析中,基于日期 ...