iOS手机App爬虫- (1) Mac安装Appium真机运行环境
iOS手机App爬虫
- 一、环境准备与工具安装
- 1. 开发基础环境配置
- 1.1 Node.js环境
- 1.2 Xcode套件
- 1.3 Java环境
- 2. 核心测试工具链
- 2.1 Appium主程序
- 2.2 辅助工具集
- 3. 可视化工具
- 二、设备与环境验证
- 1. 设备信息获取
- 2. 环境健康检查
- 三、WebDriverAgent编译部署
- 1. 设备端准备
- 2. 项目配置
- 3. Xcode证书配置
- 4. 编译与部署
- 四、自动化测试执行
- 1. 启动Appium服务
- 2. 配置Appium Inspector
- 3. 参数获取方法
- 4. 启动测试会话
- 五、常见问题排查
一、环境准备与工具安装
1. 开发基础环境配置
1.1 Node.js环境
# 安装NodeJs(JavaScript运行时环境,用于运行Appium服务)
nvm install 21
nvm use 21
node --version # 验证安装
npm -v # 验证包管理器
1.2 Xcode套件
- Xcode安装:从App Store下载安装(iOS应用开发必备IDE)

- Xcode Command Line Tools:终端执行安装命令
xcode-select --install
1.3 Java环境
# 安装Java(Appium部分依赖需要Java环境)
brew install java# 配置环境变量(下面内容添加至/etc/profile)
echo 'JAVA_HOME=/opt/homebrew/opt/openjdk
export JAVA_HOME' | sudo tee -a /etc/profile# 然后source一下
source /etc/profile
2. 核心测试工具链
2.1 Appium主程序
# 安装Appium(跨平台自动化测试框架)
npm install -g appium
# 查看支持的驱动列表(如下图)
appium driver list# 安装XCUITest驱动(iOS专用测试驱动)
appium driver install xcuitest

2.2 辅助工具集
# 安装WebDriver客户端库
npm install -g wd# 安装Appium Doctor(环境检测工具,它检查Appium成功运行的前提条件)
npm install -g appium-doctor# 安装Carthage(WebDriverAgent依赖管理器)
brew install carthage# 安装设备管理工具
brew install libimobiledevice # 设备通信库
brew install ideviceinstaller # 应用管理工具
brew install ios-deploy # 应用部署工具
3. 可视化工具
- Appium Desktop:(可选,未安装状态下可直接使用命令行启动Appium)下载地址(2022年后停止更新)
- Appium Inspector:下载地址(元素定位与调试工具)
二、设备与环境验证
1. 设备信息获取
# 获取设备UDID
idevice_id -l# 查看设备详细信息
ideviceinfo
ideviceinfo -k DeviceName # 设备名称
ideviceinfo -k ProductVersion # iOS版本# 查看已安装应用列表
ideviceinstaller -l -o list_user# 验证设备连接
ios-deploy -c


2. 环境健康检查
appium-doctor --ios

三、WebDriverAgent编译部署
1. 设备端准备
- 开启开发者模式:设置 > 隐私与安全性 > 开发者模式(连点开启)
- 启用UI自动化:开发者选项 > 启用UI自动化
2. 项目配置
# 修改文件所有权(Username修改为自己的appium实际安装路径)
sudo chown -R $(whoami) /Users/{Username}/.appium# 编辑 WebDriverAgent.xcodeproj 项目(下面2种方式任选其1)
# 1. 命令行快速启动项目
sudo appium driver run xcuitest open-wda
# 2. 手动双击文件 WebDriverAgent.xcodeproj 文件启动
/Users/{Username}/.appium/node_modules/appium-xcuitest-driver/node_modules/appium-webdriveragent/WebDriverAgent.xcodeproj

