Android自动脚本--实现自动滑块校验

ushadow

共 1200字,需浏览 3分钟

 ·

2020-08-10 20:25

最近在做某个应用自动化操作时遇到滑块校验,本来以为获取到滑动坐标问题就完美解决,没想到应用有人机校验,看来还是经验不足。

8gjA8YrEoh.jpg

既然有校验,那只能写个算法去模拟人的滑动,开始为了偷懒节省时间,只进行简单的降速、中间随机暂停等操作。事实证明天下没有白吃的午餐,时间没节省,体力到是花费了不少。最后只能静下心来,仔细研究人工操作时滑块的轨迹。在这里记录下校验绕过算法,也希望能帮助有同样问题的可以节省点时间。

初始值

  初始横坐标:x

  初始纵坐标:y

  slong:滑动距离[此处是自左向右]

  最终x坐标:llx=x+slong

  滑动步数:2次

  计算初次滑动距离 : dl

      if(slong>200)

{

int dl = slong - 70;

if(slong>600) {

   dl = slong - 150;

}

else if(slong>400) {

   dl = slong - 100;

}

}

计算每步滑动的steps(Android): stepsm  


if(slong<=200)

{

  stepsm=getrandomnmber(80,120);


}

else if(slong>200&&slong<400)

{

  stepsm=getrandomnmber(120,170);


}

else if(slong>400&&slong<600)

{


  stepsm=getrandomnmber(170,200);

}

else

{

  stepsm=getrandomnmber(200,250);

}

注:

Android中每个steps消耗5ms。

getrandomnmber随机产生2参数之间的随机数



具体伪代码如下:

if(slong>200)

   {

   

       if(slong>200&&slong<400)

       {

           stepsm=getrandomnmber(120,170);

       }

       else if(slong>400&&slong<600)

       {

           stepsm=getrandomnmber(170,200);

       }

       else

       {

           stepsm=getrandomnmber(200,250);

       }

   

       int dl = slong - 70;

       if(slong>600) {

           dl = slong - 150;

       }

       else if(slong>400) {

           dl = slong - 100;

       }

       Point p1 = new Point();

       Point p2 = new Point();

       Point p3 = new Point();


       p1.x = x;

       p1.y = y;

       p2.x = x + dl;

       p2.y = y;

       p3.x = llx;

       p3.y = y;

       tosleep(2000);

       Point[] args = {p1, p2, p3};

       mDevice.swipe(args, yst);

       mDevice.swipe(x, y, llx, y,100);

   }

   else

   {

       tosleep(2000);

       stepsm=getrandomnmber(80,120);

       mDevice.swipe(x, y, llx, y,stepsm);


   }

浏览 79
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报