极验4纯算
1、一共3种算法rsa、aes、md5,全部是标准算法,可以直接调库实现2、就算第一次的无感ai验证返回正常,但是第二次的load出现了nine,那一定是前面的verify参数出现了问题。3、缺口距离:在你识别准确的结果还需要再减去一个值,这个值是滑块图片的空白距离4、md5的加密结果必须是000开头的5、构建上面的那个用于aes加密的字符串时必须要注意空格问题。
作者声明:文章仅供学习交流与参考!严禁用于任何商业与非法用途!否则由此产生的一切后果均与作者无关!如有侵权,请联系作者本人进行删除!
1、接口分析
网站:aHR0cHM6Ly93d3cuZ2F0ZS5jb20vemgvbG9naW4=
进入网站登录页面使用手机号登录,随便输入后点击登录,滑动滑块,发现有两次load和verify的抓包,分别是 无感ai和滑块。
captcha_id: 固定值 (后面所有请求用同一个) 所有的callback: geetest_ + 时间戳 load 参数: callback: geetest_ + 时间戳 challenge: uuid 可固定 返回: lot_number、 payload、 process_token、 pow_detail load得到的lot_number: 后续所有请求用同一个 verify 参数: payload: load返回的值 process_token: load返回的值 w 返回: lot_number、 payload、 process_token load 参数: payload: verify返回的值 process_token: verify返回的值 返回: pow_detail、 bg缺口图片链接、 payload、 process_token captcha_type为nine: 前面的verify校验不通过(w动态参数问题) verify 参数: payload: load返回的值 process_token: load返回的值 w 返回: result为success则验证通过
2、w参数
搜索 w: 找到w参数加密位置,位置如下:
发现w由_ᕸᖆᖚᕿ赋值得到,_ᕸᖆᖚᕿ由_ᕸᖆᖚᕿ加密得到,跟进_ᖆᖚᕾᕺ[_ᕸᕺᖂᖗ(183)]函数中。
判断依据:rsa的模数和指数,n和e;aes的key 长度 16 字节、CBC 模式、32 轮密钥扩展,16字节的key和iv只有aes。
传入的字符串分析:
713a:动态字符串,通过对lot_number的切割得到。
W4Ec: 生成来源于window['_lib'] (可固定)bith:通过gct4.xxx.js中的两个函数作为字符串计算得到 (几乎不变动,可固定)
pow_msg: load请求在返回的pow_detail + captcha_id + lot_number + 16随机字符串
pow_sign: pow_msg加密得到,加密方式取决于pow_detail返回的结果
跟栈分析713a,713a就是i,流程:lot + lot_number运算得到i,lotRes+lot_number得到o,i切割得到r,r进一步运算得到最终的i。
def dynamic_params(arr1, arr2, lot_number):
def slice_segment(seg, s):
if len(seg) == 1:
return s[seg[0] + 1:]
return s[seg[0]: seg[1] + 1]
def extract_by_rule(arr, s):
res = []
for item in arr:
if not isinstance(item[0], list):
res.append(slice_segment(item, s))
else:
res.append(''.join(slice_segment(seg, s) for seg in item))
return res
data1 = extract_by_rule(arr1, lot_number)
data2 = extract_by_rule(arr2, lot_number)[0]
result = {}
cur = result
for idx, key in enumerate(data1):
if idx == len(data1) - 1:
cur[key] = data2
else:
cur = cur.setdefault(key, {})
return (data1[0], result[data1[0]])
lot和lotRes位置
跟栈分析:pow_msg、pow_sign,通过堆栈一直往上找。
跟进_ᖙᖄᖃᖚ[_ᖗᖗᖘᕾ(183)]函数,(传入的字符串 + 随机16位字符串)加密得到的就是pow_sign。
3、总结
1、一共3种算法rsa、aes、md5,全部是标准算法,可以直接调库实现
2、就算第一次的无感ai验证返回正常,但是第二次的load出现了nine,那一定是前面的verify参数出现了问题。
3、缺口距离:在你识别准确的结果还需要再减去一个值,这个值是滑块图片的空白距离
4、md5的加密结果必须是000开头的
5、构建上面的那个用于aes加密的字符串时必须要注意空格问题。
4、结果展示
更多推荐
所有评论(0)