7.图像验证码与cookie操作

有很多第三方的公司可以解决图像验证码问题,但是人家都需要费用,比如 云码 验证码识别价格_验证码识别费用多少钱-云码 超级鹰 超级鹰验证码识别-专业的验证码云端识别服务,让验证码识别更快速、更准确、更强大

如果不需要搞定太专业的验证码,我们可以自己搞定一下比如 paddleocr的基本使用-CSDN博客

我们后面都是通过这个服务来识别验证码

验证码可能与很多的因素相关,比如请求验证码的时候发送查询字符串或是与cookie、session相关或是与时间戳相关,都有可能

我们下面做个古诗文网的例子

  • 参考 实现古诗文网站的模拟登录_古诗文网模拟登录-CSDN博客

古诗文网 登录古诗文网

目录

1  验证码

2  登录请求

3  处理cookie

3.1  手动添加cookie

3.2  寻找cookie来源

3.3  requests.Session()


 

1  验证码

首先看一下这个验证码的图像地址,可以看出这个验证码的url是拼接出来的,直接请求url就行

能拿到图像之后我们可以使用paddleocr搞定验证码,可以参考 paddleocr的基本使用-CSDN博客

验证码在发起登录请求之前请求就行,浏览器其实也是这么做的,浏览器先请求页面,请求页面就相当于请求页面中的资源,资源中包含验证码

之后等用户点击按钮之后,相当于发起第二次请求,这时候你再用代码模拟第二次请求就行了

我们目前的代码是这样的

运行后可以解决验证码问题(存在识别不准确的情况)

2  登录请求

为了拿到登录按钮的请求,我们先登录一次

这样我们拿到了登录的请求地址以及需要携带的参数

再代码中加入如下内容

运行后会得到webpage.html

打开之后是这样的,网站说我们的验证码有问题,但我们查看之后发现验证码是正确的

写前后端的时候我们经常使用cookie判断用户之前是否登录过,所以登录出现这种问题的时候,我们可以考虑cookie的问题。

3  处理cookie

cookie在请求头中,我们先看一眼正常的请求头内容

我们可以给这些请求头直接携带上,比如

3.1  手动添加cookie

这种方法叫手动添加cookie,一般我们不用这种方法,一是比较麻烦,二是cookie有可能是动态变化的,这么写不一定对。在我们的例子中发起请求后依然出现没加cookie的结果,也就是说手动添加cookie的方法走不通

3.2  寻找cookie来源

cookie的来源一般为提交登录的时候相应的内容,我们通过抓登录成功的包看这里的cookie,发现有请求cookie与相应cookie,说明这个cookie确实是在变化的

也可以从response Headers中到Set-Cookie这个键

3.3  requests.Session()

requests.Session()可以自动存储cookie的内容,你可以拿requests.Session()当作一个增强版的requests

我们对代码做如下修改

当验证码识别正确后,我们进行请求就可以请求到登录成功的页面了

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue3 + Electron框架读取程序外部配置文件

网上找了一堆都不行,根据这个步骤来肯定能用 1. 在项目下新建一个config.json文件 2. json文件中写入一些配置 3. vue.config.js中配置打包时把config.json文件copy到应用目录下 pluginOptions:{electronBuilder:{nodeIntegration:true,builderOptions: {extraReso…

软件是什么?前端,后端,数据库

软件是什么? 由于很多东西没有实际接触,很难理解,对于软件的定义也是各种各样。但是我还是不理解,软件开发中的前端,后端,数据库到底有什么关系呢! 这个问题足足困扰了三年半,练习时…

【数据结构】八大排序之计数排序算法

🦄个人主页:修修修也 🎏所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 目录 一.计数排序简介及思想 二.计数排序代码实现 三.计数排序复杂度分析 📌时间复杂度 📌空间复杂度 结语 一.计数排序简介及思想 计数排序(Cou…

7、DETR:基于Transformer的端到端目标检测

目录 一、论文题目 二、背景与动机 三、创新与卖点 四、具体实现细节 模型架构 简易代码 五、结论与展望 六、一些资料 一、论文题目 End-to-End Object Detection with Transformershttps://arxiv.org/abs/2005.12872 二、背景与动机 在计算机视觉领域,目标…

使用docker搭建LNMP架构

目录 环境准备 下载安装包 服务器环境 任务分析 nginx部分 建立工作目录 编写 Dockerfile 脚本 准备 nginx.conf 配置文件 生成镜像 创建自定义网络 启动镜像容器 验证nginx MySQL部分 建立工作目录 编写 Dockerfile 准备 my.cnf 配置文件 生成镜像 启动镜像…

如何利用SD-WAN升级企业网络,混合组网稳定性更高?

随着企业信息化的升级,传统网络架构已经无法满足企业复杂的、多样化的组网互联需求。 企业多样化的组网需求包括: 一是需要将各办公点互联起来进行数据传输、资源共享; 二是视频会议、ERP、OA、邮箱系统、云服务应用程序等访问需求&#xff…

F-Droid:开源Android应用的宝库

F-Droid:开源Android应用的宝库 引言 F-Droid是一个开源应用程序存储库,旨在为安卓用户提供自由、隐私和安全的应用程序。它最初于2010年由Ciaran Gultnieks创建,因为他认为Google Play Store上的应用程序不够透明和安全。F-Droid的目标是为…

elasticsearch[二]-DSL查询语法:全文检索、精准查询(term/range)、地理坐标查询(矩阵、范围)、复合查询(相关性算法)、布尔查询

ES-DSL查询语法(全文检索、精准查询、地理坐标查询) 1.DSL查询文档 elasticsearch 的查询依然是基于 JSON 风格的 DSL 来实现的。 1.1.DSL 查询分类 Elasticsearch 提供了基于 JSON 的 DSL(Domain Specific Language)来定义查…

码住!软件测试人员的基本有哪些?

在软件测试领域,许多人误以为软件测试只是简单的点点鼠标、看看屏幕就能完成。然而,软件测试的复杂性远不止于此。作为一名软件测试人员,你需要具备多项技能和素质来保证测试的有效性和质量。 打字技能可以事半功倍 打字是软件测试人员必备的…

[linux]使用libqrencode库生成二维码数据

一、需求 要将一段数据生成为二维码&#xff0c; 二、方案 使用linux标准库&#xff0c;通过libqrencode将需要写入的信息转为二维码图片数据。 三、实现 3.1编写c文件 #include <stdio.h> #include <stdlib.h> #include <qrencode.h> int main() {QRc…

Facebook广告优化

通过Facebook广告优化来提高产品销量&#xff0c;以下是一些步骤和技巧&#xff1a; 1、确定目标受众&#xff1a;在Facebook广告平台上&#xff0c;您可以根据性别、年龄、地理位置、兴趣爱好等多种因素来定义您的目标受众。通过细分目标受众&#xff0c;您可以更精准地将广告…

[足式机器人]Part2 Dr. CAN学习笔记- Kalman Filter卡尔曼滤波器Ch05

本文仅供学习使用 本文参考&#xff1a; B站&#xff1a;DR_CAN Dr. CAN学习笔记 - Kalman Filter卡尔曼滤波器 Ch05 1. Recursive Algirithm 递归算法2. Data Fusion 数据融合Covarince Matrix协方差矩阵State Space状态空间方程 Observation观测器3. Step by step : Deriatio…