python爬虫中图形验证码的处理

时间:2024-03-05 14:20:25

使用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,如果写错了,结果无法打开,可以通过网上在线的图片解码网站验证一下图片格式。