之前发表过一篇,百度墨斗鱼后台上传文章分析的文章。时隔几个月,文件预览接口加了asc-
token 和 验证码(百度v2)。闲来没事分析一下。所有的分析都基于协议,不基于web自动化。
验证码目前有四种,验证码刷新重新加载可以互相切换,所以只要搞定其中一种或者多种即可,
这四种目前都能搞定,验证通过之后通过回调设置成功标识,每次上传携带成功标识即可,不用每
次都验证。需要注意的是log 接口参数 fuid 是一个获取浏览器指纹的(这块处理一下比较安全),fs
是传入加密后的验证结果的。
一,验证码
1,滑块缺口
2,单词点击
3,滑块拉绳子
4,滑块旋转
目前以搞定滑块旋转和滑块缺口为例进行分析,加载到其他类型则刷新。
关键接口如下
public interface BaiDuCaptchaService {
/**
* 加载验证码
*/
LoadRes load(LoadReq req) throws Exception;
/**
* 初始化验证码
*/
InitRes init(InitReq req);
/**
* 旋转验证码获取验证码详情 style
*/
StyleRes spinStyle(StyleReq req);
/**
* 缺口滑块验证码获取验证码详情 style
*/
StyleRes puzzleStyle(StyleReq req);
/**
* 转base64
*/
String imageToBase64(String imageUrl);
/**
* 识别
*/
int identify(String imageBase64, String verifyIdfId);
/**
* 旋转提交验证
*/
LogRes spinLog(LogReq req) throws IOException;
/**
* 滑块缺口提交验证
*/
LogRes puzzleLog(LogReq req) throws IOException;
/**
* 旋转验证获取stk
*/
StkRes spin(StkReq req, LogData logData) throws Exception;
/**
* 滑块缺口验证获取stk
*/
StkRes puzzle(StkReq req, LogData logData) throws Exception;
/**
* 获取验证凭证 (__ymg_scsc=xxx)
*/
String getSc(String stk) throws IOException;
}
效果如下
二,asc-token
关键方法,需要注意的是 AcsTokenParam 是定期变化的。
技术交流,主页左边微信。