12.验证码以及付费代理
文章目录
- 一、验证码的处理
- 1、验证码概述
- 1、2 什么是图片验证码?
- 1、2 验证码的作用
- 1、3 图片验证码使用场景
- 1、4 图片验证码的处理方案
- 2、图片在网页页面中的形式
- 2、1 如何进行图片形式的转化
- 3、打码平台
- 二、代理的使用
- 2、1 付费代理
- 2、1、1 找付费代理服务站点
- 2、1、2 生成获取代理的api接口
- 2、1、3 python请求接口
- 2、2 免费代理
一、验证码的处理
1、验证码概述
1、2 什么是图片验证码?
- 验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apart”(全自动区分计算机和人类的图灵测试)的缩写,是一种区分用户是计算机还是人的公共全自动程序。
1、2 验证码的作用
- 防止恶意破解密码、刷票、论坛灌水、刷页。有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登录尝试,实际上使用验证码是现在很多网站通行的方式(比如招商银行的网上个人银行,百度社区),我们利用比较简易的方式实现了这个功能。虽然登录麻烦一点,但是对网友的密码安全来说这个功能还是很有必要,也很重要。
1、3 图片验证码使用场景
- 注册
- 登录
- 频繁发送请求时,服务器弹出验证码进行验证
1、4 图片验证码的处理方案
- 手动输入(input): 这种方法仅限于登录一次就可持续使用的情况
- 图像识别引擎解析: 使用光学识别引擎处理图片中的数据,目前常用于图片数据提取,较少用于验证码处理
- 打码平台: 爬虫常用的验证码解决方案
对于验证码的处理, 我们今天主要学习通过打码平台去处理验证码
2、图片在网页页面中的形式
图片在网页页面中的形式一般就两种:一种是以一个连接形式存在html中,另外一种是以字符串的形式存在于html中。
-
以链接形式存在于html中的图片,意味着每次浏览器执行渲染的时候会发送图片链接地址请求,请求到了之后再渲染到页面。目前大部分网站都是以这种形式去加载图片的。之前我们也学习过通过获取图片的链接地址就可以请求图片数据。
这样的形式存在于页面当中的图片,如果一旦页面图片很多的话,就意味着需要发送很多次网络请求,去请求图片数据。
-
以字符串形式存在于html中的图片,和上述形式有明显的区别。这样形式的图片在html页面中是以字符串的形式去展示图片,而不是一个链接。
这样的好处是加载页面的时候,不用发送网络请求去请求图片数据。因为我们在请求html页面的时候就已经拿到图片的字符串数据,浏览器只需要转换图片为二进制形式展示就可以了。
有利也有弊,这样做虽然网络请求的次数少了,但是我们需要把图片转换成字符串形式才可以放到标签里面。如果图片数据过大,那么转换之后的字符长度就会很长。所以一般网页中字符串形式的图片都是数据量比较小的图片,比如验证码。
2、1 如何进行图片形式的转化
前面我们讲了图片有两种形式,链接形式的图片我们通过requests发送请求就可以拿到图片的二进制数据,保存下来就可以用看图软件查看。这种形式的图片处理就不做赘述了。
那么字符串的形式的图片我们应该如何处理呢?
字符串形式的图片我们可以借助 base64 模块进行处理。
-
base64.b64decode()
把字符串形式的图片转化为二进制的数据, 传入图片的字符串数据
-
base64.b64encode()
把二进制形式的图片转化为字符串数据, 传入图片的二进制数据
3、打码平台
现在很多网站都会使用验证码来进行反爬,所以为了能够更好的获取数据,需要了解如何使用打码平台破解爬虫中的验证码。
相比于复杂繁琐的验证码破解,打码平台能够给你快速的解决方案。今天我们就通过验证码平台学习对接验证码平台识别验证码。
二、代理的使用
2、1 付费代理
2、1、1 找付费代理服务站点
-
搜索
代理ip,能够发现有很多付费代理服务站点 目前付费代理站点一般注册后,会有免费的测试代理用量,学习阶段用免费的做测试就够用了。不过现在代理网站普遍都需要实名认证,也会有站点的工作人员联系你添加联系方式,额外也会送你一些ip测试。
用其他网站的代理服务也可以,使用方法大同小异
-
手机号注册,登录后实名认证,即可到账免费测试金额
*
2、1、2 生成获取代理的api接口
- 根据情况自选选项,生成获取代理的api接口。
2、1、3 python请求接口
-
请求接口示例
import requestsdef get_ip():response = requests.get(url='http://tiqu.pyhttp.taolop.com/getip?count=1&neek=13873&type=2&yys=0&port=1&sb=&mr=2&sep=0&pack=7406')ip_json = response.json()# print(ip_json)proxy = ip_json['data'][0]['ip'] + ':' + str(ip_json['data'][0]['port'])# print(proxy)proxies = {"http": "http://" + proxy,"https": "http://" + proxy,}return proxies -
数据返回示例
{'code': 0, 'data': [{'ip': '223.214.30.18', 'port': 64257}], 'msg': '0', 'success': True}
获取到代理ip后,即可在requests请求的时候,携带proxies关键字参数进行代理伪装的请求。
2、2 免费代理
网络上有大量免费且公开的代理可以供我们使用,但这些单利并不能保证都可以使用,因为同样的代理可能被其他人拿来爬虫使用而遭到封禁,因此,在真正使用之前,我们需要对这些免费代理进行筛选,剔除那些不能使用的。保留下可以用的,来构建一个代理池,供我们爬虫使用。
因此我们首先需要在网络中寻找免费的代理数据, 然后搭建一个代理服务去筛选可用的代理,通过链接接口的形式供爬虫项目去调用。
相关文章:
12.验证码以及付费代理
文章目录 一、验证码的处理1、验证码概述1、2 什么是图片验证码?1、2 验证码的作用1、3 图片验证码使用场景1、4 图片验证码的处理方案 2、图片在网页页面中的形式2、1 如何进行图片形式的转化 3、打码平台 二、代理的使用2、1 付费代理2、1、1 找付费代理服务站点2…...
使用Plotly可视化
显示项目受欢迎程度 改进图表 设置颜色,字体...
【C语言】结构体、位段、枚举、联合(共用体)
结构体 结构:一些值的集合,这些值称为成员变量。结构体的每个成员可以是不同类型的变量; 结构体声明:struct是结构体关键字,结构体声明不能省略struct; 匿名结构体:只能在声明结构体的时候声…...
“Python+”集成技术高光谱遥感数据处理与机器学习深度应用
涵盖高光谱遥感数据处理的基础、python开发基础、机器学习和应用实践。重点解释高光谱数据处理所涉及的基本概念和理论,旨在帮助学员深入理解科学原理。结合Python编程工具,专注于解决高光谱数据读取、数据预处理、高光谱数据机器学习等技术难题…...
Excel 转为 PDF,PNG,HTML等文件
1.安装 Spire.XLS for Java,下载jar包 下载地址 2.引入方式一(我这里这种方式一直无法引入,都是失败,所以用的方式二) <repositories><repository><id>com.e-iceblue</id><name>e-iceblue</na…...
docker中使用GPU+rocksdb
配置环境 delldell-Precision-3630-Tower ~ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 20.04.6 LTS Release: 20.04 Codename: focaldelldell-Precision-3630-Tower ~ nvcc --version nvcc: NVIDIA (R) Cuda comp…...
好用的跨平台同步笔记工具,手机和电脑可同步的笔记工具
在这个快节奏的工作环境中,每个人都在寻找一种方便又高效的方式来记录工作笔记。记录工作笔记可以帮助大家统计工作进展,了解工作进程,而如果工作中常在一个地方办公,直接选择电脑或者手机中笔记工具来记录即可,但是对…...
【Python 千题 —— 基础篇】浮点数转换为整数
题目描述 题目描述 整数转换为浮点数。 输入描述 输入一个整数。 输出描述 程序将整数转换为浮点数并输出。 示例 示例 ① 2输出: 2.0代码讲解 下面是本题的代码: # 描述: 整数转换为浮点数。 # 输入: 输入一个整数。 # 输出: 程序将整数转换…...
金融科技论文D部分
总结 以每周为例, 动量因子定义每种货币为前一周的回报率 价值因子定义为当前市值与其区块链中过去 7 天平均链上交易价值 利差因子定义为前 7 天硬币发行总量的负数除以在7天期限开始时未偿还的硬币量。 因素定义 为了避免过拟合,我们试图定义每一…...
Apache Tomcat下载安装配置使用超详细
下载安装 tomcat官网 在此我们以Tomcat 9.0.81为例,点击下载压缩包,解压到自己的文件夹。 tar.gz是linux操作系统下的安装版本。zip是windows系统下的压缩版本。Windows Service Installer是windows操作系统下的exe安装版本。 检查是否配置JDK 1.…...
基于Seata的分布式事务方案
在Seata中,有4种分布式事务实现方案 XA、AT、TCC、Saga 其中XA利用了数据库的分布式事务特性,AT相当于框架去控制事务回滚。TCC手写三个方法,saga手写两个方法。 AT的性能和编写比较折中,是最常用的一种。TCC一些视频教程中介绍…...
指令跳转:原来if...else就是goto
目录 CPU 是如何执行指令的? 从 if…else 来看程序的执行和跳转 如何通过 if…else 和 goto 来实现循环? 小结 你平时写的程序中,肯定不只有 int a 1 这样最最简单的代码或者指令。我们总是要用到 if…else 这样的条件判断语句、while 和…...
【数据库系统概论】第四章数据库安全性
数据库的安全性:保护数据库以防止不合法使用所造成的数据泄露、更改或破坏 grant和revoke语法...
如何正确的关闭Redis服务器
Redis官方原生版本是在Linux平台上开发和测试的,但是大多数初学者都是使用Windows系统来学习如何开发的。因此,官方提供了一个叫做“Microsoft Open Tech Redis”的项目,该项目专门为Windows平台提供了一个官方支持的Redis版本,但…...
MySQL日志管理和权限管理(重点)
目录 一、日志管理1.错误日志2.二进制日志3.慢查询日志 二、权限管理(重点)1.用户登录管理2.创建用户及授权3.刷新权限4.权限简介5.查看权限7.修改密码8、删除用户9、查看密码复杂度 一、日志管理 日志类型 1、错误日志:启动,停止,关闭失败报…...
Maven 使用教程(二)
一、如何创建JAR并将其安装在本地存储库中? 制作JAR文件非常简单,可以通过执行以下命令来完成: mvn package现在可以查看${project.basedir}/target目录,您将看到生成的JAR文件。 现在,您需要将生成的工件࿰…...
[Swift]同一个工程管理多个Target
1.准备 先创建一个测试工程“ADemo”,右键其Target选择Duplicate,再复制一个Target为“ADemo2”。 再选择TARGETS下方的“”,添加一个APP到项目中,这个命名为“BDemo”。 2、管理多个Target 可以对三个target分别导入不同的框…...
DevExpress Reporting中文教程 - 如何在macOS等系统中生成导出报表文档
DevExpress Reporting是.NET Framework下功能完善的报表平台,它附带了易于使用的Visual Studio报表设计器和丰富的报表控件集,包括数据透视表、图表,因此您可以构建无与伦比、信息清晰的报表。 在本文中,我们将讨论如何在.NET MA…...
1967作为子字符串出现在单词中的字符串数目
java解法,程度:简单 说明 给你一个字符串数组 patterns 和一个字符串 word ,统计 patterns 中有多少个字符串是 word 的子字符串。返回字符串数目。 子字符串 是字符串中的一个连续字符序列。 示例 1: 输入:patter…...
CocosCreator 面试题(二)JavaScript中的prototype的理解
1、原型(prototype)的作用 在JavaScript中,每个函数都有一个特殊的属性叫做"prototype",它是一个对象。 原型(prototype)在JavaScript中用于实现对象之间的继承和共享属性。当创建一个函数时&am…...
idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...
<6>-MySQL表的增删查改
目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表…...
Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...
Frozen-Flask :将 Flask 应用“冻结”为静态文件
Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...
关于 WASM:1. WASM 基础原理
一、WASM 简介 1.1 WebAssembly 是什么? WebAssembly(WASM) 是一种能在现代浏览器中高效运行的二进制指令格式,它不是传统的编程语言,而是一种 低级字节码格式,可由高级语言(如 C、C、Rust&am…...
【开发技术】.Net使用FFmpeg视频特定帧上绘制内容
目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...
【Java学习笔记】BigInteger 和 BigDecimal 类
BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点:传参类型必须是类对象 一、BigInteger 1. 作用:适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...
uniapp手机号一键登录保姆级教程(包含前端和后端)
目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号(第三种)后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...
