十六:爬虫-验证码与字体反爬

一:验证码

验证码(CAPTCHA)是一种计算机程序设计技术,用于确定用户是人类而不是机器。它通常表现为一种图像或声音,要求用户在输入框中输入正确的文本或数字来证明自己是人类。因为机器人和计算机程序无法像人类一样理解和解决这些问题,所以只有真正的人类用户才能通过验证码验证。当然随着技术的发展现在的验证码种类越来越多,不仅仅只限于输入正确的文本或数字还有点选、滑动、旋转,计算,选择等多种验证方式。

1.为什么会用到验证码

验证码(CAPTCHA)主要用于确定用户是人类而不是机器。在互联网上,机器人和计算机程序可以自动进行各种操作,例如恶意攻击、垃圾邮件、网络钓鱼等不良行为。为了保护网站和应用程序的安全,防止这些不良行为的发生,引入了验证码技术。
使用验证码有以下几个主要原因:

  1. 防止机器人攻击:机器人攻击是一种自动化的攻击手段,攻击者使用自动程序来尝试登录、注册、发送垃圾邮件等行为。验证码可以有效地防止机器人攻击,因为机器人无法像人类一样理解和解决验证码问题。
  2. 保护用户隐私:有些网站需要用户提供个人信息或数据,例如注册新账户、在线支付、订购商品等。为了保护用户的隐私和数据安全,网站可以使用验证码来确认用户是真实的人类用户,而不是机器人。
  3. 防止垃圾邮件和网络钓鱼:垃圾邮件和网络钓鱼是常见的网络安全威胁,攻击者通过自动化程序发送大量垃圾邮件或伪造网站来欺骗用户。验证码可以有效地防止这些不良行为,因为只有真正的人类用户才能通过验证码验证。
  4. 防止暴力破解:暴力破解是一种攻击方式,攻击者使用自动化程序尝试猜测用户账户密码。验证码可以防止暴力破解,因为攻击者无法通过自动化程序解决验证码问题。
  5. 防止机器人爬虫:机器人爬虫是一种通过自动化程序获取网站上数据和内容的方式。有些网站希望限制机器人爬虫,以保护他们的知识产权和商业利益。验证码可以防止机器人爬虫,因为只有真正的人类用户才能通过验证码验证。
  6. 提高用户体验:尽管验证码可能会对用户造成一些不便,但它可以提高用户体验和满意度。通过使用验证码,网站可以保护用户免受垃圾邮件、网络钓鱼和其他恶意攻击的侵害,同时提供更安全和可靠的服务。
  7. 支持无障碍访问:有些用户可能无法识别验证码中的图像或声音,例如盲人、聋人等。为了支持无障碍访问,一些网站提供替代形式的验证码,例如数学表达式、滑动验证等。

2.目前验证码的分类

验证码(CAPTCHA)可以按照不同的分类标准进行分类。以下是一些常见的验证码分类方式:

  1. 文字型验证码:文字型验证码通常是一组随机生成的字母或数字,用户需要在输入框中输入正确的答案。这种验证码的优点是易于实现和识别,但容易受到OCR识别工具的攻击。
  2. 图片型验证码:图片型验证码通常是一张随机生成的图像,用户需要在输入框中输入正确的文字或数字。这种验证码的优点是更难受到 OCR 识别工具的攻击,但用户可能需要花费更多的时间来识别和输入正确的答案。
  3. 数学表达式型验证码:数学表达式型验证码通常是一个数学表达式,用户需要在输入框中输入正确的答案。这种验证码的优点是易于实现和识别,同时可以提高用户的数学能力。
  4. 滑动型验证码:滑动型验证码通常是一张图片,用户需要在滑块上滑动以显示正确的答案。这种验证码的优点是易于实现和识别,同时可以提高用户的操作体验。
  5. 声音型验证码:声音型验证码通常是一段随机生成的语音,用户需要听取并在输入框中输入正确的答案。这种验证码的优点是适合视力较差或无法识别图像的用户,但可能对听力有一定要求。

除了上述分类方式,还有其他一些特殊类型的验证码,例如拼图型验证码、颜色型验证码、行为型验证码等。这些验证码根据具体的应用场景和需求进行设计和实现。

二:打码平台的使用

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

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

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

  • 首先选择一个打码平台进行注册
    • 由于不同平台,注册的流程不一样,这里不再截图演示。注册完成后,如果没有提供免费适用的功能,我们需要充值才能正确的使用接口。每个平台,都会有自己的开发文档,我们按照开发文档的示列进行改写就可以直接使用了。
  • 需要进行充值
    • 如果只是简单的测试,可以充值较小的金额,由于是第三方平台,无法保证网站是持久可用的,充值须谨慎。
  • 获取网站的程序ID
    • 充值完成后,我们会获得一个程序ID,把这个ID放入到接口中,方便第三方平台进行校验。
  • 上传验证码,返回调用结果。

2.超级鹰的具体使用步骤

