使用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爬虫中图形验证码的处理的更多相关文章

  1. python爬虫之浅析验证码

    一.什么是验证码? 验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apart”( ...

  2. Python爬虫教程:验证码的爬取和识别详解

    今天要给大家介绍的是验证码的爬取和识别,不过只涉及到最简单的图形验证码,也是现在比较常见的一种类型. 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻 ...

  3. python爬虫模拟登录验证码解决方案

    [前言]几天研究验证码解决方案有三种吧.第一.手工输入,即保存图片后然后我们手工输入:第二.使用cookie,必须输入密码一次,获取cookie:第三.图像处理+深度学习方案,研究生也做相关课题,就用 ...

  4. Python脚本破解图形验证码(tesserocr和pytesseract)

    在学习之前,我们先了解OCR.tesseract.tesserocr.pytesseract和opencv这几个跟图片处理有关的库. OCR(Optical Character Recognition ...

  5. Django中图形验证码(django-simple-captcha)

    django-simple-captcha 在网站开发的登录页面中,经常会需要使用到图形验证码来验证.在Django中,django-simple-captcha库包提供了图形验证码的使用. 下面我们 ...

  6. python爬虫之处理验证码

    云打码实现处理验证码 处理验证码,我们需要借助第三方平台来帮我们处理,个人认为云打码处理验证码的准确度还是可以的 首先第一步,我们得先注册一个云打码的账号,普通用户和开发者用户都需要注册一下 然后登陆 ...

  7. python爬虫之获取验证码登陆

    #--coding:utf-8#author:wuhao##这里我演示的就是本人所在学校的教务系统#import urllib.requestimport urllib.parseimport rei ...

  8. python爬虫中scrapy框架是否安装成功及简单创建

    判断框架是否安装成功,在新建的爬虫文件夹下打开盘符中框输入cmd,在命令中输入scrapy,若显示如下图所示,则说明成功安装爬虫框架: 查看当前版本:在刚刚打开的命令框内输入scrapy versio ...

  9. 爬虫篇-python爬虫中多线程的使用

    queue介绍 queue是python的标准库,俗称队列.可以直接import引用,在python2.x中,模块名为Queue.python3直接queue即可 在python中,多个线程之间的数据 ...

随机推荐

  1. 解决Maven依赖报红的批处理文件

    maven经常因为网络或者其他原因导致仓库jar包下载不完整,导致jar包依赖报红,此小工具可以一键删除未下载完成文件 set REPOSITORY_PATH=E:\deplor\apache-mav ...

  2. 【转载】JS导出CSV文件

    转自:http://www.cnblogs.com/dengnan/p/3990211.html 通过自己实际测试有以下几种方法 方法一通过a标签实现,把要导出的数据用“\n”和“,”拼接成一个字符串 ...

  3. python2下解决json的unicode编码问题

    基础知识:   序列化——json.dumps()函数是将一个Python数据类型列表进行json格式的编码(可以这么理解,json.dumps()函数是将字典转化为json字符串)   反序列化—— ...

  4. 素问 - IC移仓换月

    摘自<小韭的学习圈> Q 股指期货的合约什么时候换月比较合适? 今天是1908股指期货的交割日,我是这么操作的:我在10:30分把IH1908以2827元卖出,然后马上以2805.8元买入 ...

  5. Centos7 安装VNC实现远程桌面

    1.设置root用户方法: 1.# 复制一个服务设置的模板,命令如下: cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vn ...

  6. Javaweb项目不需要端口号及项目名的访问配置(已备注)

    1.不需要端口号的配置: 在server.xml中找到节点: <Connector URIEncoding="UTF-8" connectionTimeout="2 ...

  7. SSL扫描工具

    工具: sslciphercheck sslscan sslciphercheck.exe -h ip -p 443 有些IP会报错:

  8. shiro中setUnauthorizedUrl("/403")不起作用

    最近学习shiro框架,在用户没有权限的情况下想让其跳转到403页面,结果非自己预想的效果.后来找到一个解决办法如下: 转载来源 SpringBoot中集成Shiro的时候, 配置setUnautho ...

  9. 第五篇,理解JS模块化编程思想

    模块化编程 ·模块化编程是一种处理复杂系统分解成更好的可管理模块的方式,它可以把系统代码划分为职责单一高度解耦切可替代的模块. ·系统中某一部分的变化将如何影响其他部分就会变得显而易见,系统的可维护性 ...

  10. SpringBoot整合WEB开发--(四)@ControllerAdvice

    1.全局异常处理: @ControllerAdvice处理全局数据,一般搭配@ExceptionHandler,@ModelAttribute以及@InitBinder使用. @ControllerA ...