目標網站
aHR0cDovL3d3dy55bmdwLmNvbS9wYWdlL3Byb2N1cmVtZW50L3NlYXJjaEZvck1haW4uaHRtbD9idWxsZXRpbnRpdGxlPSUyNUU3JTI1OUYlMjVCRg==
1.先手動過驗證檢視如何獲取資料
過了驗證檢視獲取資料的請求連結,可以複製curl分析得知在請求負載中字串引數captchaCheckFlag是變化的
2.引數captchaCheckFlag
2.1分析captchaCheckFlag
搜尋captchaCheckFlag並除錯打斷點,檢視captchaCheckFlag來源
控制檯輸出可知this.captchaCheckId就是captchaCheckFlag
透過堆疊方式查詢到this.captchaCheckId
分析這一行程式碼aesEncrypt,檢視aesEncrypt中引數與請求驗證碼的響應結果作對比
其中請求驗證碼的負載中有兩個引數
clientUid:是uuid
ts:時間戳
aesEncrypt:是函式,可以直接拿js程式碼也可以自己魔改,
_this.backToken:是請求響應中的token
_this.secretKey:是請求響應中的secretKey
JSON.stringify(_this.checkPosArr):是座標,用ddddocr解決
2.2.1JSON.stringify(_this.checkPosArr):座標
想要知道座標就需要先獲取被點選的圖片和需要點選的文字 回頭看驗證碼請求的響應內容中,有圖片和需要點選的文字,呼叫ddddocr,這兩個值作為引數得到座標:[{"x":122,"y":59},{"x":154,"y":74},{"x":221,"y":91}]修改為這樣的格式
2.2獲取captchaCheckFlag
captchaCheckFlag組成captchaCheckFlag = aesEncrypt(str(str(token) + '---' + 座標),secretKey)
得到captchaCheckFlag後不要著急,還需要校驗驗證碼
3.校驗驗證碼
3.1獲取引數
對比請求驗證碼中多了一個**pointJson**引數老規矩搜尋pointJson,打斷點,在控制檯挨個輸出引數
兩個引數列印出來發現和在獲取captchaCheckFlag過程中aes函式的引數類似,但是在獲取captchaCheckFlag過程中aes函式的第一個引數值是由(token+座標)傳入,這邊只需要傳入座標,那便直接拿來用就好,
aesEncrypt:是函式,同上
JSON.stringify(_this.checkPosArr):是座標,結果同上
_this.secretKey:是請求響應中的secretKey,結果同上
3.2獲取引數
pointJson組成 pointJson = aesEncrypt(str(座標),secretKey)