一、验证码和爬虫之间的爱恨情仇?

反爬机制:验证码.识别验证码图片中的数据,用于模拟登陆操作。

二、识别验证码的操作:

  1. 人工肉眼识别。(不推荐)
  2. 第三方自动识别(推荐)
    - 超级鹰打码:https://www.chaojiying.com/

超级鹰打码平台的使用流程:
1. 注册:
2. 登录:

  • 查询该用户是否还有剩余的题分

  • 创建一个软件:超级鹰首页>用户中心>软件ID>生成一个软件ID>录入软件名称>提交(软件id和秘钥)

  • 下载示例代码:开发文档>点此下载python示例


    示例代码如下:

#!/usr/bin/env python
# coding:utf-8import requests
from hashlib import md5class Chaojiying_Client(object):def __init__(self, username, password, soft_id):self.username = usernamepassword =  password.encode('utf8')self.password = md5(password).hexdigest()self.soft_id = soft_idself.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: 题目类型 参考 http://www.chaojiying.com/price.html"""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 = Chaojiying_Client('超级鹰用户名', '超级鹰用户名的密码', '96001')   #用户中心>>软件ID 生成一个替换 96001im = open('a.jpg', 'rb').read()                                                  #本地图片文件路径 来替换 a.jpg 有时WIN系统须要//print chaojiying.PostPic(im, 1902)                                               #1902 验证码类型  官方网站>>价格体系 3.4+版 print 后要加()

只需要把最后一行的print后面加括号()即可

最后三行所需要的参数:

超级鹰用户名和密码:注册这个网站的

软件ID:在用户中心处获取

图片路径:注意相对路径和绝对路径,案例中附带了一个图片a.jpg

验证码类型:在价格体系中查询 http://www.chaojiying.com/price.html

运行结果(通过程序可知是json格式的数据):

返回说明:
err_no,(数值) 返回代码
err_str,(字符串) 中文描述的返回信息
pic_id,(字符串) 图片标识号,或图片id号
pic_str,(字符串) 识别出的结果
md5,(字符串) md5校验值,用来校验此条数据返回是否真实有效

三、实战:识别古诗文网登录页面中的验证码。

使用打码平台识别验证码的编码流程:
- 将验证码图片进行本地下载
- 调用平台提供的示例代码进行图片数据识别

import requests
from lxml import etree
from hashlib import md5# 封装识别验证码图片的函数
def getCodeText(userName, password, appId, imgUrl):class Chaojiying_Client(object):def __init__(self, username, password, soft_id):self.username = usernamepassword = password.encode('utf8')self.password = md5(password).hexdigest()self.soft_id = soft_idself.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: 题目类型 参考 http://www.chaojiying.com/price.html"""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 = Chaojiying_Client(userName, password, appId)  # 用户中心>>软件ID 生成一个替换 96001im = open(imgUrl, 'rb').read()  # 本地图片文件路径 来替换 a.jpg 有时WIN系统须要//# print(chaojiying.PostPic(im, 1902))  # 1902 验证码类型  官方网站>>价格体系 3.4+版 print 后要加()return chaojiying.PostPic(im, 1902)# 将验证码图片下载到本地
url = 'https://so.gushiwen.cn/user/login.aspx?from=http://so.gushiwen.cn/user/collect.aspx'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36'}
page_text = requests.get(url=url,headers=headers).text# 解析验证码图片img中src属性值
tree = etree.HTML(page_text)
img_url = tree.xpath('//img[@id="imgCode"]/@src')[0]
img_url = 'https://so.gushiwen.cn/' + img_url
# print(img_url)
img_data = requests.get(url=img_url,headers=headers).content
# 将验证码图片存到本地
with open('./code.jpg','wb') as fp:fp.write(img_data)# 调用打码平台的示例程序进行验证码图片数据识别
result = getCodeText('你的超级鹰用户名','你的超级鹰密码', '你的超级鹰appid', '需要识别的验证码图片在本地的路径')
print(result)

