利用pyautogui实现模拟鼠标键盘的操作
- 获取屏幕尺寸
screenWidth, screenHeight = pyautogui.size()
- 鼠标点击
pyautogui.click(158,237,button='left') ####在相应位置点击鼠标左键
- 模拟键盘输入
pyautogui.typewrite('Hello world!') 键盘输入
- 双击鼠标
pyautogui.doubleClick(x=None, y=None, interval=0.0, button='left', duration=0.0, tween=pyautogui.linear)#
最后附上利用模拟器在电脑刷抖音、点赞、评论的代码
利用了线程池的方式,可以同时打开多个模拟器进行抖音、快手等的流量
import random
import sys
import threading
import time
from multiprocessing.dummy import Lock, Pool
import pyautogui
import pyperclip
, button='left', duration=0.0, tween=pyautogui.linear)#当前位置点击鼠标
def content_text(t): #评论的填入内容
if t==1:
return 'hello word' #修改‘’里面的内容即可
elif t==2:
return '你好'
else:
return '债见'
star_time = time.time() #记录程序起始运行时间
lock=threading.Lock() #申请一把锁
run_time = 3600 #程序一共运行多少秒
#模拟器屏幕中间点xy,点赞按钮xy,评论按钮xy,文本输入位置xy,消息发送按钮xy, 评论内容
data_list = [
(228,241, 412,535, 415,592, 144,788, 415,725, 1), #一行为一个窗口的数据
(708,237, 895,535, 892,591, 664,783, 897,725, 2)
]
def content(xc,yc,xt,yt,num):
pyautogui.click(xc,yc,button='left') ##评论按钮的位置
time.sleep(10) #受限于网络,防止评论未加载出来(网络好可以适当减小数值)
pyautogui.click(xt,yt,button='left') ##评论文本输入框的位置
pyperclip.copy(content_text(num)) # 根据账号不同调用不同的评论写入评论
time.sleep(2)
pyautogui.hotkey('ctrl','v')
def work(z):# #模拟器屏幕中间点xy,点赞按钮xy,评论按钮xy,文本输入位置,文本发送按钮
xp = z[0]; yp = z[1]; xl = z[2]; yl = z[3]; xc = z[4]; yc = z[5]; xt = z[6]; yt = z[7]; xs = z[8];ys = z[9]; num = z[10]
n=random.randint(2,7)
time.sleep(n)
pyautogui.moveTo(xp, yp,0.1)#移动鼠标到(x,y,时长)
pyautogui.scroll(-200)#当前位置滑动滚轮
n=random.randint(5,10)
time.sleep(n)
n=random.randint(2,10)
time.sleep(n)
if n > 6:
pyautogui.click(xl,yl,button='left') ####在点赞的位置点击鼠标左键
time.sleep(2)
if n == 8: #完成一次点赞评论
lock.acquire() #加锁,进程互斥
content(xc,yc,xt,yt,num) #获取评论输入
lock.release() #解锁
time.sleep(8)
pyautogui.click(xs,ys,button='left') #点击发送
time.sleep(3)
pyautogui.click(xp,yp,button='left') #点击空白区域返回视频页
# n=random.randint(1,3)
# time.sleep(n)
pool = Pool(len(data_list)) #建立线程池,根据窗口数量
while True:
# work(1614,248,1841,595,1852,682,1450,979,1854,884)
pool.map(work,data_list) #多线程运行操作
# pool.close()
# pool.join()
if time.time() - star_time > run_time:
sys.exit() #时间到退出程序