使用gan破解极验滑动验证码

使用gan破解极验滑动验证码

本文提供一个使用GAN破解滑动验证码的思路,完整代码由于利益关系,没有办法公开。

极验的滑动验证码原理

捕捉滑动轨迹,通过分类器判断动作是人做的还是机器做的。
极验是没有办法捕获我们完整的动作的,它会在几个时间点,捕捉滑动块的位置,生成一个序列发送给服务端做检验。这也为我们提供了破解的思路。

破解方法

破解方法很直观,我们生成一组滑动块位置,然后以0.3秒的间隔依次滑动过去,骗过极验的后台。

1,获取原始图片

极验验证码的原始图片会和带缺口的图片一起传过来,但是并不会显示给用户,虽然它就在页面上,但是被设置为不显示。
获取方法也很简单:
仔细分析极验的验证码,你会发现,在标签里面有一个叫geetest_canvas_fullbg 的cavas非常奇怪,鼠标放上去会有完整的图片展示出来。
废话就不多说了,这就是我们要的原始图片。

2,获取带缺口的图片

3,计算滑动距离

获取原始图片和缺口图片以后,就可以开始计算需要滑动的距离。这里,计算距离方法如下:
依次遍历图片的每一个像素,找到原始图片和带缺口图片差异较大的点。这些点都有可能师缺口位置的点

def get_distance(image1, image2, left=57, threshold=60, deviation=6):
    i = 0

    for i in range(left, image1.size[0] - 40):
        for j in range(image1.size[1] - 40):
            rgb1 = image1.load()[i, j]
            rgb2 = image2.load()[i, j]
            res1 = abs(rgb1[0] - rgb2[0])
            res2 = abs(rgb1[1] - rgb2[1])
            res3 = abs(rgb1[2] - rgb2[2])
            if not (res1 < threshold and res2 < threshold and res3 < threshold):
                # image2.crop((i,j,i+40,j+40)).save('tmp_cod1.png')
                # image1.crop((i,j,i+40,j+40)).save('tmp_cod2.png')
                if is_sub_cod(i, j, image1, image2, threshold)://有可能为缺口,需要进一步确认
                    tmp_imge = image2.crop((i, j
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值