tx滑动验证码通过方法

本文介绍了识别tx滑动验证码的思路,包括计算滑动距离、获取无缺口背景图片、匹配对应背景图的方法,并提供了算法优化及完整示例代码。通过比较像素点差异和特定点的坐标值来确定滑动验证的解决方案。
摘要由CSDN通过智能技术生成

一.介绍:

本内容只做技术交流使用,请勿做商业用途。本方法验证采用本地自建服务器的形式来对所介绍的算法做验证
滑动验证码如下图所示:

 

 

 

二.本地测试环境构建

本地测试环境的构建CSDN已有文章做了详细的介绍,详细参见[博客地址](https://blog.csdn.net/mouday/article/details/83384633)
[demo地址](https://github.com/mouday/TencentCaptcha)

三.识别思路介绍

** 滑动验证需要解决的问题:滑动距离的计算、滑动轨迹模拟、模拟滑动 **

1.滑动距离计算

通过抓包获取验证码发现,此验证码会返回如下两张图片:

 

缺口图

 

滑块图

针对可获取到的图片信息,要计算滑块滑动距离,可以采用OpenCV库,结合图像处理算法,获取滑块距离。但是通过多次刷新可以观察缺口图片只有有限的10张,如果我们能找到对应的10张无缺口的完整背景图片,每次通过获取到的有缺口的图片在10张完整图片中找到对应无缺口图片,直接做对应像素相减,判断差值大于阈值的第一个像素点的x的坐标位置即为滑块左侧距离图片边缘的距离。

 

2.无缺口完整背景图片获取:

完整背景图片的获取除了网上文章已提到的通过大量有缺口图片切分重组构造完整背景图和滑动完成验证之后截图两种方案外,其实还可以直接通过接口获取到完整背景图片,由于涉及相关平台利益,所以此处对通过接口直接获取完整背景图片的方法不做详细介绍。但是会把涉及到的10张背景图片给出:

 

 

 

 

 

 

 

 

 

 

 

 

3.拿到有缺口图片后如何从10张背景图中找到对应的无缺口图:

算法1:直接用有缺口图片和10张背景图片做减法,统计差值大于阈值的像素点的个数,阈值设置60,像素点个数设置为缺口大小,大概6000个点,如果差值大于60的点个数超过6000则认为图片不是对应的完整背景图,与10张背景图循环遍历,找到对应的背景图返回对应目标图路径

def get_full_pic(bg_image):
    '''
    :param gap_pic: 缺口图片
    :return: (str)背景图片路径
    '''
    #转换图像到灰度
    img1 = bg_image.convert('L')
    distance = 68     #由于缺口位置都在图片的后边,为减少计算,可以减少一部分比较
    threshold = 60
    dir = ""
    for k in range(1,11):
        dir = "../background/"+str(k)+".jpg"
        fullbg_image = Image.open(dir
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值