使用python爬蟲自動登錄時,遇到需要輸入圖形驗證碼的情況,一個比較簡單的處理方法是使用打碼平台識別驗證碼。
使用過兩個打碼平台,打碼兔和若快,若快的價格更便宜,識別率相當。若快需要注冊兩個帳號:開發者帳號與用戶帳號,用戶帳號用於發送識別請求,開發者帳號可以注冊軟件id,並於識別請求進行綁定,可以參與識別收入的分成返現。
獲取圖形驗證碼目前發現的有兩種方式:
0x01
在抓包中可以直接獲得圖片:發送get請求可以直接獲取圖片(png或jpg格式),這種情況可以使用request.get()返回值的content方法,獲取圖片文件,直接使用打碼平台識別。
0x02
圖片使用base64加密返回:
如上圖,image中包含的就是經過base64加密后的圖片文件。可以通過如下方式對圖片進行還原:
resp = self.s.get(url, headers=header, verify=False, timeout=10) resp_json=json.loads(resp.text) CaptchaId=resp_json.get('CaptchaId') ImageStr=resp_json.get('Image') imgdata=base64.b64decode(ImageStr) file=open('captcha.gif'),'wb') file.write(imgdata) file.close()
圖片格式不一定是gif,可能是jpg或png,如果寫錯了,結果無法打開,可以通過網上在線的圖片解碼網站驗證一下圖片格式。