极验四代点选绕过¶
本文档以极验 4 代的点选为示例,介绍极验验证码的通用流程。非保姆级教程,需要跟着动手调试。
1. 前提条件¶
极验 4 代点选逆向前准备如下:
- 谷歌浏览器,调试使用
fiddle
等抓包工具(可选)- 目标网址:极验 4 代点选
2. 抓包¶
分析的第一步,先跑通整个验证流程,看看有哪些重要的请求。
3. 验证流程¶
【官网情况下】极验 4 代比 3 代的旧逻辑少了
register
,gettype
,ajax
之类的请求,只有load
和verify
请求包来验证。
由以上抓包可知,只要正确模拟出 load
和 verify
请求即可。
3.1. config 相关¶
此请求用于获取 load 请求中的 captcha_id 参数,以调试可知:captcha_id 参数不变动,应该是 js 版本之类的标识,写死或在对应页面返回中提取都行。
不重要,略。看自己选择是写死或发送请求获取。
3.2. load 请求¶
load 请求详细信息
load 响应内容
-
请求方式:GET
-
请求参数:
字段 | 说明 | 类型 | 是否必填 | 备注 |
---|---|---|---|---|
captcha_id | 类似版本号信息 | str | 是 | 写死或 adaptive-captcha-demo.js 取值都行 |
challenge | 应该是用于同轮验证之类 | str | 是 | 3.2.1. challenge 生成逻辑 中查看 |
client_type | 客户端类型 | str | 是 | 写死,值为 web |
risk_type | 验证类型 | str | 是 | 写死,值为 word |
lang | 语言 | str | 是 | 写死,值为 zh |
callback | 回调 | str | 否 | 不重要,按规则生成即可 |
- 返回结果(只介绍重要参数):
字段 | 说明 | 类型 | 备注 |
---|---|---|---|
ques | 需要点击的图片顺序 | list | 可以据此得到正确点击顺序 |
lot_number | 用于 3.3. verify 请求 中的参数 | str |
3.2.1. challenge 生成逻辑¶
challenge
好定位,可以跟进去uuid
的方法,也很简单,略。
challenge
获取方法:
注: 在遇到类似这种方法生成或缓存配置中取值都行的,且这个参数在同轮验证多次用到时,我们最好在意下每次调试时此值的变动。
3.3. verify 请求¶
首先查看请求详情,这里不再截图,自己去看。
-
请求方式:GET
-
请求参数:
字段 | 说明 | 类型 | 是否必填 | 备注 |
---|---|---|---|---|
captcha_id | 类似版本号信息 | str | 是 | 写死或 adaptive-captcha-demo.js 取值都行 |
challenge | 应该是用于同轮验证之类 | str | 是 | 3.2.1. challenge 生成逻辑 中查看 |
client_type | 客户端类型 | str | 是 | 写死,值为 web |
lot_number | 批号 | str | 是 | 3.2. load 请求返回而来 |
risk_type | 验证类型 | str | 是 | 写死,值为 word |
pt | 不重要 | int | 是 | 写死,值为 1 |
w | 轨迹环境等处理而得 | str | 是 | 3.3.1.w 值生成逻辑 中查看 |
callback | 回调 | str | 否 | 不重要,按规则生成即可 |
- 返回结果(只介绍重要参数):
字段 | 说明 | 类型 | 备注 |
---|---|---|---|
pass_token | 通过验证后的值 | str |
3.3.1.w 值生成逻辑¶
这里只介绍大流程,详细步骤自己根据调用栈调试。
3.3.2.点选图的处理¶
点选图的文字顺序及对应坐标,这里暂不细讲,想快速实现的话,推荐使用是
ddddocr v1.4.3
就可以实现目的。
具体请在 ddddocr 升级版使用方法 中查看。
4. 如何运行¶
再知道主要逻辑后,如何运行我们定位到的代码呢。扣代码,补环境看自己选择。推荐补环境运行,不管是补环境框架实现还是
jsdom
实现都行(已验证,jsdom
和 补环境都可以实现)。这里放上补环境框架实现的代码部分,
jsdom
运行部分请查看以前写的 3 代逻辑。
5. 总结¶
极验逻辑相同,新手可以从最简单的无感搞起(虽然无感不传
w
值也能通过验证),跑通w
值的逻辑再调试滑块或点选之类的更方便(毕竟滑块和点选之类的有底图还原和轨迹生成之类的)。
- 极验不管 3 代还是 4 代,无感、滑块、点选,还是拼图和五子棋之类的,其主要逻辑都是相同的,只是 3.3.1.w 值生成逻辑 调试图中的 e 之类的参数格式有所不同而已,自己调试下就知道了。
- 点选坐标有缩放大小,自己多调试,找出缩放比例。
这里补上整个运行流程图: