我正在尝试使用pyautogui
或模拟类似人类的鼠标移动autopy
你们有谁知道或可以提供一个好方法吗?
假设我想从 (0, 0) 移动到 (56, 200)。如果我使用pyautogui.moveTo()
,它就会跳到那里。如果我使用autopy.mouse.smooth_move()
,它可以完成工作,但动作非常假。
我希望它移动到屏幕上的随机节点,但最终到达目的地。
.moveTo()
还有另外两个参数可以传递来帮助模仿人类行为,duration
和tween
. 第一个是到达指定点需要多长时间,第二个是改变它的行为,例如:开始快和结束慢,开始慢和结束快等等......
查看此部分以供参考。
我还导入random
了创建一个随机浮点数来传递duration
参数,我认为它有助于使鼠标具有更人性化的行为。
from random import *
import pyautogui as py
py.moveTo(720, 360, uniform(0.6, 2.7), py.easeOutQuad)
py.moveTo(450, 900, uniform(0.6, 2.7), py.easeOutBack)
py.moveTo(360, 720, uniform(0.6, 2.7), py.easeInOutQuad)
如果您使用的是 IDE,请键入pyautogui.ease
(或py.ease
),您将看到弹出窗口,其中显示了您可以尝试的所有变体。
作为旁注,人类鼠标的行为通常具有曲线并.moveTo()
沿直线移动。除非您与之交互的任何程序都不需要机器人行为(例如在线视频游戏),否则这不会成为问题。他们可以检测到您的所有移动都是线性的,然后禁止您的帐户,因此请注意(或者可能制作您自己的功能,为鼠标移动添加曲线)。