由于目前市面上能找到的模拟触摸库都只支持到iOS11,而主流的iOS版本已经到了13,于是自己写了一个模拟触摸、模拟点击的库,支持iOS11 - 13.6

简介

这个开源,永久免费的库作为一个iOS底层与应用层的桥梁,实现iOS11 - 13.6的模拟触摸。在应用层一行代码即可进行模拟点击,简洁方便(下文会有代码案例)。并且支持所有编程语言编写的应用层脚本或应用程序。同时,本库支持实时控制,0延迟控制你的iOS设备。

特性

模拟触控

支持多指触控(这是唯一一个支持多指同时触控的库)

可编程。支持任何编程语言,包括Python, C, C++, Objective-c, Java等等

实时控制模式。可在电脑/平板/其他手机实时操控iOS设备

系统级别模拟。无需注入到任何程序

App界面

脚本商店 - 用于下载脚本

脚本编辑器 - 在手机上编写你的脚本

其他

前台应用程序切换

系统级消息弹窗

Unix命令行命令执行

安装方法

打开Cydia - 源 - 编辑 - 添加 - http://47.114.83.227 (注意!!!是"http"而不是"https" 后续版本可能会变成https)

安装"ZJXTouchSimulation" 插件

完成

代码示例

Python Version

import socket

import time

# touch event types

TOUCH_UP = 0

TOUCH_DOWN = 1

TOUCH_MOVE = 2

SET_SCREEN_SIZE = 9

# 你可以复制粘贴这个函数到你自己的代码中使用

def formatSocketData(type, index, x, y):

return '{}{:02d}{:05d}{:05d}'.format(type, index, int(x*10), int(y*10))

def horizontalSwipe():

x = 300

s.send(("101" + formatSocketData(TOUCH_DOWN, 7, x, 1000)).encode()) # 模拟点击按下。开头的"10"的意思是告诉插件本次任务为“点击模拟”。“10”后面的“1”是点击模拟的数据计数为1

# 上面的那一行代码等同于s.send(("1011070300010000").encode())

time.sleep(0.01) # 如果你在电脑上运行这段代码,把这个sleeptime改成0.2 (iOS环境下的python time.sleep会比他应该休眠的时间长很多)

while x <= 600:

s.send(("101" + formatSocketData(TOUCH_MOVE, 7, x, 1000)).encode()) # 把我们的手指7移向右边

x += 5

time.sleep(0.01)

while x >= 100:

s.send(("101" + formatSocketData(TOUCH_MOVE, 7, x, 1000)).encode()) # 把我们的手指7移向左边

x -= 5

time.sleep(0.01)

s.send(("101" + formatSocketData(TOUCH_UP, 7, x, 1000)).encode()) # 释放手指

if __name__ == '__main__':

s = socket.socket()

s.connect(("127.0.0.1", 6000)) # 连接插件

time.sleep(0.1) # 连接之后要休眠0.1秒

# 发送的数据格式应为 "{任务ID(2位)}{任务数据}"

############# 切换App到前台演示 ##############

s.send("11com.apple.Preferences".encode()) # 在最开始的“11”的意思是任务id是11 (启动app)。运行这一行会将"com.apple.Prefernces"放到前台运行 (运行“设置”App)。

time.sleep(1)

############# 系统级提示框演示 ##############

s.send("12This Is Title;;Title and content should be splitted by two semicolons. I am going to close settings in 5 seconds.".encode()) # 在最开始的“12”的意思是任务id是12(显示提示框)。提示框标题和内容应该用两个分号隔开

time.sleep(5)

############# 以root权限运行终端代码演示 ##############

s.send("13killall Preferences".encode()) # 在最开始的“13”的意思是任务id是13(运行终端代码)。在这里的运行的代码为“killall Preferences”(关闭“设置”app)

time.sleep(1)

# 接下来让我们看看模拟触摸部分

# 模拟触摸的任务id为10。所以如果你想点击屏幕上的某点,你要发送"10" + "1" + formatSocketData(TOUCH_DOWN, 7, x, 1000)。“10”指明了任务id,“1”是数据计数为1

# 其他的跟旧版本一样

s.send("11com.apple.springboard".encode()) # 返回主屏幕

horizontalSwipe() # 横向滑动模拟

s.close()

实际上,一行代码就实现了iOS点击模拟

s.send(("101"+formatSocketData(TOUCH_DOWN, 7, 300, 400)).encode())

