第三方打码平台进行复杂验证码的识别

上节课我们使用了 Pyesseract 进行了简单的验证码图片识别,但是通过上节课的效果来看 Pyesseract 的效果似乎并不是很好,如果碰到一些复杂的验证码估计就得歇菜了。但是我们在爬虫开发中会遇到的验证码可以说是形形色色,各种各样,几乎都快玩出花来了。

不妨设想一下,如果爬虫遇到了 Pyesseract 无法识别的验证码该怎么办呢?难道爬虫就不写了吗?我觉得老板可能不太愿意啊,所以这节课给你推荐另一种验证码识别方式,那就是 – 第三方打码平台。

俗话说三个臭皮匠还顶个诸葛亮呢,我们在实际开发中遇到解决不了的难题的时候一定不要在那里闷头坐着死扣,一定要善用搜索引擎。编程这个行业发展了这么多年,没准你碰到的问题早就被别人解决了还把解决问题的方法分享了出来呢

本节课学习目标:

能够熟练的使用一种第三方打码平台识别验证码。

1. 常见的第三方打码平台

平时常用的打码平台有:超级鹰,云打码,打码兔,联众打码,超人打码,斐斐打码,91打码等。读者可以更加自己的需要自行选择。

2. 打码平台进行打码步骤

使用第三方平台进行打码,通常需要四个步骤。我们这里使用超级鹰打码平台进行示范。

首先选择一个打码平台进行注册

由于不同平台,注册的流程不一样,这里不再截图演示。注册完成后,如果没有提供免费适用的功能,我们需要充值才能正确的使用接口。每个平台,都会有自己的开发文档,我们按照开发文档的示列进行改写就可以直接使用了。

需要进行充值

如果只是简单的测试,可以充值较小的金额,由于是第三方平台,无法保证网站是持久可用的,充值须谨慎。

获取网站的程序ID

充值完成后,我们会获得一个程序ID,把这个ID放入到接口中,方便第三方平台进行校验。

上传验证码,返回调用结果。

3. 打码平台对接例子

接下来我们用一个简单的例子来具体演示一下上面的步骤:

这里,我们随便选择了一个打码平台的接口例子来进行讲解。

关于如何在打码平台上进行注册和查找接口文档,由于打码平台的不稳定性,这里不做推荐,读者可以自行百度,选择适合自己的平台进行注册和使用。在确定打码平台的可靠性的前提下,再进行充值。谨防被骗!

我们接下来通过打码平台验证如下验证码,验证码图片如下:

代码如下:

#!/usr/bin/env python

# coding:utf-8

import requests

from hashlib import md5

#客户端类

class My_Client(object):

#初始化

def __init__(self, username, password, soft_id):

self.username = username

self.password = password.encode('utf8')

self.password = md5(password).hexdigest()

self.soft_id = soft_id

self.base_params = {

'user': self.username,

'pass2': self.password,

'softid': self.soft_id,

}

self.headers = {

'Connection': 'Keep-Alive',

'User-Agent': 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)',

}

#上传图片

def PostPic(self, im, codetype):

"""

im: 图片字节

codetype: 题目类型

"""

params = {

'codetype': codetype,

}

params.update(self.base_params)

files = {'userfile': ('ccc.jpg', im)}

r = requests.post('http://upload.chaojiying.net/Upload/Processing.php', data=params, files=files, headers=self.headers)

return r.json()

#错误反馈

def ReportError(self, im_id):

"""

im_id:报错题目的图片ID

"""

params = {

'id': im_id,

}

params.update(self.base_params)

r = requests.post('http://upload.chaojiying.net/Upload/ReportError.php', data=params, headers=self.headers)

return r.json()

if __name__ == '__main__':

chaojiying = My_Client('XXX', 'XXX', 'XXX')

im = open('a.jpg', 'rb').read()

print(chaojiying.PostPic(im, XXX))

上述代码,我们总共有三个方法,分别是初始化,上传图片和错误反馈。初始化主要是初始化一些基本的信息,这些可以在打码平台注册的地方获取。另外,打码平台还会提供一个打码平台提供的识别码SoftId。初始化成功后,我们上传验证码,最后打印出结果。可以看到结果为7261,跟验证码里面的文字一致。

运行结果如下:

4. 小结

由于打码平台良莠不齐,读者选择打码平台的时候,需要选一些知名的企业,另外,使用打码的平台的时候,需要按照不同平台的规定接口进行调用,不同打码平台的规范是不一样的。

