考慮這樣一個場景,當你在app端提交訂單/登錄的時候有一個滑動驗證碼怎麼處理?
一般我們會採用自動化瀏覽器完成這樣的抓取,但是效率太低。本篇文章嘗試將滑動驗證碼和抓取的代碼進行解耦。
也就是滑動驗證碼模塊只管獲取滑動之後的token,而抓取的代碼只管抓取。中間通過相關存儲介質進行通訊。
背景分析
通過各種嘗試發現,某app中阿里雲的滑動驗證碼只是操作行為的驗證。
簡而言之,就是阿里雲只是知道有人滑了驗證碼,並且此驗證碼並沒有被使用過。
通過分析和嘗試,我們完全可以有一個自動化瀏覽器去滑動生成未使用過的token,然後通過python讀取token完成相關抓取。
這樣相當於有個滑動驗證碼池,其他的業務需要的話可以直接讀取使用。
準備知識
puppeteer破解阿里h5滑動驗證碼
chrome遠程調試webview(
https://developers.google.cn/web/tools/chrome-devtools/remote-debugging/webviews?hl=zh-cn)
流程分析
使用puppeteer生成未使用過的滑動驗證碼,並把相關信息攔截,存起來。python讀取滑動驗證碼池,完成相關抓取。
效果展示



核心代碼
puppeteer 通過監聽response事件,把response的內容存起來
page.on('response',async response=>{
let url = response.url()
if (url.indexOf('analyze.jsonp')!==-1){
let content = await response.text()
if(content.indexOf('block')===-1){
let file_name = "slide/"+process.pid +Date.now()+".txt"
fs.writeFile(file_name,content+url,{encoding:'utf-8',mode:'0666'},function (err) {
console.log(err)
})
}
}
})python讀取存儲的token

滑動驗證碼的token有3個字段,分別是csessionid,value,t(t的格式是xxx:時間戳:隨機數)
原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/219426.html
微信掃一掃
支付寶掃一掃