- 超级版主
- 1228894
- 26984
- 25
- 8059 朵
- 36138 个
- 4755 个
- 421340
- 2012-07-18
|
1#
t
T
发表于 2022-02-23 15:55
|
|只看楼主
说明:
- 写给看得懂的人
- 本源码为17年所写【已失效,仅工学习】,语法不够简练凑合看
已知条件:
- 滑动验证为2x2【图1】
- 需按示意线路滑动【图2、图3虚线示意】
- 滑动方向未知【图2、图3红色三角形】
代码思路构思:
- 每个点有三个滑动方向的可能性【图4、图5】
- 应滑动验证示意会带红色三角形故取12个指定坐标用于判断路径【图6】
代码一览: Import "ShanHai.lua" //先下载山海插件,并放在插件目录 plugin 下 Dim 易码账号,易码密码,手机号,sid,token,wy,a,cs,验证码 易码账号 = "*" 易码密码 = "*" sid = "2555" //SID是项目ID,项目ID 请自行在官网查看 登录易码 '雷电1.8.6 360*640*240 Dim 账号密码,分割,账号,密码,开始时间,手机打码累计次数 //******************* Dim 点坐标X = Array(120, 275, 120, 275)'需要修改 Dim 点坐标Y=Array(375,375,525,525)'需要修改 Dim 是否相等,数量,数组X,数组Y,判断,最终,正,反 Dim 圆1X=Array(170,155,120)'需要修改 Dim 圆1Y=Array(375,410,425)'需要修改 Dim 圆2X=Array(220,235,270)'需要修改 Dim 圆2Y=Array(375,410,425)'需要修改 Dim 圆3X=Array(120,155,170)'需要修改 Dim 圆3Y=Array(475,490,525)'需要修改 Dim 圆4X=Array(270,235,220)'需要修改 Dim 圆4Y=Array(475,490,525)'需要修改 //****************************** Do 开始时间=ShanHai.GetUpTime() Sys.ClearAppCache "com.huajiao" RunApp "com.huajiao" 延迟 15 RunApp "com.huajiao",".main.MainActivity" 同步点击 324,597, "我的" 是否出现特殊页面 38, 489, "4755FE", "登录页面", true, 38, 489 判断指定点颜色 192, 273, "441EF1", "登录-新浪" 账号密码=读取一行() 分割 = Split(账号密码, "----") 账号 = 分割(0) 密码 = 分割(1) 点击并输入 104, 411, 账号, "输出账号" 点击并输入 104, 474, 密码, "输出密码" 同步点击 180, 550, "登录" 延迟 3 Do If GetPixelColor(123, 374) = "888888" Then TracePrint "出现验证码,准备过验证" 过验证码 Else Exit Do End If Loop 是否出现特殊页面 257, 446, "0082FF", "确定", true, 257, 446 RunApp "com.huajiao",".user.bind.AccoutSafeActivity"'设置 延迟 2 If GetPixelColor(330, 205) = "703AFA" Then 手机打码累计次数=0 Do If 同步点击(330, 205, "绑定") = True Then TracePrint "准备绑定手机" Call 获取手机号() 点击并输入 153, 333, 手机号, "输出手机号" 点击 225,399, "获取验证码" Call 获取验证码() 点击 128,412,"验证码" 点击并输入 128,412,验证码,"验证码" Call 拉黑释放验证码() 同步点击 190, 512, "绑定" If GetPixelColor(190,441) = "703AFA" Then TracePrint "手机号用过,准备重新绑定" 同步点击 190, 441, "我知道了" 点击 28,76, "手机号用过----返回手机绑定页面" Else If 成功获取验证码 = True and GetPixelColor(330, 205) <> "703AFA" Then TracePrint "绑定成功" 记录读取行数 TracePrint "本次耗时"&ShanHai.GetUpTime()-开始时间&"秒~~~~~~~~~~~~~~~~~~~~~~~~~~" Exit Do End If End If Else TracePrint "判断为网络问题,退出账号重启" Exit Do End If Loop Else TracePrint "无需绑定手机,准备进入下一个号" End If Loop Sub 点击并输入(x, y, 输入内容, 提示) TracePrint 提示&"----"&输入内容 Tap x, y 延迟 2 InputText 输入内容 End Sub Sub 判断指定点颜色(x, y, 颜色,提示) Dim 没找到次数=0 Do Dim 当前颜色= GetPixelColor(X, Y, 0) TracePrint X&":"& Y&"当前颜色"&当前颜色 If 当前颜色 = 颜色 Then TracePrint "符合"&提示 Exit Do End If 没找到次数 = 没找到次数 + 1 TracePrint "没找到次数"& 没找到次数 If 没找到次数 = 25 Then Exit Do End If 延迟 1.5 Loop End Sub Function 是否出现特殊页面(x,y,颜色,提示,是否点击,点击X,点击Y) If GetPixelColor(x,y)= 颜色 Then TracePrint "出现特殊页面"&"----"&提示 是否出现特殊页面 = True If 是否点击 = True Then 同步点击 点击X,点击Y,提示 End If Else TracePrint "继续下一步,未出现"&"----"&提示 是否出现特殊页面=False End If End Function Function 同步点击(X, Y, 提示) Dim kn=0 Dim 当前颜色= GetPixelColor(X, Y, 0) Tap X, Y Do If GetPixelColor(X, Y, 0) <> 当前颜色 Then TracePrint X&","& Y&"----"&提示&"----点击完毕,页面完成跳转" 延迟 2 Exit Function Else TracePrint "等待----"&提示&"----跳转中" kn = kn + 1 If kn = 10 Then TracePrint "尝试纠正 再次点击" Tap X, Y 同步点击=True End If If kn = 30 Then TracePrint "超时退出" 同步点击=False Exit Function End If End If 延迟 1 Loop End Function Sub 点击(x, y, 提示) TracePrint 提示 Tap x, y 延迟 1 End Sub Sub 延迟(秒) Delay 秒*1000 End Sub Dim 微博帐号记录,j,Var1 Function 读取一行() 微博帐号记录 = File.ReadLines(GetTempDir()&"/微博帐号记录.txt") If 微博帐号记录(0) = null Then j = 0 Else j = 微博帐号记录(0) End If TracePrint "本次读取第----"&(j+1)&"行" Var1 = File.ReadLines(GetTempDir()&"/微博帐号.txt") If Int(j) > Int(UBOUND(Var1)) Then Do TracePrint "已经是最后一行了" Delay 5000 Loop End If 读取一行 = Var1(j) j=j+1 //记录读取行数 End Function Sub 记录读取行数() Dir.Delete GetTempDir()&"/微博帐号记录.txt" Call File.Write (GetTempDir() & "/微博帐号记录.txt",j) End Sub Function 登录易码() TracePrint "易码登陆函数",易码账号,易码密码 If 易码账号 = "" or 易码密码 = "" Then TracePrint "易码账号或密码为空",3000 End If Do //登陆易码 wy = "http://api.51ym.me/UserInterface.aspx?action=login&username=" & 易码账号 & "&password=" & 易码密码 Dim cs= url.get(wy) If cs Then Dim 登陆 = Split (cs,"|") token = 登陆(1) TracePrint "易码登陆成功" & token ,3000 Exit Do ElseIf cs = "1005" Then TracePrint "用户名或密码错误", 3000 ElseIf cs = "1006" then TracePrint "用户名不能为空", 3000 ElseIf cs = "1007" Then TracePrint "密码不能为空",3000 ElseIf cs = "1009" Then TracePrint "账户已被禁用", 3000 EndScript End If Delay 3000 Loop End Function Function 获取手机号() //易码登陆函数 手机打码累计次数 = 手机打码累计次数 + 1 TracePrint "本账号第"&手机打码累计次数&"次获取手机码" Do //获取手机号 TracePrint "准备获取手机号" wy = "http://api.51ym.me/UserInterface.aspx?action=getmobile&itemid=" & sid & "&token=" & token&"&coderid=1286"&"&country=1"&"&isp=1" cs= url.get(wy) If cs Then If cs = "1008" Then TracePrint "账号余额不足", 3000 ElseIf cs = "2004" Then TracePrint "暂时没有可用的号码,三秒钟之后再次获取", 3000 ElseIf cs = "2005" Then TracePrint "获取号码数量已达到上限",3000 ElseIf InStr(1, cs, "success") > 0 Then Dim 手机 = Split (cs,"|") 手机号 = 手机(1) TracePrint "获取手机号码" & 手机号 & "成功", 1000 Delay 1000 Exit Do End If Else TracePrint "暂时未连接到易码服务器,三秒后再次尝试",3000 End If Delay 3000 Loop End Function Dim 成功获取验证码 Function 获取验证码() 成功获取验证码=False TracePrint "获取验证码函数" Dim q = 0 Do wy = "http://api.51ym.me/UserInterface.aspx?action=getsms&mobile=" & 手机号 & "&itemid=" & sid & "&token=" & token & "&*release=1" cs = URL.Get(wy) If cs Then If cs = "3001" Then TracePrint "正在获取验证码,将在"& 20 - q & "秒后超时",3000 Delay 3000 q = q + 1 ElseIf InStr(1, cs, "success") > 0 Then TracePrint cs,1000 dim c = shanhai.RegexFind(cs, "%d%d%d%d%d%d") //%d%d%d%d%d%d 是6位验证码,根据自己的需求酌情调整验证码位数 验证码 = c(0) TracePrint 验证码,1000 成功获取验证码=True Exit Do Else TracePrint "连接易码服务器异常,3秒后再次尝试", 3000 End If If q > 20 Then 成功获取验证码=False TracePrint "获取验证码超时", 3000 点击 28,76, "超时----返回手机绑定页面" Delay 1000 End If End If Loop End Function Function 拉黑释放验证码() Dim wy1 = url.get("http://api.51ym.me/UserInterface.aspx?action=addignore&mobile="& 手机号 &"&itemid=" & sid &"&token=" & token) Dim wy2 = url.get("http://api.51ym.me/UserInterface.aspx?action=release&mobile="& 手机号 &"&itemid="& sid &"&token="&token) If wy1 = "success" Then TracePrint "拉黑成功", 1000 Delay 1000 End If If wy2 = "success" Then TracePrint "释放成功", 1000 Delay 1000 End If End Function Sub 过验证码() If 判断连接线数量("圆1") = 1 Then 最终= 判断方向 ("圆1") End If If 判断连接线数量("圆2") = 1 Then 最终=最终& 判断方向 ("圆2") End If If 判断连接线数量("圆3") = 1 Then 最终=最终&判断方向 ("圆3") End If If 判断连接线数量("圆4") = 1 Then 最终=最终&判断方向 ("圆4") End If 正 = Mid(最终, 1, 2) & Mid(最终, 4, 1) & Mid(最终, 3, 1) TracePrint 正 滑 正 延迟 2
延迟 5
反 = Mid(最终, 3, 2) & Mid(最终, 2, 1) & Mid(最终, 1, 1) TracePrint 反 滑 反 延迟 5
End Sub Sub 滑(参数) Dim 坐标1 = Mid(参数, 1, 1) Dim 坐标2 = Mid(参数, 2, 1) Dim 坐标3 = Mid(参数, 3, 1) Dim 坐标4= Mid(参数, 4, 1) TouchDown 点坐标X (坐标1-1), 点坐标Y (坐标1-1), 1 TouchMove 点坐标X (坐标2-1), 点坐标Y (坐标2-1), 1, 500 TouchMove 点坐标X (坐标3-1), 点坐标Y (坐标3-1), 1, 500 TouchMove 点坐标X (坐标4-1), 点坐标Y (坐标4-1), 1, 500 TouchUp 1 End Sub Function 判断连接线数量(参数) 数量=0 Select Case 参数 Case "圆1" 数组X = 圆1X 数组Y = 圆1Y Case "圆2" 数组X = 圆2X 数组Y = 圆2Y Case "圆3" 数组X = 圆3X 数组Y = 圆3Y Case "圆4" 数组X = 圆4X 数组Y = 圆4Y End Select For i = 0 To UBOUND(圆1X) 是否相等 = CmpColor(数组X (i),数组Y(i),"FFFFFF-101010",0.9) If 是否相等 > -1 Then //TracePrint "非黑色" Else // TracePrint "黑色" 数量=数量+1 End If Next 判断连接线数量= 数量 End Function Function 判断方向(参数) If 参数 = "圆1" Then For i = 0 To UBOUND(圆1X) 是否相等 = CmpColor(圆1X(i),圆1Y(i),"FFFFFF-101010",0.9) If 是否相等 > -1 Then // TracePrint "非黑色" Else //TracePrint "黑色" If 圆1X(i) = 170 Then '需要修改 判断 = "2" End If If 圆1X(i) = 155 Then '需要修改 判断 = "4" End If If 圆1X(i) = 120 Then '需要修改 判断= "3" End If End If 判断方向="1"& 判断 Next End If If 参数 = "圆2" Then For i = 0 To UBOUND(圆2X) 是否相等 = CmpColor(圆2X(i),圆2Y(i),"FFFFFF-101010",0.9) If 是否相等 > -1 Then // TracePrint "非黑色" Else //TracePrint "黑色" If 圆2X(i) = 220 Then '需要修改 判断= "1" End If If 圆2X(i) = 235 Then '需要修改 判断 = "3" End If If 圆2X(i) = 270 Then '需要修改 判断 = "4" End If End If 判断方向="2"& 判断 Next End If If 参数 = "圆3" Then For i = 0 To UBOUND(圆3X) 是否相等 = CmpColor(圆3X(i),圆3Y(i),"FFFFFF-101010",0.9) If 是否相等 > -1 Then // TracePrint "非黑色" Else //TracePrint "黑色" If 圆3X(i) = 120 Then '需要修改 判断 = "1" End If If 圆3X(i) = 155 Then '需要修改 判断 = "2" End If If 圆3X(i) = 170 Then '需要修改 判断 = "4" End If End If Next 判断方向="3"& 判断 End If If 参数 = "圆4" Then For i = 0 To UBOUND(圆4X) 是否相等 = CmpColor(圆4X(i),圆4Y(i),"FFFFFF-101010",0.9) If 是否相等 > -1 Then // TracePrint "非黑色" Else //TracePrint "黑色" If 圆4X(i) = 270 Then '需要修改 判断 = "2" End If If 圆4X(i) = 235 Then '需要修改 判断 = "1" End If If 圆4X(i) = 220 Then '需要修改 判断 = "3" End If End If 判断方向="4"& 判断 Next End If TracePrint "**************" End Function
|