python3爬虫验证码识别——超级鹰打码平台的使用实战:识别古诗文网登录页面中的验证码相关推荐

  1. Python——超级鹰打码平台实现selenium对b站的自动化登陆

    目录 一 .Chrome(谷歌)驱动器的下载 (一)驱动器版本选择 (二)下载Chrome驱动器 二.需要安装的库 (一)安装命令 (二)指定selenium版本原因 三.实现步骤 (一)导入相关库 ...

  2. 03-数据解析_正则表达式(03 【实战】古诗文网爬虫)

    目标:爬取中国古诗文网的诗词 注意: 用正则的思路不一样:不存在树结构,在正则眼里只当作'str' 关注zip的用法 中国古诗文网网页示例:   1.xpath方法 # -*- coding: utf ...

  3. python爬虫----DAY4-1-----验证码识别实战---识别古诗文网

    python爬虫----DAY4-1-----验证码识别实战 实战:识别古诗文网登录页面中的验证码 -https://so.gushiwen.cn/user/login.aspx 文章目录 pytho ...

  4. python爬虫之古诗文网中验证码的识别并登录----第三方平台

    目标网站:古诗文网 目标网址:http://so.gushiwen.org/user/collect.aspx 任务要求: (1)通过selenium的方式模拟该网站的登录,并成功输入用户名和密码: ...

  5. Python使用网络抓包的方式,利用超级鹰平台识别验证码登录爬取古诗文网、上篇--识别验证码

    Python使用网络抓包的方式,利用超级鹰平台识别验证码登录,<爬取古诗文网>. 上篇–识别验证码 序言: 哈喽,各位小可爱们,我又来了,这次我新学习到的内容是python爬虫识别验证码. ...

  6. python爬虫-古诗文网验证码识别

    文章目录 一.前期准备 二.示例代码 一.前期准备 古诗文网验证码识别,是通过对古诗文网登陆界面的验证码图片进行识别的,利用专门的验证码识别网站,可以提取验证码图片中的验证码 网站推荐:超级鹰 注册登 ...

  7. python网络爬虫系列(九)——打码平台的使用

    验证码处理 学习目标 了解 验证码的相关知识 掌握 图片识别引擎的使用 了解 常见的打码平台 掌握 通过打码平台处理验证码的方法 1.图片验证码 1.1 什么是图片验证码 验证码(CAPTCHA)是& ...

  8. Python3爬虫——用BeautifulSoup解析古诗文网

    我们之前已经用Xpath分析过了古诗文网,但还是感觉有点麻烦,所以今天来讲BeautifulSoup库,它可以很方便的帮我们抓取网页的数据,同样也支持lxml解析器,下面我们来详细介绍: 安装Beau ...

  9. 用机器学习sklearn+opencv-python过古诗文网4位数字+字母混合验证码

    目录 获取验证码图片 用opencv-python处理图片 制作训练数据集 训练模型 识别验证码 编写古诗文网的登录爬虫代码 总结与提高 源码下载 在本节我们将使用sklearn和opencv-pyt ...

  10. 爬虫day01(上午) 模拟登录古诗文网

    前言:今天是学习爬虫的第一天,因为看的教学视频比较老,所以很多案例都不能用了,于是我自己发挥动手操作,做了个比视频里更有含金量的练习,由于与视频案例大有不同,所以期间发生了点问题,经过探索现已解决,留 ...

最新文章

  1. 点云深度学习的Pytorch框架
  2. C 编程异常 — double free or corruption (fasttop)
  3. ASP.NET MVC 过滤器(三)
  4. mediawiki常用设置
  5. LeetCode 249. 移位字符串分组(哈希)
  6. linux proc大量文件夹,简析Linux中 /proc/[pid] 目录的各文件
  7. 默纳克系统服务器看平衡系数,默纳克启动停车舒适感调整
  8. ARouter 源码历险记 (二)
  9. 属性变量,实例变量,全局变量
  10. 太原理工大学 微型计算机实验,太原理工大学 微机原理 实验三 十字路口红绿灯闪烁实验...
  11. S7-1500 SD卡格式化
  12. 2014程序化购买元年-芒果移动广告-王江
  13. Linux编译安装iozone,用iozone测试linux文件系统
  14. 年会抽奖小游戏java_抽奖小游戏
  15. wx-jssdk,IOS调用API,config通过了,但是报错[ the permission value is offline verifying ]
  16. Qt模仿网易云黑胶片转动动画
  17. 苹果cms怎么上传本地视频资源
  18. 血淋淋的BUG:波音在软件开发上错在哪里?
  19. 哪些食物能保护眼睛?
  20. VUE activated,deactivated使用

热门文章

  1. 【项目管理工具】SVN 项目版本管理工具
  2. Java实现随机验证码和验证码图片渲染功能
  3. WinDbg分析蓝屏dump教程
  4. nexus6 android 6.0 root,全网首发:一键ROOT大师ROOT Nexus 6
  5. 机器学习算法一之基于K均值聚类算法实现数据聚类及二维图像像素分割
  6. 通赢A5管理系统服务器连不进,赢通软件A5A6系列管理系统参数设置说明
  7. 使用频谱仪测试信号抗干扰实验
  8. Kaggle 机器学习实战 朴素贝叶斯(原理+西瓜数据集实战)
  9. LPDDR4协议规范之 (一)地址映射和容量计算
  10. 华为荣耀3C彻底root的方法