最近做hkexpress出票时,遇到了阿里的验证码,界面看上去挺简单,逆向起来还挺麻烦,这里简单记录下步骤和注意点。
滑块类型/版本识别
一般情况下,通过界面看滑块的风格,基本能判断出是否为阿里滑块,如下图:
若外观无法分辨,可从F12里如果能看到fireyejs.js文件的话,基本就是阿里滑块了。
抓包分析
访问页面:滑动验证页面
关键请求:https://cf-app-waf.cfc.aliyuncs.com/nocaptcha/analyze.jsonp?
需要对n参数进行逆向,n主要包含了鼠标移动等事件数据。
逆向分析
首先,对mousedown事件打断点,如下图:
刷新页面后,对代码进行跟踪,尤其是mousemove结束后,可看到最终会到这里:
var a = {
a: e.appkey,
t: e.token,
n: o.__fy.getFYToken(o.__fy_options),
p: c.obj2str(n),
scene: e.scene || "",
asyn: 0,
lang: e.language,
v: p.jsv
};
此处就是发送验证请求的地方,此时在控制台,执行 o.__fy.getFYToken(o.__fy_options) 就可以得到加密参数。