用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)
效果如圖
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()
效果如圖
滑鼠事件監聽器是一個執行緒,所有的回撥函式都會在獨立的執行緒中執行。
呼叫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包裝一下,命名為種子收發器?哈哈哈哈,然後就可