Python模拟鼠标真人移动轨迹

1、pynput 控制移动版本

import random
import time
import pynput

ctr = pynput.mouse.Controller()
window_size = (1366, 768)
step = 20
target = (1366, 768)

end = (1351, 45)

time.sleep(5)


def move_test(ctr, step, end):
    # start = ctr.position
    start = (200, 200)
    print("起始坐标:", start)
    for i in range(0, step):
        if i <= step / 2:
            dx = int(random.random() * (end[0] - start[0]) / step)
            dy = int(random.random() * (end[1] - start[1]) / step)
        else:
            dx = int(random.random() * (end[0] - start[0]) / step * 2)
            dy = int(random.random() * (end[1] - start[1]) / step * 2)
        time.sleep(random.random() * 0.001)
        print(dx, dy)
        ctr.move(dx, dy)
        print("中间坐标:", ctr.position)
    ctr.position = end
    print("结束坐标:", end)


move_test(ctr, step, end)
代码

 

2、生成相对移动轨迹列表,可以对接任何模块,但不同控制模块移动有差异

import random
import time

window_size = (1366, 768)
step = 20
start_pos = (200, 200)  # 起始坐标
target_pos = (1351, 45)  # 终点坐标

relative_pos_list = []


def move_pos(start_pos, target_pos, step=10):
    print("起始坐标:", start_pos)
    for i in range(0, step):
        if i <= step / 2:
            dx = int(random.random() * (target_pos[0] - start_pos[0]) / step)
            dy = int(random.random() * (target_pos[1] - start_pos[1]) / step)
        else:
            dx = int(random.random() * (target_pos[0] - start_pos[0]) / step * 2)
            dy = int(random.random() * (target_pos[1] - start_pos[1]) / step * 2)
        # time.sleep(random.random() * 0.001)
        print(dx, dy)
        relative_pos_list.append((dx, dy))


move_pos(start_pos, target_pos, step)
print(relative_pos_list)

# 测试
import pyautogui

time.sleep(3)
pyautogui.moveTo(start_pos)  # 先移动到起始坐标
for pos in relative_pos_list:  # 然后轨迹一段
    pyautogui.move(pos)
pyautogui.moveTo(target_pos)  # 最后进准到目标点
代码2

 

posted @ 2023-05-11 19:23  zwnsyw  阅读(1594)  评论(0编辑  收藏  举报