都比較舊如今最新的是6.0.9,但第一篇是6.0.1有js混淆能夠參考,第二篇是5.x,差異比較大python
試試能不能破解git
下載demo在本地研究github
地址:https://github.com/GeeTeam/gt-python-sdkdjango
django的demo沒打開,版本不對,因此用了flask的flask
成功運行post
下載HFS軟件,把gt.js文件放到本地spa
地址:https://pan.baidu.com/s/1c26btBE.net
嘗試把geetest.js從本地導入失敗,應該是被覆蓋了3d
能夠直接獲得的參數:調試
經過get能夠獲得challenge和gt
一些js文件路徑
帶上前兩個包的gt、challenge和文件路徑能夠獲得滑動驗證碼的全部資源和新的challenge
失敗滑動一次
經過get提交的參數有一個w,這是須要js執行獲取的
失敗得到的參數
成功得到的參數
這裏的challenge是獲取滑塊圖片的新challenge,validate滑塊成功得到,seccod只是在後面加了「|jordan」
post
最重要的是參數w,ctrl+f搜不到,能夠確定在geetest.6.0.9.js裏
chorme裏斷點調試,一下子就找到了生成w參數的位置,\x67\x64是十六進制字符gt,後面是chellenge和w
接下來就須要反混淆js代碼,找到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的部分
後續就是解相關代碼,先記下思路有時間慢慢弄