简单方便

手指移动模拟

s.send(("101"+formatSocketData(TOUCH_MOVE, 7, 800, 400)).encode()) # tell the tweak to move our finger "7" to (800, 400)

抬起手指模拟

s.send(("101"+formatSocketData(TOUCH_UP, 7, 800, 400)).encode()) # tell the tweak to touch up our finger "7" at (800, 400)

把他们结合起来

s.send(("101"+formatSocketData(TOUCH_DOWN, 7, 300, 400)).encode())

time.sleep(1)

s.send(("101"+formatSocketData(TOUCH_MOVE, 7, 800, 400)).encode())

time.sleep(1)

s.send(("101"+formatSocketData(TOUCH_UP, 7, 800, 400)).encode())

这三行代码的意思就是,首先手指在 (300, 400)的地方按下,然后移动到 (800, 400), 然后结束。所有的触摸时间都是即使反馈的,没有任何延迟。

再给你们一点我已经写好,你们可以直接复制粘贴使用的函数。这些函数的使用方法已经写在下面了

# touch event types

TOUCH_UP = 0

TOUCH_DOWN = 1

TOUCH_MOVE = 2

SET_SCREEN_SIZE = 9

# you can copy and paste these methods to your code

def formatSocketData(type, index, x, y):

return '{}{:02d}{:05d}{:05d}'.format(type, index, int(x*10), int(y*10))

def performTouch(socket, event_array):

"""触控模拟

模拟在event_array里面的指定好的触控事件。event_array参数是一个包含着触控事件dictionary的数组。dictonary格式:{"type": touch type, "index": finger index, "x": x coordinate, "y": y coordinate}

参数:

socket: 连接到ZJXTouchSImulation插件的socket实例

event_array: 触摸事件dictionary数组

返回值:

None

调用示例:

performTouch(s, [{"type": 1, "index": 3, "x": 100, "y": 200}]) # 在 (100, 300)用手指3按下

"""

event_data = ''

for touch_event in event_array:

event_data += formatSocketData(touch_event['type'], touch_event['index'], touch_event['x'], touch_event['y'])

socket.send('10{}{}'.format(len(event_array), event_data))

def switchAppToForeground(socket, app_identifier):

"""将App调至前台

参数:

socket: 连接到ZJXTouchSImulation插件的socket实例

app_identifier: iOS App的bundle identifier

返回值:

None

调用示例:

switchAppToForeground(s, "com.apple.springboard") # 返回主屏幕

"""

socket.send('11{}'.format(app_identifier).encode())

def showAlertBox(socket, title, content):

"""显示一个系统级的消息框

参数:

socket: 连接到ZJXTouchSImulation插件的socket实例

title: 消息框的标题

content: 消息框的内容

返回值:

None

调用示例:

showAlertBox(s, "Low Battery", "10% of battery remaining") # just a joke

"""

socket.send('12{};;{}'.format(title, content).encode())

def executeCommand(socket, command_to_run):

"""使用root权限调用shell command

参数:

socket: 连接到ZJXTouchSImulation插件的socket实例

command_to_run: 你想要运行的shell command

返回值:

None

调用示例:

executeCommand(s, "reboot") # 重启手机

"""

socket.send('13{}'.format(command_to_run).encode())

使用示例

做了两个使用示例,模拟触摸使用电脑实时控制iOS设备玩游戏。由于示例放不上来,使用示例可去github看

更多内容(使用说明等)请移步Github,有中文文档。记得给个star哦。吾爱论坛也会同步更新。

