- 初中三年级
- 2220985
- 396
- 0
- 532 朵
- 2506 个
- 334 个
- 480
- 2013-10-27
|
1#
t
T
发表于 2015-04-02 18:14
|
|只看楼主
教你回合制游戏图形验证识别 本文由按键学院提供技术支持 按键学院交流群(1群已满):376122403 零基础学按键精灵群(2群):372671254
小编昨天在按键贴吧上看到了一个妹子为了学习游戏中的验证识别,居然爆XX照求师傅教!!
妹子为了学习都爆XX照了,想必是很有学习的诚意,其实大可不必这样做,按键学院目前正在进行回合制方面的实战,其中就有涉及到类似的识别技术。
为什么此类识别技术如此受大家的追捧呢?你想想看,用脚本在家里挂着游戏,你在外面吃着火锅、唱着歌,游戏忽然就出现验证码了啊啊!!轻则白白浪费那么多时间还有电费,运气不好的话还封号,游戏白挂了,想想这画面就太美不敢看。 今天小编就给大家带来某著名游戏的过验证的方法。
| 验证码形式在本次给大家带来的是某著名回合制游戏的图形验证码识别方法,先给大家看看验证码的样子 - 您所在的用户组无法下载或查看附件
- 您所在的用户组无法下载或查看附件
在这个验证码中总共有4个人物,其中有1个人物面朝的方向是和其他3个不同的,游戏中需要识别出朝向不同的人物,然后点击它就可以过验证了。上图中就是点击下面的红框的人物即可。 |
- 您所在的用户组无法下载或查看附件
- 您所在的用户组无法下载或查看附件
那现在问题来了,这种验证码对于人工去识别很简单,但是如果用按键代码的话改如何去识别呢? 方法一思路细心的童鞋可以发现这验证有几个特点: 1、游戏中的这些出现的人物模型基本上是固定的, 2、人物的正反朝向的角度也是固定的, 3、游戏只要求找出面朝外面的角色模型。 我们可以根据这几个特点来制定方案。 | 前期准备:把出现在验证中的每个人物模型的正面朝向都分别截取特征图。尽量截取身体中间部分,以免边缘部分和环境人物交错导致识别出现问题。 代码思路: 1、把截取的人物的特征图名称保存到数组当中 2、验证出现后使用找多图的命令,在验证码窗口范围内找特征图 3、有戏中开启多线程用来识别验证码窗口的出现 | 代码1、把前期准备好的特征图的名称统一保存到一个数组里。如果你还想着用常规的方法一个个去输入名称赋值的话,那就太low了,我们可以利用命令库里的遍历文件名的方法一次性赋值 命令名称 | Lib.文件.遍历指定目录下所有文件名 | 命令功能 | 遍历指定目录下所有文件名 | 命令参数 | 参数1 字符串型,文件夹路径 | 返回值 | 返回的是数组变量,存储着每一个文件名 |
- 验证图 = Lib.文件.遍历指定目录下所有文件名("c:\验证特征")
- For i=0 to UBound(验证图)-1
- TracePrint 验证图(i)
- Next
复制代码 2、现在存放图片的数组也有了,那改如何利用好这个数组来实现找多图呢? 可以利用For循环记次的方式来遍历找图 - Sub 识别验证()
- For i = 0 To UBound(验证图)
- FindPic 0,0,1024,768,验证图(i),0.9,intX,intY
- If intX >= 0 Then
- MoveTo intX, intY
- Delay 100
- LeftClick 1
- End If
- Next
- End sub
复制代码 3、在脚本中开启一个多线程,来监控验证窗口是否出现。可以通过多点找色的方法 - ID = BeginThread (等待验证) '开启等待验证的多线程监控验证窗口
- Sub 等待验证()
- XY=Plugin.Color.FindMutiColor(0,0,1920,1080,"FFFFFF","-6|8|FFFFFF,-3|8|FFFFFF,3|8|FFFFFF,12|10|0000FF,14|3|0000FF,12|7|0000FF,70|4|0000FF,71|5|0000FF",1)
- If XY <> "" Then
- Call 识别验证
- End If
- End sub
复制代码到目前为止就已经实现了监控并识别游戏中的验证码了。 声明:这里只是提供一个识别的思路,具体的代码童鞋们可以根据具体的情况进行优化哦~~ 方法二除了通过找多图的方式识别验证以外,还有其他的方法可以过验证吗? 当然有!小编下面就为大家介绍另外一种过验证的方法,这种方法更省事方便 | 石像答题插件石像答题是目前网络上比较热门常用的人工代答平台。是通过调用对应的答题插件,把获取到的验证码截图下来发送到答题平台的服务器上,然后经过人工的识别后把答案返回到脚本中 | 1、使用石像答题之前需要先下载石像的答题插件,把 dll 后缀的插件复制到按键精灵目录中的plugin文件夹里 下载地址: 石像答题插件下载 (下载右边的按键精灵插件) 2、第一次使用插件需要先注册插件 - //开头注册执行一次即可,编号和密码可登陆www.sxdama.com查看
- 用户插件编号="3261815159"
- 注册码 = GetEnvironmentVar("MMRegCode")'获取商业小精灵注册码
- 用户插件密码="1eb5169f92cd5ecee2a04899"
- 作者插件编号="3261815159"
- Call Plugin.RemoteAnswer.InitialiseUserData(用户插件编号, "", 注册码, 用户插件密码, 作者插件编号)
复制代码 3、之后在脚本识别到验证出现后,通过截图的命令把验证码的区域截图保存下来 - //获取坐标范围为0,0,100,200的区域图像,保存为"C:\1.bmp"。
- Call Plugin.RemoteAnswer.PrintScreen(0, 0, 100, 200, "C:\1.bmp")
- //获取坐标范围为0,0,100,200的区域图像,保存为"C:\2.bmp"。
- Call Plugin.RemoteAnswer.PrintScreen(0, 0, 100, 200, "C:\2.bmp")
- //执行命令把图片"C:\1.bmp"与"C:\2.bmp"两张图片合拼成"C:\Pic.gif"动态图片。
- Call Plugin.RemoteAnswer.CompositeImage("C:\图片.gif","C:\1.bmp","C:\2.bmp")
- //---------以上例子演示了如何截取gif 图并发送,如果验证是静态不动的图像,可以只截图一张---------
复制代码 4、之后就是把验证图片发送到石像的平台,并且等待接收答案,这个过程也可以做成函数直接调用 - Function GetAnswer(图片路径, 图片格式, 类型编号)
- GetAnswer = "" '函数开头赋值空值,表示未处理
- Dim 题ID, 答题开始时间, Answer //定义变量
- //发送图片路径,图片格式,类型编号的题目信息,并返回题目ID。
- 题目ID = Plugin.RemoteAnswer.SendImage(图片路径, 图片格式, 类型编号)
- 答题开始时间 = now //记录下时间
- Do
- Answer = Plugin.RemoteAnswer.QueryAnswer(题目ID)
- If Answer = "等待答案" Then
- TracePrint "等待处理中……" & Int(DateDiff("s", 答题开始时间, now))
- Else
- If InStr(Answer, "验证错误") > 0 Then
- 错误代码 = Split(Answer, ":")(1) //返回值格式如: 验证错误:101 使用Split函数获取101这个值。
- TracePrint "验证错误:" & 错误代码'这里可以把错误代码记录一个地方,以便提交客服人员咨询。
- ElseIf Answer = "无法识别" Then
- TracePrint "图像异常无法处理,需要重新发题目"
- Else
- TracePrint "成功得到答案"
- GetAnswer = Answer //答案赋值
- End If
- Exit Do //离开Do循环
- End If
- Delay 500 //循环语句中适当的延时给予CPU响应时间
- Loop Until DateDiff("s", 答题开始时间, now) > 120 //这里计算等待时间,超过120秒,则离开循环
- End Function
复制代码这里只是对石像答题插件做一个简单的介绍,具体的使用方法,以及命令的参数,童鞋们可以到官网详细的了解。石像官网地址:石像答题平台官网 | 总结这次介绍的这两种过验证的方式都各有优缺点,童鞋们可以根据自己的需求进行选择一种方式 | 找多图识别验证 | 石像答题平台 | 优点 | 1、 识别速度快 2、前期特征图做好的话在识别上比较稳定 3、制作完毕使用过程中不会产生额外的费用 | 1、使用方便,前期不需要做过多的准备工作 2、代码简单,不需要复杂的算法 | 缺点 | 前期需要做大量的准备工作,需要把每个人物正面朝向截取特征图 | 需要收取额外的答题费用,根据验证的类型难度收取不同的费用 |
谢谢大家阅读,记得给小编送支花花 ! 顺手点个赞 [tr=rgb(143, 188, 143)] | 按键精灵安卓班(第一期)大肆招生啦~ | 回实战班:回合制通用教学火热报名 | 招生对象:零基础用户,快速学会按键精灵安卓版 招生人数:70人 【报名时间】:3/18——4/6 【学费】:128RMB 【学习日期】:1个月(2015.4.6-2015.4.27) 【上课时间】:周1、周3、周5 19:30--21:30 【上课导师】:梦幻小飞侠 【实战游戏】:[天天富翁]、[三国之刃]、[梦幻西游]、[天 龙 八 部]
| 本期重点:回合制游戏--神武 学习时效:终生有效 上课时间:周2、周4、周6的 20:00--22:00 导师:工程师07 技术支持:果儿(院刊编辑) | 点我进入按键学院报名啦 招生细节进群咨询招生办主任:2群-372671254(优先加入) 1群-376122403 |
- 您所在的用户组无法下载或查看附件
|