超级鹰网址: https://www.chaojiying.com/price.html
1、https://www.chaojiying.com/user/login进入超级鹰登录页面注册账号
2、下载demo包点击开发文档,在各语言sdk例子下载下,下载所需的语言包。
image.png
下载完成后解压会有一个chaojiying.py文件,将文件复制到你的项目下。复制完成如果你的python版本是2无需改动,如果是3,需要在print加上括号。
image.png
image.png
3、获取软件id
image.png
4、导入chaojiying模块下的Chaojiying_Client类,调用PostPic方法完成识别。

from chaojiying import Chaojiying_Client
chaojiying = Chaojiying_Client('用户名', '密码', '软件id')
im = open('需要识别的图片', 'rb').read()
print(chaojiying.PostPic(im, 9104)['pic_str'])	  # 9104为识别的验证码类型

5、验证码在价格体系下查看,根据自己的所需查看。
image.png

三:字体反爬

网页开发者自己创造一种字体,因为在字体中每个文字都有其代号,那么以后在网页中不会直接显示这个文字的最终的效果,而是显示他的代号,因此即使获取到了网页中的文本内容,也只是获取到文字的代号,而不是文字本身。简单的说,字体反爬指的就是浏览器页面上的字符和调试窗口或者源码中的内容,显示的不一样,这就是字体反爬。

1.字体反爬原理

在之前,网站开发者在设计网页时只能使用公用的字体来展示网页中的数据。但是,随着CSS样式的深入开发,网站开发者可以将自己的字体放到服务器中。当用户在访问Web界面时,对应的字体就会被浏览器自动下载到用户的计算机中,然后通过CSS样式进行调用。之后,通过一种映射关系,使得网页中的源数据变为真正的数据进行展示。
image.png
通过这种方式,使得这样就使得网站开发者进行网页设计时,只需要使用特殊字符进行占位即可,不需要将真正的数据放到页面中去。这样,爬虫程序如果不知道这种映射关系的话,就无法从字体中获取正确的数据,从而实现反爬虫。

2.字体映射表的处理

1、下载对应的字体文件

字体是在服务器上进行存储,并通过浏览器下载到我们的电脑上的,那么我们就可以在网站上找到加载的字体文件,下载下来。

2、寻找映射关系

通过对源网页中的占位数据和字体进行比对找到规律

3、构建映射算法

在上面我们已经找到了字体之间映射关系,那么我们现在就可以开始用Python来构建映射算法,从而使得爬虫可以获取一个正确的数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/292034.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

《深入理解C++11:C++11新特性解析与应用》笔记八

第八章 融入实际应用 8.1 对齐支持 8.1.1 数据对齐 c可以通过sizeof查询数据的长度,但是没有对对齐方式有关的查询或者设定进行标准化。c11标准定义的alignof函数可以查看数据的对齐方式。 现在的计算机通常会支持许多向量指令,4组8字节的浮点数据&a…

C++ namespace 学习

源自:【C】-命名空间的概念及使用_命名空间的概念及作用-CSDN博客 摘抄:

ISP 基础知识积累

Amber:现有工作必要的技术补充,认识需要不断深入,这个文档后续还会增加内容进行完善。 镜头成像资料 ——干货满满,看懂了这四篇文章,下面的问题基本都能解答 看完思考 1、ISP 是什么,有什么作用&#xff…

加密算法和身份认证

前瞻概念 在了解加密和解密的过程前,我们先了解一些基础概念 明文:加密前的消息叫 “明文” (plain text)密文: 加密后的文本叫 “密文” (cipher text)密钥: 只有掌握特殊“钥匙”的人,才能对加密的文本进行解密,这里…

前端实战第一期:悬浮动画

悬浮动画 像这样的悬浮动画该怎么做&#xff0c;让我们按照以下步骤完成 步骤&#xff1a; 先把HTML内容做起来&#xff0c;用button属性创建一个按钮&#xff0c;按钮内写上悬浮效果 <button classbtn>悬浮动画</button>在style标签内设置样式,先设置盒子大小&…

显示所有中国城市需要多少个汉字?

显示所有中国城市需要多少个汉字呢&#xff1f; 需要3678个汉字&#xff0c;看看我怎么知道的。 第一步&#xff1a;先找到中国的所有城市的名称 去哪里找到中国的所有城市的名称呢&#xff1f; 进入中国天气网&#xff1a;http://www.weather.com.cn/ 使用 F12 打开浏览器的调…

使用results.csv文件数据绘制mAP对比图

yolov5每次train完成&#xff08;如果没有中途退出&#xff09;都会在run目录下生成expX目录&#xff08;X代表生成结果次数 第一次训练完成生成exp0 第二次生成exp1…以此类推&#xff09;。expX目录下会保存训练生成的weights以及result.txt文件&#xff0c;其中weights是训练…

【MFC】计算机图形学实验:熟悉开发环境及工具(代码)

