开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 1942|回复: 19
收起左侧

[易语言纯源码] 【原创】某网站的验证码另类算法思路

[复制链接]
结帖率:88% (7/8)
发表于 2023-8-1 20:05:26 | 显示全部楼层 |阅读模式   山东省烟台市
分享源码
界面截图:
是否带模块: 调用了模块
备注说明: -
本帖最后由 wh78845069 于 2023-8-1 21:21 编辑

前言:
           1.为了防止杠精,提前声明此帖意义在于探讨某些颜色算法的可行性,并非是为了一定应用在滑块过验证。
           2.只使用了精易模块位图操作类,模块自备。
           3.本帖偏向于颜色底层的算法逻辑,默认观看此帖的均为新手,所以有些部分过于冗长敬请见谅。
           4.本源码成品并未实现滑块验证的最终通过成品,仅供学习参考,切勿用作非法用途。
           5.算法若有雷同纯属巧合,暂时大胆为此起名ZXL算法。




思路解析:
           网上有很多模拟图色滑块的类似实现原理(单指非AI模型的图色),多数思路是通过寻找或判断滑块目标的边界线,有些边界线是个固定颜色的描边,所以可以通过找色或者找图来定位,单多数的滑块阴影是半透明的,边缘十分模糊,应该不是代码实时生成,而是提前存储的背景图,这类背景图的边缘随着图片颜色的变化会有改变,难以通过简单找色实现。
VX截图_20230801192345.bmp


如果我们通过截图函数获取整个区域的图片,然后就可以得到一个X宽Y长的颜色点阵,我们小学二年级就学过,

24位BMP图片如果以RGB模式打开,

每个颜色的表达式是颜色=(0-255,0-255,0-255)

VX截图_20230801193213.bmp

如果有学过设计的童鞋就会知道,当R(红色分量)G(绿色分量)B(蓝色分量)光的三原色混合,得到该点的颜色成像,

如果三个值均为0(H000000)则为黑色,如果均为最大值255(HFFFFFF)则为纯白色,

如果三个值相同或者相近,则这个像素更偏向于灰色,且数字越小颜色越深

根据这个原则,精易模块可以取出每个点的颜色数据,也可以单独对某个像素点进行更改

我们可不可以做一个遍历,把所有RGB相近(在一定绝对值误差区间)、且颜色数值偏小的标注出来?

(为什么要区分大小呢?因为验证码的目标偏深灰色,有些值很大的颜色,即使分量接近,也不可能是需要的区域)

代码实现:

           设像素的RGB三个值,任意两值的最大差值不超过[偏差=55]

           设像素的RGB三个值, 每个值均不超过[最大值=96]

            (以上的参数是这个网站图片比较适合的参数,通过测试得出)  

则有以下代码:

代码1.bmp

效果:

验证码10.bmp


到了这一步,能看到这里的大佬基本都理解了帖子的目的和意义,不过还有两个问题需要优化:

1.目标验证区域不会出现在X轴的左半边以及太靠上或者靠下的位置,这些区域可以通过判断代码屏蔽掉

2.有些区域个别像素和我们预设的条件相同,这种情况灰色调的图更为严重,我想到个简单的优化方法,那就是第一遍计算过后,所有符合条件的像素均被涂成红色时,我们可以紧接着进行第二次遍历,假设一个像素为纯红色,则判断他的前后5个像素距离的色块是否也为红色,如果前后只要有一个不是红色,我们就把这个点过滤掉。

验证码11.bmp 代码2.bmp


最终结果展示:

121212.bmp

代码在附件里,有兴趣的可以继续试试调整下参数或者做其他判断条件,

这个主要是用来算法思路学习,至于能不能用找色块或者找形状识别成功我并没有做测试。

希望抛砖引玉,有更好的思路或者算法也希望大佬们踊跃分享。



hk1.0.e

1.95 MB, 下载次数: 30, 下载积分: 精币 -2 枚

评分

参与人数 2好评 +1 精币 +1 收起 理由
龍貓 + 1 新技能已get√
单排练心态 + 1 支持开源~!感谢分享

查看全部评分


结帖率:30% (3/10)

签到天数: 7 天

发表于 2024-6-29 15:11:01 | 显示全部楼层   湖北省荆州市
学习一下。
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)

签到天数: 2 天

发表于 2023-10-26 10:34:09 | 显示全部楼层   浙江省绍兴市

支持开源~!感谢分享
回复 支持 反对

使用道具 举报

签到天数: 11 天

发表于 2023-8-4 01:25:18 | 显示全部楼层   浙江省温州市
支持开源~!感谢分享
回复 支持 反对

使用道具 举报

结帖率:73% (8/11)

签到天数: 20 天

发表于 2023-8-3 20:27:06 | 显示全部楼层   河南省焦作市
感谢分享
回复 支持 反对

使用道具 举报

结帖率:94% (15/16)
发表于 2023-8-3 17:28:20 | 显示全部楼层   广西壮族自治区南宁市
  支持开源~!感谢分享
回复 支持 反对

使用道具 举报

签到天数: 15 天

发表于 2023-8-2 21:29:49 | 显示全部楼层   江苏省连云港市

支持开源~!感谢分享
回复 支持 反对

使用道具 举报

结帖率:100% (2/2)

签到天数: 17 天

发表于 2023-8-2 17:53:40 | 显示全部楼层   广东省深圳市
学习一下
回复 支持 反对

使用道具 举报

签到天数: 5 天

发表于 2023-8-2 16:26:24 | 显示全部楼层   福建省泉州市
感谢分享
回复 支持 反对

使用道具 举报

结帖率:0% (0/2)

签到天数: 17 天

发表于 2023-8-2 12:47:48 | 显示全部楼层   广西壮族自治区玉林市
感谢分享
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表