看了下面两篇
https://www.jianshu.com/p/3726581d218a
https://blog.csdn.net/qq_24850089/article/details/78633666
目前常用的是6.0.9,第一篇是6.0.1有js混淆可以参考,第二篇是5.x,差别比较大
按照教程下载demo在本地研究
地址:https://github.com/GeeTeam/gt-python-sdk
django的demo没打开,提示版本不对,用了flask
下载HFS软件,把gt.js文件放在本地
地址:https://pan.baidu.com/s/1c26btBE
尝试把geetest.js从本地导入失败,应该被覆盖
可以得到的参数有challenge和gt和一些js路径:
带上gt、challenge和路径可以得到滑动验证码内容和新的challenge
失败滑动一次
通过get提交的参数有一个w,需要执行js获取
失败获得的参数
成功获得的参数
这里challenge是新challenge,validate滑块成功获得,seccod只是加了“|jordan”
post
最重要的是参数w,通过调试得知在geetest.6.0.9.js里
\x67\x64是十六进制字符gt,后面是chellenge和w
需要知道是怎么加密的,找到w需要的参数,开始读代码
前两段
B2BB.y9r = function() {
return {F: M(48, 14)};
} ();
function M(m, P) {
var J = [];
var l = 0;
while(l < m ){
J[(l + P) % m] = [];
l += 1;
}
var R = 0;
while (R < m ){
var d = m - 1;
while (d >= 0 ){
J[R][(d + P * R) % m] = J[d];
d -= 1;
}
R += 1;
}
return J
}
B2BB.z8z = function() {
return {F:function('LFMU^Q')
}();
function(d){
var M = '';
var R = decodeURI("*3!9%3C6r%25?0?%25)x/7%60%22$。。。。太长省略“)
var J = 0, m = 0;
while ( J < R.length ){
if(m===d.length){
m = 0;
M += String.fromCharCode(R.charCodeAt(J) ^ d.charCodeAt(m));
J++;
m++;
} else {
M += String.fromCharCode(R.charCodeAt(J) ^ d.charCodeAt(m));
J++;
m++;
}
}
M = M.split('+');
return M
}
发现6.0.9也有aa,ep,impload,passtime,rp,userresponse,继续处理得到w,对6.0.1比发现只多了生成w的部分
比较麻烦,不想在看了。。。
来源:oschina
链接:https://my.oschina.net/u/4413446/blog/3532809