python模拟ios点击_iOS13 模拟点击 模拟触摸 按键模拟 自写按键精灵相关推荐

  1. iOS逆向 - iOS13 iOS14 模拟点击 模拟触摸 按键模拟 新触动精灵 开源免费

    由于目前市面上能找到的模拟触摸库都只支持到iOS11,而主流的iOS版本已经到了14,于是自己写了一个模拟触摸.模拟点击的库,支持iOS11 - 14 Github链接:https://github. ...

  2. python登录网页账号密码_Python 通过爬虫实现GitHub网页的模拟登录的示例代码

    1. 实例描述 通过爬虫获取网页的信息时,有时需要登录网页后才可以获取网页中的可用数据,例如获取 GitHub 网页中的注册号码时,就需要先登录账号才能在登录后的页面中看到该信息,如下图所示.那么该如 ...

  3. IOS UI Automation 学习之常用类,方法和模拟手势

    为什么80%的码农都做不了架构师?>>>    IOS UI Automation 学习之常用类,方法和模拟手势 常用类结构图 作者不擅长作画,如果有好的画此类图形的工具,可以留言, ...

  4. python登录各种网页示例_Python 通过爬虫实现GitHub网页的模拟登录的示例代码

    1. 实例描述 通过爬虫获取网页的信息时,有时需要登录网页后才可以获取网页中的可用数据,例如获取 GitHub 网页中的注册号码时,就需要先登录账号才能在登录后的页面中看到该信息,如下图所示.那么该如 ...

  5. 百度推出开发者搜索 Beta;雷军手机使用时长曝光;苹果败诉,电脑上可以模拟 iOS 系统 | 极客头条...

    「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 丁恩华 出品 | CSDN(ID:CSDNnews ...

  6. python爬虫——利用超级鹰识别验证码并进行古诗网进行模拟登录

    目录 前言 一.超级鹰的注册 二.利用xpath解析登录页面的验证码图片 三.利用超级鹰识别获取验证码 四.模拟浏览器发送请求进行模拟登录 五.验证是否模拟登录成功 前言 本文章是利用python爬虫 ...

  7. Python 模拟登陆神库!集合了20+个平台的模拟登陆脚本

    Awesome-python-login-model 是一个国人开发的模拟登陆仓库,在这个仓库上有20几个网站的模拟登陆脚本,你可以基于这个仓库实现的代码做简易的修改,以实现自己的自动化功能. 仓库地 ...

  8. Chrome浏览器免插件更改Ua模拟iOS和Android等教程,附QQ和微信

    Chrome浏览器免插件更改Ua模拟iOS和Android等教程,附QQ和微信 .. http://www.zuanke8.com/thread-1798313-1-1.html (出处: 赚客吧) ...

  9. python协程(4): asyncio结合多线程解决阻塞问题以及timer模拟

    一.异步方法依然会假死(freezing) 什么是程序的假死,这里不再多描述,特别是在编写桌面程序的时候,如果是使用单个线程,同步函数的方式,假死是不可避免的,但是有时候我们即使是使用了异步函数的方式 ...

  10. CSS3模拟IOS滑动开关

    前言 H5站点需要IOS滑动按钮的效果,想了想似乎CSS3能搞起,就折腾出来了...挺简单的..请看注释 效果 代码 <!DOCTYPE html> <html lang=" ...

最新文章

  1. ASIA TODAY 英文版
  2. Confluence 6 导入 SSL 证书和问题解决
  3. shrio初体验(2)Realm
  4. 基于MVVM的知乎日报应用安卓源码
  5. 配置管理-CMMI的五个等级
  6. 2017.9.13 不等式组 思考记录
  7. Something about WMI
  8. VC6.0的工程设置解读Project--Settings
  9. oracle数据表丢失数据库,Oracle数据库数据丢失恢复的几种方法总结
  10. redis基础学习(一)— 配置项
  11. 美团 Flink 大作业部署与状态稳定性优化实践
  12. 使用PHP控制MODBUS-RTU设备
  13. 精简ttf,svg字体库文件,删除多余字体,保留用到字体
  14. 如何理解会议中控系统
  15. DWT文件怎么转换成html,dwg和dwt文件有什么区别?DWT又可以转换什么格式?-迅捷CAD转换器...
  16. 金三银四找工作,真没你想的那么难!
  17. Java数字转中文数字
  18. 【Io开发笔记】机智云智能浇花器实战(3)-自动生成代码移植
  19. 设计表:多张表存储学生成绩及各种信息
  20. 抱歉,我也不知道程序员35岁以后该怎么办!

热门文章

  1. 你有哪些独到的识人技巧?
  2. Python实现网络爬虫
  3. APP测试面试题,总结的很到位,安排!
  4. 想改变Facebook? 先改变扎克伯格!
  5. 计算机大赛获奖作品动画,全国xx杯说课大赛计算机类一等奖作品:《遮罩动画》说课课件...
  6. IJCAI2021 Person Re-identification相关论文集合推荐
  7. Hive 面试题 | 连续登陆天数统计
  8. oracle 按天数统计数据
  9. RHCE 考试经验总结
  10. 【linux浅谈017】gbd调试常用指令