【iOS免越狱】利用IOS自动化WebDriverAgent实现自动直播间自动输入

1.目标

由于看直播的时候主播叫我发 666,支持他,我肯定支持他呀,就一直发,可是后来发现太浪费时间了,能不能做一个直播间自动发 666 呢?于是就开始下面的操作。

2.操作环境
  • iPhone一台

  • WebDriverAgent

  • mac 安装 Xcode

3.流程

首先安装WebDriverAgent ,安装教程请看上一篇

web-driver-agent_appium-实现自动点击+滑动屏幕https://ccccc.blog.csdn.net/article/details/134053551

界面输入文本 api

objectivec 复制代码
[[FBRoute POST:@"/wda/keys"] respondWithTarget:self action:@selector(handleKeys:)],




+ (id<FBResponsePayload>)handleKeys:(FBRouteRequest *)request
{
  NSString *textToType = [request.arguments[@"value"] componentsJoinedByString:@""];
  NSUInteger frequency = [request.arguments[@"frequency"] unsignedIntegerValue] ?: [FBConfiguration maxTypingFrequency];
  NSError *error;
  if (![FBKeyboard typeText:textToType frequency:frequency error:&error]) {
    return FBResponseWithStatus([FBCommandStatus invalidElementStateErrorWithMessage:error.description
                                                                           traceback:nil]);
  }
  return FBResponseWithOK();
}

实现源码

objectivec 复制代码
+ (BOOL)typeText:(NSString *)text error:(NSError **)error
{
  return [self typeText:text frequency:[FBConfiguration maxTypingFrequency] error:error];
}

+ (BOOL)typeText:(NSString *)text frequency:(NSUInteger)frequency error:(NSError **)error
{
  __block BOOL didSucceed = NO;
  __block NSError *innerError;
  [FBRunLoopSpinner spinUntilCompletion:^(void(^completion)(void)){
    [[FBXCTestDaemonsProxy testRunnerProxy]
     _XCT_sendString:text
     maximumFrequency:frequency
     completion:^(NSError *typingError){
       didSucceed = (typingError == nil);
       innerError = typingError;
       completion();
     }];
  }];
  if (error) {
    *error = innerError;
  }
  return didSucceed;
}

方法已经找到,开始调用他

自己写一个 app,安装到手机

获取手机屏幕信息

objectivec 复制代码
+(void)window_size{
    
        
    NSLog(@"开始window_size: %@",@"-------------------");
    NSString* url = @"";
    url = [NSString stringWithFormat:@"http://127.0.0.1:8100/session/%@/window/size",iPhoneSessionId];
    
    [xddHttp reqWithMethodxdd2:url Method:0 HTTPBody:@"" Block:^(NSURLResponse *  response, NSDictionary *  data) {
        NSLog(@"window_size结果: %@",data);
//        [0]    (null)    @"width" : (long)414
//        [1]    (null)    @"height" : (long)736
        
        iPhoneWidth  = [data[@"value"][@"width"] longLongValue];
        iPhoneHeight = [data[@"value"][@"height"] longLongValue];
        
    }];
    
}

调用输入

objectivec 复制代码
+(void)element_value:(NSString*)text
{
    NSLog(@"开始输入: %@",@"-------------------");
    NSString* url = @"";
    url = [NSString stringWithFormat:@"http://127.0.0.1:8100/session/%@/element/38CB6A3B02B28FAFB0754B03D12AA7646ACEA558/value2",iPhoneSessionId];//1
   // url = [NSString stringWithFormat:@"http://127.0.0.1:8100/session/%@/wda/keys",iPhoneSessionId];//2
    NSString*body = @"";
    body = @"{\"text\":\"123好hao\"}";//1
    body = @"{\"value\":[\"123好hao\\r\\n\"],\"frequency\":10}";//2
    
    body = [NSString stringWithFormat:@"{\"text\":\"%@\"}",text];
    
    [xddHttp reqWithMethodxdd2:url Method:1 HTTPBody:body Block:^(NSURLResponse * _Nonnull response, NSDictionary * _Nonnull data) {
        NSLog(@"输入结果: %@",data);
    }];
}

