Python爬虫理论 | (6) 进阶反反爬虫技术 --- 验证码识别
目录
1. 验证码原理
2. 常见验证码识别
2.1 图片验证码
2.2 滑动验证码
2.3 点触验证码
3. 实战
1. 验证码原理
验证码(CAPTCHA),“Completely Automated Public Turing test to tell Computers and Humans Apart”(全自动区分计算机和人类的图灵测试),是一种区分用户是计算机还是人的公共全自动程序。
验证码被广泛用于用户登录以及注册的校验。主要原因是生成的验证码每次都不同,这就可以排除用其他病毒或者软件自动申请用户及自动登陆,从而防止别人进行恶意攻击。而且如果频繁发送验证码,系统会提示一段时间后再发送验证码,也可以减少恶意攻击。
2. 常见验证码识别
- 图片验证码
- 活动验证码
- 点触验证码
- 宫格验证码
2.1 图片验证码
图片验证码:由字符组合而成的图片,通常会加上干扰。
- OCR技术
OCR (Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程。针对印刷体字符,采用光学的方式将纸质文档中的文字转换成为黑白点阵的图像文件,并通过识别软件将图像中的文字转换成文本格式的技术。
- OCR实例
pytesseract库 --- 识别图片
pytesseract.image_to_string(image)
import pytesseract
from PIL import Imageimg = Image.open('checkcode.jpg')
pytesseract.image_to_string(img)
可以自行下载一张验证码图像进行测试,不过pytesseract库的识别能力有限。仅作为了解即可,之后我们会使用超级鹰进行识别。
- 图像预处理
1. 灰度化:将彩色图像转为灰度图像。
2. 二值化:将灰度图像转为黑白图像。
灰度化:
将图像转为灰度图像,即一个像素只有一种色阶(单通道,有 256 种不同灰度),值为 0 表示像素最黑,值为 255 表示像素最白。
image.convert("L")
convert():用于不同模式图像之间的转换。
PIL中有九种不同模式,分别为1,L,P,RGB,RGBA,CMYK,YCbCr,I,F。
1)模式“1”:二值图像,非黑即白。但是它每个像素用8个bit表示,0表示黑,255表示白。
2)模式“L”:灰色图像,它的每个像素用8个bit表示,0表示黑,255表示白,其他数字表示不同的灰度。
3)模式“P”:8位彩色图像,它的每个像素用8个bit表示,其对应的彩色值是按照调色板查询出来的。
4)模式“RGB”:24位彩色图像,红、绿、蓝三个通道。
二值化:
将图像转为黑白图像,即一个像素只有黑白两种状态,没有灰色,0 代表黑,1 代表白。
image.convert(“1”):默认阈值是 127,将灰度值在 127 以上的设置 1 (白色),其它设为 0 (黑色)。
自定义灰度阈值:
threshold = 135 #可调节大小127->135
table = []
for i in range(256):if i < threshold:table.append(0) # blackelse:table.append(1) # white
image = image.point(table, '1')
- 深度学习
深度学习(DeepLearning,DL)属于机器学习的子类,是利用深度神经网络来解决特征表达的一种学习过程。深度神经网络本身并非是一个全新的概念,可理解为包含多个隐含层的神经网络结构。为了提高深层神经网络的训练效果,人们对神经元的连接方法以及激活函数等方面做出了调整。其目的在于建立、模拟人脑进行分析学习的神经网络,模仿人脑的机制来解释数据,如文本、图像、声音。
深度学习主要应用于文字识别、人脸技术、语义分析、智能监控等领域。
2.2 滑动验证码
滑动图形验证码,主要由两个图片组成:抠块和带有抠块阴影的原图。
这里有两个重要特性保证被暴力破解的难度:
(1)抠块的形状随机
(2)抠块所在原图的位置随机
这样就可以在有限的图集中制造出随机的、无规律可寻的抠图和原图的配对。
- 生成滑动验证码
(1)后端随机生成抠图和带有抠图阴影的背景图片,后台保存随机抠图位置坐标;
(2)前端实现滑动交互,将抠图拼在抠图阴影之上,获取到用户滑动距离值;
(3)前端将用户滑动距离值传入后端,后端校验误差是否在容许范围内。
- 利用selenium来解决滑动验证码
(1)获取没有缺口的图片
(2)获取带缺口的图片
(3)对比两张图片的所有RBG像素点,得到不一样像素点的x值(即要移动的距离)
(4)模拟人的行为习惯(先匀加速拖动后匀减速拖动),把需要拖动的总距离分成一段一段小的轨迹
(5)按照轨迹拖动,完成验证
2.3 点触验证码
点触验证码最初是由杭州微触科技有限公司研发的互联网验证码,使用点击或者拖动的形式完成验证。采用专利的印刷算法以及加密算法,保证每次请求到的验证图具有极高的安全性。
1、点击区域可出现在指定区域内的任何位置,依次按提示点击即可完成验证。点击区域可以是图片和文字。
2、不同图标会随机出现在图标框内,按照提示点击单个或多个图标,即可完成验证。
- 难点
(1)文字识别—上图中的刘翔 ,该文字是变形处理之后的,OCR不易识别。
(2)图片识别—需要大量图片的标记数据,且图片清晰度不高,机器识别率非常低。
- 解决方法
使用验证码识别服务平台。超级鹰
识别类型:
3. 实战
- 破解滑动验证码
使用selenium模拟登录bilibili网站。
完整项目
- 破解点触验证码
使用selenium模拟登录简书网站。
完整项目
- 图片验证码识别
使用selenium登录新浪微博。
完整项目
Python爬虫理论 | (6) 进阶反反爬虫技术 --- 验证码识别相关推荐
- 爬虫 JavaScript 逆向进阶!利用 AST 技术还原混淆代码
这是「进击的Coder」的第 617 篇技术分享 作者:K 小哥 来源:K 哥爬虫 " 阅读本文大概需要 47 分钟. " 目录 文章较长,可作为 AST Babel 入门手册,强 ...
- 6行Python实现验证码识别,太稳了!
之前有个爬虫需求,但每次请求都需要进行验证码识别,故需要ocr识别,推荐一个Python免费的验证码识别-ddddocr(谐音带带弟弟OCR) 安装 pip install ddddocr -i ht ...
- python验证码识别算法_Python网站验证码识别
0x00 识别涉及技术 验证码识别涉及很多方面的内容.入手难度大,但是入手后,可拓展性又非常广泛,可玩性极强,成就感也很足. 验证码图像处理 验证码图像识别技术主要是操作图片内的像素点,通过对图片的像 ...
- Python爬虫理论 | (5) 反反爬虫技术
目录 1. 爬虫.反爬虫与反反爬虫 2.常见的反爬虫技术 3.Selenuim库 4.实战 1. 爬虫.反爬虫与反反爬虫 爬虫 自动获取网页信息的程序. 反爬虫 阻止爬虫程序获取网页信息的程序. 反反 ...
- python反反爬虫教学_爬虫进阶:反反爬虫技巧
主要针对以下四种反爬技术:Useragent过滤:模糊的Javascript重定向:验证码:请求头一致性检查. 高级网络爬虫技术:绕过 "403 Forbidden",验证码等 爬 ...
- Python进阶 │反爬虫和怎样反反爬虫
爬虫.反爬虫和反反爬虫是网络爬虫工作过程中一直伴随的问题. 在现实生活中,网络爬虫的程序并不像之前介绍的爬取博客那么简单,运行效果不如意者十有八九.首先需要理解一下"反爬虫"这个概 ...
- python爬图片_网络爬虫经验:反爬和反反爬
我想很多人入门python是图片爬虫,就是HTTP请求,保存一下图片,用python实现非常快.网上很多爬虫的教程就讲到这里,实际上很单一,看了跟没看没什么区别,都是找一下网页的规律,然后Beauti ...
- Python爬虫自学之第(①)篇——爬虫伪装和反“反爬”
有些网站是防爬虫的.其实事实是,凡是有一定规模的网站,大公司的网站,或是盈利性质比较强的网站,都是有高级的防爬措施的.总的来说有两种反爬策略,要么验证身份,把虫子踩死在门口:要么在网站植入各种反爬机制 ...
- python爬虫反爬对抗_python爬虫反反爬,你几乎可以横扫大部分 css 字体加密的网站...
你已经知道了对方是 如何自定义字体加密的了 你要想去反反爬 你就要先站在对方的角度去思考问题 有句话这么说来着 "知己知彼,才能那啥" 那么对于像猫眼电影.大众点评等等 那样的 c ...
最新文章
- ITK:创建矢量图像
- Qt Creator基本快捷键
- 带线的无限级下拉树列表-完整示例篇
- 将Python文件打包为exe文件,并在控制台运行之简易教程
- java多线程中的死锁、活锁、饥饿、无锁都是什么鬼?
- java 布隆过滤器_什么是布隆过滤器(Bloom Filter)?
- Elasticsearch就这么简单
- 论文浅尝 | KGAT: 用于推荐的知识图注意力网络
- 苹果CMS小俊XG013主题模板源码
- melogin.cn主页登录_melogin.cn登录官网
- 为何你仍是一名社畜码农?
- 《SAP从入门到精通》——导读
- Apollo星火计划学习笔记——第八讲Apollo控制模块解析与实践1
- PDF文件怎么拆分?看完就会了!
- 提供一个vs6,vs2005,vs2008,office2007可以下载的地址.
- [BBS 水木清华站]给Linux新手
- 微生物组被Nature选为2020年最值得关注的技术之一
- 加密指数有什么好买的?想象空间可能还没打开……
- #读书笔记# 《人类简史》Chapter4
- linux下usd的配置