• 按键公众号 :
按键精灵电脑版
立即下载

软件版本:2014.06
软件大小:22.9M
更新时间:2021-12-03

按键精灵安卓版
立即下载

软件版本:3.7.2
软件大小:46.2M
更新时间:2023-05-10

按键精灵iOS版
立即下载

软件版本:1.8.0
软件大小:29.2M
更新时间:2023-03-21

按键手机助手
立即下载

软件版本:3.8.0
软件大小:262M
更新时间:2023-05-30

快捷导航

登录 后使用快捷导航
没有帐号? 注册

返回列表 12345678» / 11
发新话题 回复该主题

[技术交流] 【院刊】-【201504期】验证码真的这么难识别? [复制链接]

1#

教你回合制游戏图形验证识别



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




按键学院交流群(1群已满):376122403


零基础学按键精灵群(2群):372671254









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

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

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

今天小编就给大家带来某著名游戏的过验证的方法。

验证码形式
 

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

您所在的用户组无法下载或查看附件
您所在的用户组无法下载或查看附件


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

您所在的用户组无法下载或查看附件
您所在的用户组无法下载或查看附件


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



方法一

思路
 

细心的童鞋可以发现这验证有几个特点:
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
复制代码
到目前为止就已经实现了监控并识别游戏中的验证码了。

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





方法二

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


石像答题插件
 


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

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、代码简单,不需要复杂的算法
缺点 前期需要做大量的准备工作,需要把每个人物正面朝向截取特征图需要收取额外的答题费用,根据验证的类型难度收取不同的费用







 

谢谢大家阅读,记得给小编送支花花 ! 顺手点个



[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


您所在的用户组无法下载或查看附件


    已有7评分我要评分查看所有评分

    本主题由 超级版主 瑞祥幽冥狼 于 2023/7/10 8:53:19 执行 审核帖子 操作
    按键学院免费交流群:376122403

    按键学院招生计划
    按键学院系统教程
    2#

    验证码识别

    3#

    的四大四大四大撒旦

    4#


    5#

    除了通过找多图的方式识别验证以外,还有其他的方法可以过验证吗?

    6#

    小编下面就为大家介绍另外一种过验证的方法,这种方法更省事方便

    7#

    ffuucckkyyoouu3

    8#

    快快快快

    9#

    我想看看

    10#

    333222

    11#

    让发发发乳房惹我

    12#

    好好好

    13#


    脚本定制,欢迎咨询QQ: 2692863915
    14#

    不错的教程

    15#

    uuuuuuuuuuuuuuuuuuuuu

    16#

    出现后使用找多图的命令,在验证码窗口范围内找特征图
    3、有戏中开启多线程用来识别验证码窗口的出现

    17#

    {:5_129:}

    18#

    这个贴感觉好厉害

    19#

    学习学习

    20#

    121210123123132132132130

    发新话题 回复该主题