+(void)element_value{
    [self element_value:@"123好hao"];
}

开启定时器,实现自动发送

objectivec 复制代码
+(void)myTimers{
    userarr = [self testArr];
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        // 在这里执行你的任务
        //[self goo:nil];
    });
    
    myTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(goo:) userInfo:nil repeats:YES];
    
}

点击屏幕的输入框,然后输入文字

objectivec 复制代码
+(void)goo:(NSTimer *)timer{
    
    NSString*msgText = [xddCode getinfo:@"sendText"];
    NSString*msgTextKu = userarr[sendCount];
    NSString*text = [NSString stringWithFormat:@"%@%@\\r",msgText,msgTextKu];
    
    myAlertController.message=[NSString stringWithFormat:@" [%d / %lu] %@_%@",(sendCount+1),(unsigned long)userarr.count,msgText,msgTextKu];
    sendCount = sendCount + 1;
    NSString*url = [NSString stringWithFormat:@"http://127.0.0.1:8100/session/%@/wda/touch/perform",iPhoneSessionId];
    NSString*body = @"";
    body = @"{\"actions\":[{\"action\":\"tap\",\"options\":{\"x\":131,\"y\":248}}]}";//点击
    body = @"{\"actions\":[{\"action\":\"tap\",\"options\":{\"x\":131,\"y\":248}}]}";//点击
    body = [NSString stringWithFormat:@"{\"actions\":[{\"action\":\"tap\",\"options\":{\"x\":50,\"y\":%ld}}]}",iPhoneHeight-50];
    
    [xddHttp reqWithMethodxdd2:url Method:1 HTTPBody:body Block:^(NSURLResponse *  response, NSDictionary *  data) {
        NSLog(@"点击结果: %@",data);
        NSString*msgTextKu = userarr[sendCount];
        NSString*text = [NSString stringWithFormat:@"%@%@%@\\r",msgText,msgTextKu,[xddCode getTime:@"ss"]];
        
        [self element_value:text];//输入文字
    }];
    
}

实现效果

https://live.csdn.net/v/340697https://live.csdn.net/v/340697

web-driver-agent_appium自动输入

相关推荐
admin and root3 小时前
「AI安全篇」实战AntiDebug自动化JS逆向加解密MCP
javascript·人工智能·网络安全·自动化·漏洞挖掘·cnvd·src赏金
智能RPA3 小时前
智能体自动化平台与主数据管理平台(MDM)对比评测
人工智能·自动化·agent·rpa
其实防守也摸鱼3 小时前
Fastjson 反序列化漏洞(JNDI注入)
android·数据库·安全·oracle·自动化·fastjson·反序列化
跨境小彭3 小时前
Temu拉美站点铺货实操复盘:手动复制痛点与批量自动化解决方案
服务器·人工智能·搜索引擎·自动化·temu电商运营
心之语歌3 小时前
Tkinter 画布基本梳理
运维·服务器·python
Shulex4 小时前
面向跨境电商多渠道消息系统的技术架构:亚马逊站内信合规对接与自动化执行链路设计
运维·架构·自动化
bloglin999994 小时前
vmware部署centos7启动docker容器后无法访问服务
运维·docker·容器
杨云龙UP5 小时前
TDengine 3.4.2.8 Community 三节点三副本生产集群部署实战(DNode/MNode/taosAdapter/Explorer)
大数据·linux·运维·数据库·tdengine·时序库
梦帮科技5 小时前
领域认知知识库图谱注入:从双式记账图网络到高质量问答对自动化合成流水线
运维·网络·数据库·人工智能·矩阵·架构·自动化
逐流人6 小时前
Ceph分布式存储集群配置与池管理:从配置优先级到PG、复本池与纠删码池
运维·分布式·ceph·云原生·云计算·rados