使用 Python 模擬點贊助手

Mondo 科技 更新 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 應用程式...

    龍城贊助點效果:英雄護身符傳奇贊助點可以兌換靈符嗎?

    龍城決鬥三端互通手遊,今天就給大家介紹一下贊助積分的作用,贊助積分是否可以兌換精神符文。龍城決鬥遊戲中所有擊殺的怪物都有機會掉落實物獎勵,這些實物物品可以獲得贊助積分,還有一些在首次爆破中的個人在第一次掉落時也可以獲得贊助積分。贊助積分用於贊助 介面右下角的兌換,贊助積分可用於兌換元寶或靈符,每天可...

    如何在Python中高效編寫程式碼?Python實用程式設計技巧分享!

    Python 是一種高效 易學且功能強大的程式語言,具有許多實用的程式設計技巧,可以幫助開發人員更高效地編寫。以下是一些實用的 Python 程式設計技巧的細分和示例 .列表推導式 列表推理是一種在 Python 中建立和操作列表的簡潔 易於閱讀的方法。它可以使 更簡潔,減少冗餘。例如,將列表中的所...

    Python 爬蟲詳細使用了 4 種代理 IP 方法

    在 Internet 世界中,客戶端的 IP 位址是唯一的,因此目標將使用 IP 位址作為客戶端的標識。通常,目標 的伺服器會判斷是否從同乙個IP位址傳送頻繁的請求,如果訪問速度過高或訪問次數過高,會對IP位址進行反爬蟲訪問限制。因此,我們需要 ip來協助我們的工作。在本期 百科 中,我們將梳理出 ...

    快樂學習Python,如何正確使用pandas處理時間型別資料?

    在日常資料分析中,資料通常按日期進行分析。例如,我們需要通過使用者的下單時間來分析使用者在不同時間段對產品的偏好 例如,使用訪問日誌的訪問時間來分析系統的訪問週期和負載,為不同時間段的資源分配提供依據。例如,通過使用者較短的刷牙時間分析使用者的行為特徵和工作時間和工作型別 可以看出,在資料分析中,基...