3. Xcode证书配置
-
修改以下目标的签名配置(每一个都要配置!!!):
- WebDriverAgentRunner
- WebDriverAgentLib
- IntegrationApp
-
配置要点:
-
勾选
Automatically manage signing -
Team一栏选择个人开发者账号(需登录Apple ID) -
修改
Bundle Identifier(把Facebook的内容换成自己的(随便修改,保证唯一即可)

-
设置目标iOS版本与设备iOS版本匹配

-
修改Scheme
Product -> Scheme -> WebDriverAgentRunner

-
修改Destination
Product -> Destination -> 选择自己的手机

-
4. 编译与部署
- 执行测试编译:
Product > Test - 首次编译安装时会遇到需要证书授权的报错,需要在手机上信任证书后再次执行第1步:
- 设置 > 通用 > VPN与设备管理 > 信任开发者证书


- 设置 > 通用 > VPN与设备管理 > 信任开发者证书
- 验证服务状态:
- 手机访问
localhost:8100/status

- 命令行执行端口映射:
# 端口映射 (把手机上启动的8100端口服务映射到电脑端)iproxy 8100 8100- 电脑访问
localhost:8100/status

- 手机访问
四、自动化测试执行
1. 启动Appium服务
appium --allow-cors

2. 配置Appium Inspector

{"platformName": "iOS","appium:deviceName": "XXXXX", //手机名"appium:platformVersion": "18.3.1", //手机iOS系统版本"appium:bundleId": "com.tencent.xin", //要启动的手机app的bundleId"appium:automationName": "XCUITest","appium:xcodeOrgId": "XXXXX", //开发者ID"appium:udid": "XXXXXXXX-XXXXXXXXXXXX", //手机设备ID"appium:noReset": true,"appium:xcodeSigningId": "iPhone Developer"
}
3. 参数获取方法
| 参数项 | 获取命令 |
|---|---|
| deviceName | ideviceinfo -k DeviceName |
| platformVersion | ideviceinfo -k ProductVersion |
| bundleId | ideviceinstaller -l -o list_user |
| udid | idevice_id -l |
| xcodeOrgId | Xcode账户设置中查看(如下图,在这个界面下点击那个 Other就能获取了) |

4. 启动测试会话
- 确保设备处于解锁状态
- 点击Start Session开始自动化测试

五、常见问题排查
- 证书信任问题:需在设备端手动信任开发者证书
- 端口占用冲突:确保8100端口未被其他程序占用
- WDA编译失败:检查Xcode版本与iOS系统版本兼容性
- 元素定位失败:使用Appium Inspector验证控件树结构
提示:建议保持iOS设备屏幕常亮(设置 > 显示与亮度 > 自动锁定 > 永不)
相关文章:
iOS手机App爬虫- (1) Mac安装Appium真机运行环境
iOS手机App爬虫 一、环境准备与工具安装1. 开发基础环境配置1.1 Node.js环境1.2 Xcode套件1.3 Java环境 2. 核心测试工具链2.1 Appium主程序2.2 辅助工具集 3. 可视化工具 二、设备与环境验证1. 设备信息获取2. 环境健康检查 三、WebDriverAgent编译部署1. 设备端准备2. 项目配…...
android s下make otapackage编译失败
[DESCRIPTION] android s上,我司推荐使用split build的方式进行编译,但是部分客户依旧会采用AOSP full build的方式进行编译。而我司在这块release的时候,并未进行验证。因此执行make otapackage的时候,会出现如下报错。 [0312/…...
《Elasticsearch实战:从零开始构建高效全文搜索引擎》
内容概览: Elasticsearch简介 Elasticsearch的定义与应用场景 Elasticsearch的核心特性 环境搭建与安装 安装Elasticsearch 启动与配置Elasticsearch 索引设计与映射 创建索引 定义映射(Mapping) 字段类型与分析器的选择 数据导入与管理…...
【Linux网络】认识协议(TCP/UDP)、Mac/IP地址和端口号、网络字节序、socket套接字
⭐️个人主页:小羊 ⭐️所属专栏:Linux 很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~ 目录 1、初识协议2、UDP、TCP3、Mac、IP地址4、端口号5、网络字节序6、socket 1、初识协议 协议就是一种约定。如何让不同厂商生产的计…...
12、数据库、Sql单表多表
文章目录 一、数据库简介二、单表三、多表四、等值连接五、内联结六、inner join on、left join on、right join on区别七、模糊查找八、作业 一、数据库简介 数据在内存: 优点:读写速度快缺点:程序结束后数据丢失 保存到文件 优点&#…...
Spring Boot 实现图片上传并生成缩略图功能
在实际开发中,上传图片并生成缩略图是一项常见需求,例如在电商平台、社交应用等场景中,缩略图可以有效提高页面加载速度,优化用户体验。本文将介绍如何在 Spring Boot 项目中实现上传图片并生成缩略图的功能。 📦 1. …...
洛谷B3664[语言月赛202209] 零食售卖点
B3664 [语言月赛202209] 零食售卖点 - 洛谷 代码区: #include<bits/stdc.h>using namespace std;int main(){int n;cin >> n;int arry[n],dp[n];for(int i0;i<n;i){cin >> arry[i];}dp[0]0;sort(arry,arryn);for(int i1;i<n;i){dp[i]arry…...
贪心算法:JAVA从理论到实践的探索
在计算机科学领域,贪心算法是一种简单而高效的算法设计策略,广泛应用于优化问题的求解。它通过在每一步选择中都采取当前状态下最优的选择,以期望最终得到全局最优解。本文将深入探讨贪心算法的原理、应用场景,并通过具体代码示例,帮助读者更好地理解和掌握这一算法。 一…...
线程池10种常见坑
1. 直接使用 Executors 创建线程池 直接使用 Executors 提供的快捷方法: ExecutorService executor Executors.newFixedThreadPool(10);问题 无界队列:newFixedThreadPool 使用的队列是 LinkedBlockingQueue,它是无界队列,任务…...
鸿蒙ArkTs如何实现pdf预览功能?
鸿蒙ArkTs如何实现pdf预览功能? 前言PDFKit运行示例代码报错真机运行先看效果一、预览本地pdf文件二、预览线上的pdf文件三、预览沙箱目录中pdf的文件(重点)效果中的整体代码总结 Harmony OS NEXT版本(接口及解决方案兼容API12版本或以上版本) 前言 在开…...
KylinSP3 | 防火墙和麒麟安全增强设置KySec
一、系统防火墙原理 麒麟操作系统从V10版本开始,默认使用了Firewalld防火墙,Firewalld是能提供动态管理的防火墙,支持网络/防火墙区域,用于定义网络连接或接口的信任级别。支持IPv4和IPv6防火墙设置、以太网桥接和IP集。将运行时…...
【C++】面试常问八股
5、内存管理 野指针 野指针指的是未进行初始化或未清零的指针,不是NULL指针野指针产生原因及解决方案: 指针变量未初始化:指针变量定义时若未初始化,则其指向的地址是随机的,不为NULL;定义时初始化为NULL…...
vscode多文件编译构建(CMake)和调试C++
目录 1. CMake 基础构建工具及作用相关配置文件 2. 配置 tasks.json关键字段详细解释 3. 配置 launch.json关键字段详细解释 4. 配置 CMakeLists.txt关键部分详细解释 5. 构建和调试项目1. 仅构建项目1.1 任务执行顺序1.2 cmake 任务执行详情1.3 build 任务执行详情1.4 构建后的…...
使用Docker 部署 LNMP+Redis 环境
使用Docker 部署 LNMPRedis 环境 Docker 简介 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互…...
文件上传漏洞学习笔记
一、漏洞概述 定义 文件上传漏洞指未对用户上传的文件进行充分安全校验,导致攻击者可上传恶意文件(如Webshell、木马),进而控制服务器或执行任意代码。 危害等级 ⚠️ 高危漏洞(通常CVSS评分7.0)ÿ…...
375_C++_cloud手机推送,添加人脸告警信息到任务队列中,UploadAlarmPush是典型的工厂模式应用,为什么使用工厂模式完成这部分代码
一:AlarmFaceInfo的应用 让我帮你解析这个lambda表达式的实现: // ...................... .h ...........................// struct RsMsgPushTask_S : public Task{AlarmType_E mainAlarmType;unsigned int subAlarmType;DateTime alarmTime...
Spring Boot 中的日志管理
一、日志框架选择 1. 主流框架对比 框架特点Spring Boot 默认支持Logback- 性能优异,Spring Boot 默认集成- 支持自动热更新配置文件✅ (默认)Log4j2- 异步日志性能更强- 支持插件扩展- 防范漏洞能力更好❌ (需手动配置)JUL (JDK自带)- 无需额外依赖- 功能简单&am…...
火绒终端安全管理系统V2.0网络防御功能介绍
火绒终端安全管理系统V2.0 【火绒企业版V2.0】网络防御功能包含网络入侵拦截、横向渗透防护、对外攻击检测、僵尸网络防护、Web服务保护、暴破攻击防护、远程登录防护、恶意网址拦截。火绒企业版V2.0的网络防御功能,多层次、多方位,守护用户终端安全。 …...
海康摄像头 + M7s(Monibuca) + FFmpeg + Python实现多个网络摄像头视频流推流
最近在研究流媒体服务器时,我注意到了一款开源软件——M7s。按照官网的指南部署完成后,我开始进行测试,发现单视频流推送非常顺利,没有任何问题。然而,当我尝试进行多视频流推送时,却发现网上的相关教程寥寥…...
抖音视频如何下载保存去水印
随着短视频平台的兴起,抖音作为国内最受欢迎的短视频平台之一,吸引了大量用户上传和观看各种创意视频。许多用户在浏览抖音视频时,往往会想要保存一些有趣或精彩的视频片段,但抖音视频通常会有水印,影响观看体验。为了…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...
Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...
【算法训练营Day07】字符串part1
文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接:344. 反转字符串 双指针法,两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...
华硕a豆14 Air香氛版,美学与科技的馨香融合
在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...
短视频矩阵系统文案创作功能开发实践,定制化开发
在短视频行业迅猛发展的当下,企业和个人创作者为了扩大影响力、提升传播效果,纷纷采用短视频矩阵运营策略,同时管理多个平台、多个账号的内容发布。然而,频繁的文案创作需求让运营者疲于应对,如何高效产出高质量文案成…...
CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)
漏洞概览 漏洞名称:Apache Flink REST API 任意文件读取漏洞CVE编号:CVE-2020-17519CVSS评分:7.5影响版本:Apache Flink 1.11.0、1.11.1、1.11.2修复版本:≥ 1.11.3 或 ≥ 1.12.0漏洞类型:路径遍历&#x…...
人机融合智能 | “人智交互”跨学科新领域
本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...
2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)
安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分: 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...
Python 训练营打卡 Day 47
注意力热力图可视化 在day 46代码的基础上,对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...