python实现第三方验证码获取_Python 原生爬虫教程相关推荐

  1. python实现第三方验证码获取_python利用第三方模块,发送短信验证码(测试案例)...

    今天学到个利用python第三方,发送短信验证码的代码,速实现一遍,短信立即收到,果断记录在案! 环境:虚拟机上centos7平台,python2.7版本: 第三方服务提供商是:云通讯官网:www.y ...

  2. python爬虫教程-Python教父|廖雪峰老师官方爬虫教程,13个案例带你全面入门!

    原标题:Python教父|廖雪峰老师官方爬虫教程,13个案例带你全面入门! Python简直就是万能的,你用Python都做过哪些事? 用网页看各大网站的VIP视频,用python下载? 用Pytho ...

  3. python新闻爬虫教程_python简易爬虫教程--(一)批量获取搜狐新闻

    我们先从简单的抓取文本信息开始,来写我们的第一个爬虫程序,获取搜狐新闻的内容. 我们首先来介绍一下我们需要用到的库. 爬虫程序的步骤,一般可以分为三步: 1.获取网页源码(html源码): 2.从代码 ...

  4. python便捷数据怎么获取_Python数据分析入门——从数据获取到可视化

    基本信息 作者: 沈祥壮 ISBN:9787121336539 上架时间:2018-3-22 出版日期:2018 年3月 开本:16开 页码:260 版次:1-1 [插图] 编辑推荐 了解基本的Pyt ...

  5. python 模拟登陆智联_Python+scrapy爬虫之模拟登陆

    一.126,163邮箱模拟登陆 # -*- coding:utf-8 -*-import timefrom selenium import webdriverdef login126_or_163em ...

  6. python数据分析第三方库是_python数据分析复盘——数据分析相关库之Pandas

    编辑推荐: 本文来源csdn,本文主要对Python的第三方库Pandas,进行高性能易用数据类型和分析. 1.Pandas 简介 1.1 pandas是什么 Pandas是Python第三方库,提供 ...

  7. python安装第三方库方法_Python安装第三方库的4种方法

    Python安装第三方库的4种方法 1.使用pip 大多数库都可以通过pip安装,安装方法为,在命令行窗口输入:pip install libName libName     -   为库名 某些库通 ...

  8. python爬取淘宝商品做数据挖掘_Python 3爬虫 数据清洗与可视化实战 Python数据抓取技术 python3网络爬虫教程书籍 运用Python工具获取电商平台页面数据挖掘书籍...

    A8 书    名:Python 3爬虫 数据清洗与可视化实战 作 译 者:零一,韩要宾,黄园园 出版时间:2018-03 千 字 数:200 版    次:01-01 页    数:212 开   ...

  9. python调用第三方接口获取数据_python 接口实现 供第三方调用的例子

    python 接口实现 供第三方调用的例子 实验环境 1.环境问题 python 2.7 以上自带的pyunit bottle 作为一个python的简易服务器 在python安装目录 打开命令窗口( ...

  10. python selenium 验证码识别_Python网络爬虫之如何用代码识别图片验证码

    验证码 当我们在爬取某些网站的时候,对于一些频繁请求,网站会识别你是机器还是人.如果是机器,直接不允许你访问这个网站了,直接返回404或者禁止访问. 最常见的方式就是验证码.验证码的主要功能就是区分当 ...

最新文章

  1. JavaScript网站设计实践(五)编写photos.html页面,实现点击缩略图显示大图的效果...
  2. Android 自定义View消除锯齿实现图片旋转,添加边框及文字说明
  3. mini2440:最简单的嵌入式linux驱动程序模块,mini2440:最简单的嵌入式Linux驱动程序模块 解决找不到mini2440……sample...
  4. OneNote使用说明
  5. JVM 内存初学 (堆(heap)、栈(stack)和方法区(method) )
  6. ueditor编辑器初始化
  7. markdown编辑器 语法示例
  8. 电脑硬盘数据丢失后怎么恢复?硬盘数据恢复技巧教程
  9. 如何打开KML和KMZ文件并与卫星影像叠加
  10. PC使用Android端摄像头作为本地摄像头相关软件调研
  11. 晒一波程序员的桌面,逼格超级高
  12. c语言编程师,单片机C语言编程师
  13. 阿里云ECS建网站(建站)超详细全套完整图文教程!菜鸟必看!
  14. 嵌入式开发:C程序员的5个C++ 技巧
  15. python后端工程师岗位职责_【PYTHON后端开发工程师岗位职责_PYTHON后端开发工程师职责/工作内容】-猎聘岗位职责频道...
  16. 玫瑰花瓣 c4d_在玫瑰周围打花瓣
  17. 如何快速在PDF文件中插入图片
  18. 《网络安全法》及其法律体系介绍
  19. 一千行mysql笔记
  20. 大数据技术之DataX (一)DataX插件开发

热门文章

  1. 【Clover】服务器环境中通过Clover boot引导黑群晖DSM(Linux)+Win系统的解决方案与常见bug排查
  2. MySQL 驱动的下载方法
  3. 下载mysql驱动jar包
  4. 计算机组成原理-面试题
  5. 【软考软件评测师】历年真题大汇总
  6. Debian下解决subclise插件在启动时报fail to load JavaHL Liberary
  7. 在鱼池终于挖到0.01的Zcash(ZEC)了,目前正在打款
  8. 极速办公(word)字体如何设置为斜体
  9. JSP(6)简单购物车实现
  10. 基于SSM实现图书借阅管理系统-毕业设计