某度旋转验证码v2 逆向分析

v2主要依据是核心 JS 文件mkd_v2.js 版本,如下图所示:

第一次 https://passport.baidu.com/cap/init 接口,请求的 ak 是固定值,当然不同场景不同网站是不一样的,_ 时间戳,ver=1,返回值 astk 都是后面会用到的。

请求https://passport.baidu.com/cap/style接口,会用到tk值,得到验证码图片,如下图:

请求https://passport.baidu.com/cap/log接口,会用到fs值,得到验证结果,如下图:

fs值计算方式:

v2 版本分析

v2 版本和 v1 版本基本上差不多,区别在于 rzData 的结构不太一样,ac_c 的计算方法不一样,以及 AES 的 IV 不一样,先看 AES 的 IV,v2 版本是 as 值加上固定值 appsapi2

然后再看看 rzDatacommon 字段下基本上就是 v1 的 rzData 的格式,captchalist 下,至少有 spin-0(旋转)、`puzzle-0(滑块)、click-0(点选)三种,ac_c 依旧是旋转角度占比、滑动占比以及点选坐标信息,其他的依旧是写死或者置空就行。

然后就是 ac_c 的计算方法了,首先是旋转验证码,直接搜索 ac_c

往上跟栈,有个 percent 的地方,一个三目表达式,e 是固定值 290,e - 52 = 238,238 也就是滑动条能够滑动的最大长度:

如果我们识别出来的是旋转角度 angle,则 ac_c 计算方法如下:

var distance = angle * 238 / 360
var ac_c = Number((distance / (290 - 52)).toFixed(2))
​
// 也可以直接写成:
var ac_c = Number((angle / 360).toFixed(2))

而对于滑块验证码就有所不同,同样是这个地方的三目表达式,但是要走后面的逻辑:

如果我们识别出来的是滑动距离 distance,则滑块 ac_c 的计算方法如下:

var ac_c = Number((distance / 290).toFixed(2))

同样对于点选验证码来说,也不一样,ac_c 的值是点击的 xy 坐标以及时间戳:

其他问题

前面我们说了百度的验证应该有两次,对于第二次验证,也就是 v1 的 viewlog/c 接口,v2 的 cap/c 接口,即便你第一次校验通过了,这个 c 接口校验也有可能不通过,出现这种情况的原因是通过的时间太短了,随机 time.sleep 1-3 秒即可,如果时间太短,c 接口可能会报以下验证错误:

{'code': 1, 'isRectified': False, 'msg': 'Verification Failed'}

还有一种情况就是提示存在安全风险,请再次验证,出现这种情况你会发现去浏览器手动滑也是一样的,所以在本地加个再次验证的逻辑就行了,一般来说第二次验证就能通过。

{'code': 0, 'msg': 'success', 'data': {'f': {'feedback': 'https://www.baidu.com/passport/ufosubmit.html', 'reason': '存在安全风险,请再次验证'}}}

然后就是请求 header 里没有 Referer 或者 Referer 不正确的话,会报错:

// v1 没有 Referer
{'code': 1, 'msg': 'Unregistered Host'}
// v1 Referer 不正确
{'code': 1, 'msg': 'Invalid Request', 'data': []}
// v2 没有 Referer 或者 Referer 不正确
{'code': 100600, 'msg': 'Unauthorized Host'}

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 验证码数据集 captcha_images_v2 是一个包含了各种网站或应用程序常用的验证码图片的数据集。该数据集包含了10万份包含有四个或六个字符的验证码图片,涵盖了数字、大写字母和小写字母等不同的字符类型。这些验证码图片是以PNG格式存储,具有各种不同的背景颜色和噪点干扰。该数据集可用于训练各种计算机视觉和机器学习算法,如验证码识别、人工智能中的视觉问题等。 要下载这个数据集,可以访问相关网站或使用Python编程语言中的代码获取。网站上提供了这个数据集的下载链接。 只需要点击下载并解压,就可以得到一个包含10万个验证码的文件夹。如果使用Python的话,有许多第三方库可以用来下载和处理这个数据集。比如,使用Requests库可以从网站上请求数据并保存,使用Pillow库可以打开并处理图像,将其转换为可用于训练模型的数值数据。 总之,验证码数据集 captcha_images_v2 是一个非常有用的开源数据集,它可以帮助开发人员和研究人员更好地训练计算机视觉、机器学习和深度学习模型。通过这个数据集,我们可以更好地理解和应用验证码识别技术,提高这一领域的研究水平,为验证码技术的安全性提供保障。 ### 回答2: 验证码是一种机器检测人类是否进行交互的信息安全技术,被广泛应用于图灵测试、防伪标识、数据安全等方面。而验证码数据集则是深度学习算法进行验证码识别或生成的必要数据源之一。 captcha_images_v2就是一个典型的验证码数据集,其包含60,000张已知字符标签的验证码图片和10,000张未知字符标签的噪声图片。其中,已知字符标签的验证码可以用于训练和测试验证码识别模型;未知字符标签的噪声图片则可以用于测试模型的泛化能力。 captcha_images_v2数据集中的验证码图片大小为160*60像素,其中包含随机变形、扭曲和噪声等复杂特征,对于深度学习算法的训练和测试具有一定挑战。因此,该数据集对于验证码识别算法的研究和发展具有重要意义。 同时,captcha_images_v2数据集也可以用于生成新的验证码,并且可以进一步扩充和改善数据集,提高模型的性能和鲁棒性。总之,该数据集是验证码识别和生成算法的一份重要资源,有望为相关研究提供充分的支持和帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值