验证码识别
点触验证码识别#
爬虫遇到最多的就是验证码,验证码也是当前最为有效的反爬措施,python中机器视觉也有相关的模块解决这种情况
一、概述#
1. OCR#
光学字符识别(Optical Character Recognition)
2. 原理#
通过扫描等光学输入方式将各种票据、报刊、书籍、文稿及其它印刷品的文字转化为图像信息,再利用文字识别技术将图像信息转化为电子文本
3. tesserct-ocr#
OCR的一个底层识别库(不是模块,不能导入)
Google维护的开源OCR识别库
4. pytesseract#
Python模块,可调用底层识别库
对tesseract-ocr做的一层Python API封装
安装
Ubuntu
sudo apt-get install tesseract-ocr
Windows
下载安装包``
字体库
https://github.com/tesseract-ocr/tessdata
测试
终端 | cmd命令行
tesseract xxx.jpg 文件名
二、在线打码#
网络上在线打码平台不计其数,这里以云打码为例
tesseract-ocr识别率很低,文字变形、干扰,导致无法识别验证码
1. 使用#
- 下载并查看接口文档
- 调整接口文档,调整代码并接入程序测试
- 真正接入程序,在线识别后获取结果并使用
该演示涉及网站会员信息,不便展示,只做简要提示
-
下载API示例点击下载
-
写一个方法将其封装起来,记得填好自己的用户名和密码
def get_result(filename): # 用户名 username = 'xxxxxxx' # 密码 password = 'xxxxxxx' # 软件ID,开发者分成必要参数。登录开发者后台【我的软件】获得! appid = 1 # 软件密钥,开发者分成必要参数。登录开发者后台【我的软件】获得! appkey = '22cc5376925e9387a23cf797cb9ba745' # 图片文件 filename = filename # 验证码类型,# 例:1004表示4位字母数字,不同类型收费不同。请准确填写,否则影响识别率。在此查询所有类型 http://www.yundama.com/price.html codetype = 5000 # 超时时间,秒 timeout = 60 # 检查 if (username == 'username'): print('请设置好相关参数再测试') else: # 初始化 yundama = YDMHttp(username, password, appid, appkey) # 登陆云打码 uid = yundama.login() # 查询余额 balance = yundama.balance() # 开始识别,图片路径,验证码类型ID,超时时间(秒),识别结果 cid, result = yundama.decode(filename, codetype, timeout) return result
-
在使用的时候直接调用即可
2. 示例#
'''
以云打码为例,识别其登录验证码
'''
from fake_useragent import UserAgent
from ydmapi import * # 刚才修改的API
def get_cap():
headers = {'User-Agent':UserAgent().random}
url = "http://www.yundama.com/index/captcha"
html = requests.get(url=url, headers=headers).content
with open('demo.png', "wb") as f:
f.write(html)
if __name__ == '__main__':
get_cap()
result = get_result("demo.png")
print(result)
chancey@PythonServer:~/project/spider$ ls
00-test_ydm.py 01-ydm-yzm.py 02-ydm-yzm.py demo.png __pycache__ ydmapi.py
chancey@PythonServer:~/project/spider$ python3 02-ydm-yzm.py
EGIV # 识别数来的EGIV
作者:ChanceySolo
出处:https://www.cnblogs.com/chancey/p/11580166.html
版权:本作品采用「ChanceySolo-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!