实验内容&#xff1a; 【MFC】计算机图形学实验1&#xff1a;熟悉开发环境及工具_绘制多义线mfc-CSDN博客 画笔和字体只给出两处代码&#xff1a; //创建刷子&#xff0c;设置填充色为黑色 CBrush NewBrush; NewBrush.CreateSolidBrush(RGB(0, 0, 0)); pDC->SelectObjec…

excel公式名称管理器

1.问题 在日常使用excel的时候&#xff0c;发布一个表格文件&#xff0c;需要限制表格的某列或某行只能从我们提供的选项中选择&#xff0c;自己随便填写视为无效&#xff0c;如下图所示&#xff0c;上午的行程安排只能从"在岗"、"出差"、"病假"…

seo分享:慎重使用蜘蛛池

其实要提高搜索引擎蜘蛛的来访次数&#xff0c;唯一的方法还是要通过网站本身的内容更新。频繁更新有质量的内容&#xff0c;才能够提高蜘蛛的来访次数。如果本身内容更新不多&#xff0c;外部引流的蜘蛛过多&#xff0c;最终发现没什么内容索引&#xff0c;蜘蛛来访的次数也会…

x-cmd pkg | 比 du 更好用的查看磁盘空间工具:dust

目录 简介首次用户技术特点竞品和相关作品进一步探索 简介 Dust 是一个用于分析磁盘空间使用情况的命令行工具&#xff0c;旨在提供直观的磁盘分布信息&#xff0c;它的名字是由 “du” 和 Rust 编程语言组合而来。 Dust 的主要功能是提供实时的磁盘空间概览&#xff0c;并以…

华为HCIE-Datacom课程介绍

厦门微思网络HCIE-Datacom课程介绍 一、认证简介 HCIE-Datacom&#xff08;Huawei Certified ICT Expert-Datacom&#xff09;认证是华为认证体系中的顶级认证&#xff0c;HCIE-Datacom认证定位具备坚实的企业网络跨场景融合解决方案理论知识&#xff0c;能够使用华为数通产品…

数据库存储过程

存储过程(特定功能的 SQL 语句集) 一组为了完成特定功能的 SQL 语句集&#xff0c;存储在数据库中&#xff0c;经过第一次编译后再次调用不需要再次编译&#xff0c;用户通过指定存储过程的名字并给出参数&#xff08;如果该存储过程带有参数&#xff09;来执行它。存储过程是…

计算机视觉入门与调优

大家好啊&#xff0c;我是董董灿。 在 CSDN 上写文章写了有一段时间了&#xff0c;期间不少小伙伴私信我&#xff0c;咨询如何自学入门AI&#xff0c;或者咨询一些AI算法。 90%的问题我都回复了&#xff0c;但有时确实因为太忙&#xff0c;没顾得过来。 在这个过程中&#x…

ArrayList学生管理系统

文章目录 1.ArrayList集合和数组的优势对比&#xff1a;1.1 ArrayList类概述1.2 ArrayList类常用方法1.2.1 构造方法1.2.2 成员方法1.2.3 示例代码 1.3 ArrayList存储字符串并遍历1.3.1 案例需求1.3.2 代码实现 1.4 ArrayList存储学生对象并遍历1.4.1 案例需求1.4.2 代码实现 1…

福利来袭,.NET Core开发5大案例,30w字PDF文档大放送!!!

千里之行&#xff0c;始于足下&#xff0c;若想提高软件编程能力&#xff0c;最最重要的是实践&#xff0c;所谓纸上得来终觉浅&#xff0c;绝知此事要躬行。根据相关【艾宾浩斯遗忘曲线】研究表明&#xff0c;如果不动手实践&#xff0c;记住的东西会很快忘记。 为了便于大家查…

大数据计算基础真题回忆

转载学长20 21的真题 转载链接 注&#xff1a;每年的课件可能会有更改&#xff0c;内容不一样&#xff0c;所以读者复习的时候以所在年份的课件为准 2020 ​ 2021 笔者2023秋 2023 都是大题&#xff0c;没有选择题。 改进的近似算法中&#xff0c;结合具体的例子说明&am…

算法训练营Day36(贪心-重叠区间)

都算是 重叠区间 问题&#xff0c;大家可以好好感受一下。 都属于那种看起来好复杂&#xff0c;但一看贪心解法&#xff0c;惊呼&#xff1a;这么巧妙&#xff01; 还是属于那种&#xff0c;做过了也就会了&#xff0c;没做过就很难想出来。 不过大家把如下三题做了之后&#…

mac远程ssh免密登录

服务器部署经常会登录到远程服务&#xff0c;为方便操作&#xff0c;提高效率对运维人员来说设置免密登录还是很有必要的。其实也是很简单&#xff0c;安以下操作步骤即可。 1、进入到&#xff5e;/.ssh目录下&#xff0c;确认已经生成有公钥与私钥。如果没有请执行发下命令 …

jdk动态代理与cglib代理区别1

动态代理有jdk动态代理及cglib代理&#xff0c;下面描述jdk动态代理 jdk动态代理 看了 上云 老师的视频&#xff0c;得出此理解 pom文件 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-st…