Python 200行代码实现一个滑动验证码过程详解

作者:千锋Python唐唐君 时间:2022-08-24 18:24:35 

前言

做网络爬虫的同学肯定见过各种各样的验证码,比较高级的有滑动、点选等样式,看起来好像挺复杂的,但实际上它们的核心原理还是还是很清晰的,本文章大致说明下这些验证码的原理以及带大家实现一个滑动验证码。

实际上这类验证码的校验是分为两个步骤的:

1.第一步就是前端的校验。一般来说,登录注册页面在点击提交的时候都会伴随着一个表单提交,在表单提交的时候会有 JavaScript 事件的触发。如果加入了验证码,那么在表单提交的时候会多加一个额外的验证,判断这个验证码是否已经成功完成了操作。如果没有的话,那就直接取消表单的提交,然后顺便提示说”您的验证没通过,请重新验证“,诸如此类的话。所以这一步就能防范”君子“之为了。

2.第二步就是服务端的校验。意思就是说表单提交之后,会有请求发送到服务器,这个请求中包含了很多数据,比如用户名、密码,如果对接了验证码的话,还会有额外的验证码的值,或者更复杂的加密后的 Token 值,服务器会对发过来的信息进行校验,如果验证通过,那么整个请求就成功了,返回正常的响应,否则返回错误的响应。所以如果想要通过程序来直接构造表单提交的时候,服务端就可以做进一步的校验,由于提交的验证码相关的信息都是和服务端的 Session 相关联的,另外再加上一些 CSRF 等的校验,所以这一步就能防范”小人“之为了。

上面就是验证码校验的两个阶段,一般来说为了安全性,在开发一个网站时需要客户端和服务端都加上校验,这样才能保证安全性。

本文章主要来介绍一下第一个阶段,也就是前端校验的验证码的实现,下面来介绍一下拖动验证码的具体实现。

需求

那么前端完成一个合格的验证码,究竟需要做成什么样子呢?

1.首先验证码有个大体的雏形,既然是拖动验证码,那就要拖动块和目标块,我们需要把拖动块拖动到目标块上就算校验成功。

2.验证码的一个功能就是来规避机器的自动操作,所以我们需要通过轨迹来判断这个拖动过程是真实的人还是机器,因此我们需要记录拖动的路径,路径经过计算之后可以发送到后端进行进一步的分类,比如对接深度学习模型来分类拖动轨迹是否是人。

来源:https://www.cnblogs.com/cherry-tang/p/11121554.html

标签:python,滑动,验证码
0
投稿

猜你喜欢

  • MySQL六种约束的示例详解

    2024-01-16 19:15:38
  • Mysql中索引和约束的示例语句

    2024-01-15 18:56:30
  • MySQL安装配置以及安装失败解决过程

    2024-01-13 18:55:28
  • Python 实现进度条的六种方式

    2022-09-26 02:22:08
  • pytorch读取图像数据转成opencv格式实例

    2021-01-31 03:12:22
  • 使用limit,offset分页场景时为什么会慢

    2024-01-13 02:46:52
  • 自适应内容高度的收缩与展开

    2007-09-24 14:38:00
  • Python类和对象基础入门介绍

    2022-04-03 12:14:48
  • python基于tkinter制作图形界面的2048游戏

    2022-02-03 03:40:47
  • js实现input+select组合 抛砖引玉

    2010-08-02 12:34:00
  • python代码实现烟花实例

    2022-09-13 18:09:18
  • 深入了解Golang中Slice切片的使用

    2023-09-25 08:59:08
  • XHTML下,JS浮动代码失效的问题

    2024-05-28 15:37:51
  • django用户注册、登录、注销和用户扩展的示例

    2021-09-09 13:11:05
  • python3的url编码和解码,自定义gbk、utf-8的例子

    2022-08-02 10:07:39
  • Pyhton中单行和多行注释的使用方法及规范

    2021-11-21 12:13:00
  • django的model操作汇整详解

    2022-05-16 03:59:46
  • Python实现输出某区间范围内全部素数的方法

    2022-04-25 10:04:50
  • python人工智能tensorflow构建卷积神经网络CNN

    2023-01-09 21:49:10
  • Python超简单分析评论提取关键词制作精美词云流程

    2021-07-27 22:00:41
  • asp之家 网络编程 m.aspxhome.com