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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python爬虫中图形验证码的处理相关的知识,希望对你有一定的参考价值。

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

 

以上是关于python爬虫中图形验证码的处理的主要内容,如果未能解决你的问题,请参考以下文章

Python3网络爬虫实战-42图形验证码的识别

Python3网络爬虫实战-43极验滑动验证码的识别

python爬虫之处理验证码

图形解锁验证码破解(附Python代码)

图形解锁验证码破解(附Python代码)

python web框架Flask——图形验证码及验证码的动态刷新