用Python監聽鄰居家小姐姐的上網行為


小姐姐

關注公眾號:「Python專欄」,后台回復「小姐姐」,獲取全套代碼!!!

Python專欄二維碼

還記得曾經為了刷大話西游而下載了按鍵精靈,然后論壇上搜了各種分辨率的腳本么?

還記得春節為了刷回家的高鐵票,自己寫了按鍵精靈的腳本么?

現在python有一個神奇的庫,我們不用再去模擬復雜的按鍵精靈了!監控鼠標、鍵盤,甚至是……

pynput這個庫讓你可以控制和監控輸入設備。

對於每一種輸入設備,它包含一個子包來控制和監控該種輸入設備:

pynput.mouse:包含控制和監控鼠標或者觸摸板的類。

pynput.keyboard:包含控制和監控鍵盤的類。

上面提到的子包都已被引入到pynput庫中。要使用上面的子包,從pynput中引入即可。

from pynput import mouse, keyboard

接下來就跟着小胖一起來看下如何玩轉鼠標和鍵盤吧。

1. 控制鼠標

使用pynput.mouse控制鼠標

from pynput.mouse import Controller, Button

mouse = Controller()

# 獲取當前鼠標位置
print(f'當前小胖的鼠標位置是: {mouse.position}')

# 設置鼠標位置
mouse.position = (10, 20)
print(f'現在小胖把鼠標移動到 {mouse.position}')

# 使用相對距離,移動當前鼠標
mouse.move(5, -5)

# 按下鼠標左鍵,釋放鼠標左鍵
mouse.press(Button.left)
mouse.release(Button.left)

# 向下滾動2格
mouse.scroll(0, 2)

效果如圖

python

2. 監控鼠標事件

使用pynput.mouse.Listener監控鼠標事件

from pynput import mouse

def on_move(x, y):
   print(f'鼠標移動到坐標 {(x, y)}')

def on_click(x, y, button, pressed):
   print(f"{'按下' if pressed else '釋放'} ,當前位置是: {(x, y)}")
   if not pressed:
       # 停止監聽
       return False

def on_scroll(x, y, dx, dy):
   print(f"滑動鼠標, {'向下' if dy < 0 else '向上'} at {(x, y)}")

# 一直監聽事件,直到鼠標釋放
with mouse.Listener(
       on_move=on_move,
       on_click=on_click,
       on_scroll=on_scroll) as listener:
   listener.join()

效果如圖

python
鼠標事件監聽器是一個線程,所有的回調函數都會在獨立的線程中運行。

調用pynput.mouse.Listener.stop,發起StopException異常,或者回調函數中返回False都會停止事件的監聽。

3. 控制鍵盤

使用pynput.keyboard.Controller控制鍵盤

from pynput.keyboard import Key, Controller

keyboard = Controller()

# 按下並釋放空格
keyboard.press(Key.space)
keyboard.release(Key.space)

# 按下並釋放小寫字母a
keyboard.press('a')
keyboard.release('a')

# 2種方式輸入大寫A
keyboard.press('A')
keyboard.release('A')
with keyboard.pressed(Key.shift):
   keyboard.press('a')
   keyboard.release('a')

# 直接操作鍵盤輸入Hello World
keyboard.type('Hello World')

4. 監控鍵盤事件

使用pynput.keyboard.Listener監聽鍵盤事件

from pynput import keyboard

def on_press(key):
   try:
       print(f'字母 {key.char} 被按下了')
   except AttributeError:
       print(f'特殊的鍵 {key} 被按下了')

def on_release(key):
   print(f'{key} 被釋放了')
   if key == keyboard.Key.esc:
       # 停止監聽
       return False

# 一直監聽鍵盤事件,直到停止
with keyboard.Listener(
       on_press=on_press,
       on_release=on_release) as listener:
   listener.join()

鍵盤事件監聽器是一個線程,所有的回調函數都會在獨立的線程中運行。

調用pynput.keyboard.Listener.stop,發起StopException異常,或者回調函數中返回False都會停止事件的監聽。

傳遞給回調函數的key參數是一個pynput.keyboard.Key類的實例。當特殊按鍵和普通按鍵一起按下時,數字字母按鍵的值會被放置在pynput.keyboard.KeyCode類的實例中,對於不知道的按鍵會返回None。

接下來就是發揮你們能力的時候了,說不定寫個腳本,用exe包裝一下,命名為種子收發器?哈哈哈哈,然后就可以監聽起來了?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM