妹子“卖身”为哪般?验证码真的这么难识别?

社区服务
高级搜索
猴岛论坛辅助工具妹子“卖身”为哪般?验证码真的这么难识别?
发帖 回复
倒序阅读 最近浏览的帖子最近浏览的版块
1个回复

妹子“卖身”为哪般?验证码真的这么难识别?

楼层直达
mimi_rice

ZxID:55494225

等级: 上士
举报 只看楼主 使用道具 楼主   发表于: 2015-04-03 0
教你回合制游戏图形验证识别

本文按键学院提供技术支持





按键学院交流群(1群已满):376122403
零基础学按键精灵群(2群):372671254






引用
小编昨天在按键贴吧上看到了一个妹子为了学习游戏中的验证识别,居然爆XX照求师傅教!! {:5_136:}

妹子为了学习都爆XX照了,想必是很有学习的诚意,其实大可不必这样做,按键学院目前正在进行回合制方面的实战,其中就有涉及到类似的识别技术。

为什么此类识别技术如此受大家的追捧呢?你想想看,用脚本在家里挂着游戏,你在外面吃着火锅、唱着歌,游戏忽然就出现验证码了啊啊!!轻则白白浪费那么多时间还有电费,运气不好的话还封号,游戏白挂了,想想这画面就太美不敢看。
{:4_88:}
今天小编就给大家带来某著名游戏的过验证的方法。

验证码形式


在本次给大家带来的是某著名回合制游戏的图形验证码识别方法,先给大家看看验证码的样子

[attachimg]174647[/attachimg]  [attachimg]174648[/attachimg]

引用
在这个验证码中总共有4个人物,其中有1个人物面朝的方向是和其他3个不同的,游戏中需要识别出朝向不同的人物,然后点击它就可以过验证了。上图中就是点击下面的红框的人物即可。

[attachimg]174649[/attachimg]   [attachimg]174650[/attachimg]

那现在问题来了,这种验证码对于人工去识别很简单,但是如果用按键代码的话改如何去识别呢?{:4_92:}



方法一

思路



引用
细心的童鞋可以发现这验证有几个特点:
1、游戏中的这些出现的人物模型基本上是固定的,
2、人物的正反朝向的角度也是固定的,
3、游戏只要求找出面朝外面的角色模型。
我们可以根据这几个特点来制定方案。

前期准备:把出现在验证中的每个人物模型的正面朝向都分别截取特征图。尽量截取身体中间部分,以免边缘部分和环境人物交错导致识别出现问题。

引用
代码思路:
1、把截取的人物的特征图名称保存到数组当中  
2、验证出现后使用找多图的命令,在验证码窗口范围内找特征图
3、有戏中开启多线程用来识别验证码窗口的出现

代码





1、把前期准备好的特征图的名称统一保存到一个数组里。如果你还想着用常规的方法一个个去输入名称赋值的话,那就太low了,我们可以利用命令库里的遍历文件名的方法一次性赋值






命令名称 Lib.文件.遍历指定目录下所有文件名
命令功能 遍历指定目录下所有文件名
命令参数 参数1 字符串型,文件夹路径
返回值 返回的是数组变量,存储着每一个文件名
  1. 验证图 = Lib.文件.遍历指定目录下所有文件名("c:\验证特征")
  2. For i=0 to UBound(验证图)-1
  3.     TracePrint 验证图(i)
  4. Next
2、现在存放图片的数组也有了,那改如何利用好这个数组来实现找多图呢? 可以利用For循环记次的方式来遍历找图
  1. Sub 识别验证()
  2. For i = 0 To UBound(验证图)
  3.     FindPic 0,0,1024,768,验证图(i),0.9,intX,intY
  4.     If intX >= 0 Then
  5.         MoveTo intX, intY
  6.         Delay 100
  7.         LeftClick 1
  8.     End If
  9. Next
  10. End sub
3、在脚本中开启一个多线程,来监控验证窗口是否出现。可以通过多点找色的方法
  1. ID = BeginThread (等待验证) '开启等待验证的多线程监控验证窗口
  2. Sub 等待验证()
  3. 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)
  4. If XY <> "" Then
  5.         Call 识别验证
  6. End If
  7. End sub
到目前为止就已经实现了监控并识别游戏中的验证码了。

声明:这里只是提供一个识别的思路,具体的代码童鞋们可以根据具体的情况进行优化哦~~






方法二

引用
除了通过找多图的方式识别验证以外,还有其他的方法可以过验证吗?
当然有!小编下面就为大家介绍另外一种过验证的方法,这种方法更省事方便
{:4_89:}



石像答题插件




引用
石像答题是目前网络上比较热门常用的人工代答平台。是通过调用对应的答题插件,把获取到的验证码截图下来发送到答题平台的服务器上,然后经过人工的识别后把答案返回到脚本中

1、使用石像答题之前需要先下载石像的答题插件,把 dll 后缀的插件复制到按键精灵目录中的plugin文件夹里
下载地址:石像答题插件下载 (下载右边的按键精灵插件)

2、第一次使用插件需要先注册插件
  1. //开头注册执行一次即可,编号和密码可登陆www.sxdama.com查看
  2. 用户插件编号="3261815159"
  3. 注册码 = GetEnvironmentVar("MMRegCode")'获取商业小精灵注册码
  4. 用户插件密码="1eb5169f92cd5ecee2a04899"
  5. 作者插件编号="3261815159"
  6. Call Plugin.RemoteAnswer.InitialiseUserData(用户插件编号, "", 注册码, 用户插件密码, 作者插件编号)
3、之后在脚本识别到验证出现后,通过截图的命令把验证码的区域截图保存下来
  1. //获取坐标范围为0,0,100,200的区域图像,保存为"C:\1.bmp"。
  2. Call Plugin.RemoteAnswer.PrintScreen(0, 0, 100, 200, "C:\1.bmp")
  3. //获取坐标范围为0,0,100,200的区域图像,保存为"C:\2.bmp"。
  4. Call Plugin.RemoteAnswer.PrintScreen(0, 0, 100, 200, "C:\2.bmp")
  5. //执行命令把图片"C:\1.bmp"与"C:\2.bmp"两张图片合拼成"C:\Pic.gif"动态图片。
  6. Call Plugin.RemoteAnswer.CompositeImage("C:\图片.gif","C:\1.bmp","C:\2.bmp")
  7. //---------以上例子演示了如何截取gif 图并发送,如果验证是静态不动的图像,可以只截图一张---------
4、之后就是把验证图片发送到石像的平台,并且等待接收答案,这个过程也可以做成函数直接调用
  1. Function GetAnswer(图片路径, 图片格式, 类型编号)
  2.     GetAnswer = "" '函数开头赋值空值,表示未处理
  3.     Dim 题ID, 答题开始时间, Answer //定义变量
  4.     //发送图片路径,图片格式,类型编号的题目信息,并返回题目ID。
  5.     题目ID = Plugin.RemoteAnswer.SendImage(图片路径, 图片格式, 类型编号)
  6.     答题开始时间 = now //记录下时间
  7.     Do
  8.         Answer = Plugin.RemoteAnswer.QueryAnswer(题目ID)
  9.         If Answer = "等待答案" Then
  10.             TracePrint "等待处理中……" & Int(DateDiff("s", 答题开始时间, now))
  11.         Else
  12.             If InStr(Answer, "验证错误") > 0 Then
  13.                 错误代码 = Split(Answer, ":")(1) //返回值格式如: 验证错误:101  使用Split函数获取101这个值。
  14.                 TracePrint "验证错误:" & 错误代码'这里可以把错误代码记录一个地方,以便提交客服人员咨询。
  15.             ElseIf Answer = "无法识别" Then
  16.                 TracePrint "图像异常无法处理,需要重新发题目"
  17.             Else
  18.                 TracePrint "成功得到答案"
  19.                 GetAnswer = Answer //答案赋值
  20.             End If
  21.             Exit Do //离开Do循环
  22.         End If
  23.         Delay 500 //循环语句中适当的延时给予CPU响应时间
  24.     Loop Until DateDiff("s", 答题开始时间, now) > 120 //这里计算等待时间,超过120秒,则离开循环
  25. End Function
引用
这里只是对石像答题插件做一个简单的介绍,具体的使用方法,以及命令的参数,童鞋们可以到官网详细的了解。石像官网地址:石像答题平台官网

总结




这次介绍的这两种过验证的方式都各有优缺点,童鞋们可以根据自己的需求进行选择一种方式

找多图识别验证 石像答题平台
优点1、 识别速度快
2、前期特征图做好的话在识别上比较稳定
3、制作完毕使用过程中不会产生额外的费用
1、使用方便,前期不需要做过多的准备工作
2、代码简单,不需要复杂的算法
缺点 前期需要做大量的准备工作,需要把每个人物正面朝向截取特征图需要收取额外的答题费用,根据验证的类型难度收取不同的费用








西湖网络

ZxID:21246521

等级: 中校
举报 只看该作者 沙发   发表于: 2015-04-25 0
Re:女末子“卖身”为哪般?验证码真的这么难识别?
来支持了啊   谢谢分享
« 返回列表
发帖 回复