python3爬虫验证码识别——超级鹰打码平台的使用实战:识别古诗文网登录页面中的验证码
一、验证码和爬虫之间的爱恨情仇?
反爬机制:验证码.识别验证码图片中的数据,用于模拟登陆操作。
二、识别验证码的操作:
- 人工肉眼识别。(不推荐)
- 第三方自动识别(推荐)
- 超级鹰打码: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爬虫验证码识别——超级鹰打码平台的使用实战:识别古诗文网登录页面中的验证码相关推荐
- Python——超级鹰打码平台实现selenium对b站的自动化登陆
目录 一 .Chrome(谷歌)驱动器的下载 (一)驱动器版本选择 (二)下载Chrome驱动器 二.需要安装的库 (一)安装命令 (二)指定selenium版本原因 三.实现步骤 (一)导入相关库 ...
- 03-数据解析_正则表达式(03 【实战】古诗文网爬虫)
目标:爬取中国古诗文网的诗词 注意: 用正则的思路不一样:不存在树结构,在正则眼里只当作'str' 关注zip的用法 中国古诗文网网页示例: 1.xpath方法 # -*- coding: utf ...
- python爬虫----DAY4-1-----验证码识别实战---识别古诗文网
python爬虫----DAY4-1-----验证码识别实战 实战:识别古诗文网登录页面中的验证码 -https://so.gushiwen.cn/user/login.aspx 文章目录 pytho ...
- python爬虫之古诗文网中验证码的识别并登录----第三方平台
目标网站:古诗文网 目标网址:http://so.gushiwen.org/user/collect.aspx 任务要求: (1)通过selenium的方式模拟该网站的登录,并成功输入用户名和密码: ...
- Python使用网络抓包的方式,利用超级鹰平台识别验证码登录爬取古诗文网、上篇--识别验证码
Python使用网络抓包的方式,利用超级鹰平台识别验证码登录,<爬取古诗文网>. 上篇–识别验证码 序言: 哈喽,各位小可爱们,我又来了,这次我新学习到的内容是python爬虫识别验证码. ...
- python爬虫-古诗文网验证码识别
文章目录 一.前期准备 二.示例代码 一.前期准备 古诗文网验证码识别,是通过对古诗文网登陆界面的验证码图片进行识别的,利用专门的验证码识别网站,可以提取验证码图片中的验证码 网站推荐:超级鹰 注册登 ...
- python网络爬虫系列(九)——打码平台的使用
验证码处理 学习目标 了解 验证码的相关知识 掌握 图片识别引擎的使用 了解 常见的打码平台 掌握 通过打码平台处理验证码的方法 1.图片验证码 1.1 什么是图片验证码 验证码(CAPTCHA)是& ...
- Python3爬虫——用BeautifulSoup解析古诗文网
我们之前已经用Xpath分析过了古诗文网,但还是感觉有点麻烦,所以今天来讲BeautifulSoup库,它可以很方便的帮我们抓取网页的数据,同样也支持lxml解析器,下面我们来详细介绍: 安装Beau ...
- 用机器学习sklearn+opencv-python过古诗文网4位数字+字母混合验证码
目录 获取验证码图片 用opencv-python处理图片 制作训练数据集 训练模型 识别验证码 编写古诗文网的登录爬虫代码 总结与提高 源码下载 在本节我们将使用sklearn和opencv-pyt ...
- 爬虫day01(上午) 模拟登录古诗文网
前言:今天是学习爬虫的第一天,因为看的教学视频比较老,所以很多案例都不能用了,于是我自己发挥动手操作,做了个比视频里更有含金量的练习,由于与视频案例大有不同,所以期间发生了点问题,经过探索现已解决,留 ...
最新文章
- 点云深度学习的Pytorch框架
- C 编程异常 — double free or corruption (fasttop)
- ASP.NET MVC 过滤器(三)
- mediawiki常用设置
- LeetCode 249. 移位字符串分组(哈希)
- linux proc大量文件夹,简析Linux中 /proc/[pid] 目录的各文件
- 默纳克系统服务器看平衡系数,默纳克启动停车舒适感调整
- ARouter 源码历险记 (二)
- 属性变量,实例变量,全局变量
- 太原理工大学 微型计算机实验,太原理工大学 微机原理 实验三 十字路口红绿灯闪烁实验...
- S7-1500 SD卡格式化
- 2014程序化购买元年-芒果移动广告-王江
- Linux编译安装iozone,用iozone测试linux文件系统
- 年会抽奖小游戏java_抽奖小游戏
- wx-jssdk,IOS调用API,config通过了,但是报错[ the permission value is offline verifying ]
- Qt模仿网易云黑胶片转动动画
- 苹果cms怎么上传本地视频资源
- 血淋淋的BUG:波音在软件开发上错在哪里?
- 哪些食物能保护眼睛?
- VUE activated,deactivated使用
热门文章
- 【项目管理工具】SVN 项目版本管理工具
- Java实现随机验证码和验证码图片渲染功能
- WinDbg分析蓝屏dump教程
- nexus6 android 6.0 root,全网首发:一键ROOT大师ROOT Nexus 6
- 机器学习算法一之基于K均值聚类算法实现数据聚类及二维图像像素分割
- 通赢A5管理系统服务器连不进,赢通软件A5A6系列管理系统参数设置说明
- 使用频谱仪测试信号抗干扰实验
- Kaggle 机器学习实战 朴素贝叶斯(原理+西瓜数据集实战)
- LPDDR4协议规范之 (一)地址映射和容量计算
- 华为荣耀3C彻底root的方法