大家好,我是3分钟学堂的郭立员。
给大家带来一个轨迹滑动的写法教程,轨迹滑动的这个名称是在群里看到他们问问题提到的,可以理解为模拟手动滑动,它的应用是在防止平台检测滑动方面使用。
轨迹滑动介绍 所谓轨迹滑动就是滑动不走直线,我对比下普通滑动和轨迹滑动的区别。
【普通滑动】
【轨迹滑动】
人在缓慢滑动屏幕的时候,很难滑出一条直线,通常情况都是曲线的。
曲线原理 一条直线(线段),想要变成曲线,可以在首尾两点之间,加入其它的点,并且这些点偏离原来的直线,最终形成分段的曲线。
这里面有两个要点:
①加入点进行分段,最简单的就是均分,比如加入7个点,平均分成8段
②偏移,坐标加上一个随机数
实例演示 假设起始点的坐标是(100,400),结束点的坐标是(300,400),分成5段。
直线的情况,每个点的纵坐标都是400,我们稍微调整一下纵坐标的数值~
调整后,可以看到原本的直线,变成了折线,这里纵坐标调整的数值如果是一个随机数,那么折线的幅度就会是随机不规则的。
继续微调折点的坐标,这一次把横坐标也加一个随机数。
经过几次调整以后,原本一条直线变成了不规则的曲线。
代码- Dim x1=100,y1=400,x2=300,y2=400
- Dim num=5 //分段数
- Dim Range=15 //波动范围15像素
- Dim x=(x2-x1)/num
- For i = 0 To num
- If i = 0 Then
- TouchDown x1, y1, 1
- ElseIf 0 < i < num Then
- TouchMove x1 + x * i + Int(Range * Rnd() - Range / 2), y1 + Int(Range * Rnd() - Range / 2),1
- Else
- Touch x2,y2,1
- End If
- Delay 100
- Next
- TouchUp 1
复制代码 延展 ①设置滑动速度快慢,这一步是由循环里面的延迟控制,延迟越长,滑动的速度越慢。
②纵坐标分段,我们滑动未必都是横向的,也可能是纵向的,或者斜向的,那么就要求纵向也是分段随机的。
- Dim x1=100,y1=200,x2=500,y2=700
- Dim num=10 //分段数
- Dim Range=15 //波动范围15像素
- Dim Rndtime=200 //滑动快慢,单位是毫秒
- Dim x=(x2-x1)/num
- Dim y=(y2-y1)/num
- For i = 0 To num
- If i = 0 Then
- TouchDown x1, y1, 1
- ElseIf 0 < i < num Then
- TouchMove x1 + x * i + Int(Range * Rnd() - Range / 2), y1 + y*i+Int(Range * Rnd() - Range / 2),1
- Else
- TouchMove x2,y2,1
- End If
- Delay Rndtime
- Next
- TouchUp 1
复制代码
封装函数- Dim x1=500,y1=200,x2=200,y2=700
- Dim num=10 //分段数
- Dim Range=15 //波动范围15像素
- Dim Rndtime=200 //滑动快慢,单位是毫秒
- Call RndSwipe(x1, y1, x2, y2, num, Range, Rndtime)
- Function RndSwipe(x1,y1,x2,y2,num,Range,Rndtime)
- Dim x=(x2-x1)/num
- Dim y=(y2-y1)/num
- For i = 0 To num
- If i = 0 Then
- TouchDown x1, y1, 1
- ElseIf 0 < i < num Then
- TouchMove x1 + x * i + Int(Range * Rnd() - Range / 2), y1 + y*i+Int(Range * Rnd() - Range / 2),1
- Else
- TouchMove x2,y2,1
- End If
- Delay Rndtime
- Next
- TouchUp 1
- End Function
复制代码 封装函数有几个参数:
起始坐标,结束坐标,分段数,随机范围,滑动快慢