1 abstract

验证码作为一种自然人的机器人的判别工具,被广泛的用于各种防止程序做自动化的场景中。传统的字符型验证安全性已经名存实亡的情况下,各种新型的验证码如雨后春笋般涌现。目前最常见的一种形式就是"滑动拼图式"

很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
QQ群:1097524789

2 内容概述

关于滑动式验证,最早由国内某网络安全公司首次提出的行为式验证,以滑动拼图解锁的方式呈现在世人面前。然后大概过了好几年之后,各种各样的滑动式验证产品都出来了,那么这些看似一样的产品,它们的安全性到底如何呢?

本文特意挑选出了一些后来者的小厂商的滑动式验证来做下实验,仅从第一步的图像学上分析一下安全性。因为我的主技术路线是图像学,关于前端的js并不熟悉,所以就只在图像学上点到即止即可。仅供会一些自动化技术的同学提供一些知识补充吧。

由于研究的实验对象实在是太简单,所以本文涉及的一些图像学的知识也不难,基本上python的初级选手就可以跑通本程序。仅供大家学习学习。

3 研究对象

某小站点上由小厂商提供的"滑动式验证":

使用python写一个简单的爬虫自动化脚本,将此网站上的验证码资源多请求几次,并保存到本地,观查图片特点。

一般情况下,这一步是必须的,多下载一些图片,很多规律是可以一眼看出的。比如,从公开的页面中,连续请求此验证的资源 100次,下载100张图片后。

一眼看上去,此验证的图片素材都只有一种模式,那么就放心了,因为这个问题就比较单一,而不是多模式下你必须要解决多个问题。

4 定性分析

将这种单一模式的图片筛选一张出来,如下:

发现如下特点:

和前端展示相关的图片有:方块位置提示图A,小方块B,完整背景图C。

A图完全是由B和C合成

显然,设计这个验证图片的人没啥安全方面的经验,有如下两个产品细节没有注意:

对图片没做任何的特殊处理

对外公开提供了过多信息

于是使得识别此图片的位置变得极其简单。

5 定量分析

在前面一小节中,我们只是直观的看到了这些图片的一些特别,但是要解答这个题目,还需要进行量化,量化后才能程序化,程序化后才能全自动化。

使用matplotlib工具打开此图片。量化得到如下参数:

图片整体规格:w:240,h:450

由上到下分为三部分,每部分高度为150

6 求解图片

很明显,只要将第一张图和第三张图相应的像素相减,神奇的事情就发生了:

"左上" 减去 "右下" 就得到 "左下"的结果。

这个时候,对x方向的R通道的像素点进行累加统计。

得到如下的统计图:

然后对这个曲线求一阶导数或者只要发现有个突变值超过最大像素值的某百分比时,即可得到最左边的那个y方向突变点的位置。

到此为止,此图片的位置已经成功解出。

下面是相应的python代码:

 
  1. import numpy as np

  2. ...

  3. def get_boundary(mask, axis, ratio=0.6):

  4. """

  5. 对ç°åº¦å¾çæ个channelååç´ ç»è®¡

  6. """

  7. sum_along_axis = np.sum(mask, axis=axis)

  8. max_value = np.max(sum_along_axis)

  9. bound_value = max_value * ratio

  10. bvalue = (sum_along_axis >= bound_value).astype('int8')

  11. return np.where(bvalue != 0)[0][0]

  12. def get_predict_ans(img):

  13. """

  14. æ ¹æ®åç±»åºæ¥çå¾åï¼æ¾å°ç¸åºçå¾åä½ç½®

  15. ä¼ å¥äºè¿å¶çå¾çï¼è¿åç­æ¡

  16. :param img:

  17. :return:

  18. """

  19. nd_img = np.array(img)

  20. w_pos = get_boundary(nd_img, 0) # æ ¹æ®åå¸å¾æ¾å°è¾¹çä½ç½®

  21. return w_pos

总结

以上所述是小编给大家介绍的Python实现图片滑动式验证识别方法,希望对大家有所帮助!

Python解决滑块验证码相关推荐

  1. 用selenium解决滑块验证码

    前言 因为种种原因没能实现愿景的目标,在这里记录一下中间结果,也算是一个收场吧.这篇博客主要是用selenium解决滑块验证码的个别案列. 思路: 用selenium打开浏览器指定网站 将残缺块图片和 ...

  2. Python破解滑块验证码算法,完美避开人机识别

    | 完美是不可能的,加个震惊!Python破解BiliBili滑块验证码,完美避开人机识别,可以有 准备工作 B站登录页 https://passport.bilibili.com/login pyt ...

  3. Python解决图文验证码登录识别(1)

    前言 本文是该专栏的第22篇,后面会持续分享python的干货知识,记得关注. 在信息爆炸的年代,爬虫对于在工作中进行信息的抽取,获取重要的数据源是一项非常不错的技能,可以说很久之前的爬虫几乎没什么难 ...

  4. python识别滑块验证码_干掉验证码!使用Python图像识别移动滑块验证码

    文章来源:python干货铺子 ❞ 前言 验证码往往是爬虫路上的一只拦路虎,而其花样也是层出不穷:图片验证.滑块验证.交互式验证.行为验证等.随着OCR技术的成熟,图片验证已经渐渐淡出主流,而「滑块验 ...

  5. python处理滑块验证码_使用python实现滑动验证码

    首先安装一个需要用到的模块 pip install social-auth-app-django 安装完后在终端输入pip list会看到 social-auth-app-django 3.1.0so ...

  6. 利用Python解决豆瓣验证码,实现模拟登陆!

    前言: 更为重要的一件事情是它是纯Python编程语言开发的!!! 所以咱们利用Python去搞定它的验证码实现模拟登陆,是有一定意义的哟! 实战: Python 3.6.5 解释器 pycharm ...

  7. Python解决滑块验证,Scarpy框架采集数据到redis数据库!

    目录 架构介绍 安装创建和启动 配置文件目录介绍 爬取数据,并解析 数据持久化 保存到文件 保存到redis 动作链,控制滑动的验证码 架构介绍 Scrapy一个开源和协作的框架,其最初是为了页面抓取 ...

  8. python处理滑块验证码(企查查)实例

    ① Imagx=248.53是基于企查查的滑块横条的X轴长度,其他的网址或滑块需要重新配置 ②param url1:背景链接 ③param url2:滑块链接 ④param geetest1:滑块背景 ...

  9. Python cv2 滑块验证码

    #!/usr/bin/env python # -*- coding:utf-8 -*-import cv2class SlideCrack(object):def __init__(self, ga ...

最新文章

  1. table表头固定4种方法_4种细砂回收的方法分析
  2. McAfee:2012年风险与合规展望
  3. python怎样打开加密的文件_python基础教程如何用Python 加密文件
  4. 什么是前端开发中的Pseudo elements
  5. python 归并排序算法_python基本算法之实现归并排序(Merge sort)
  6. 使用字符流FileReader读取文本文
  7. 在Android 8.0之后版本上添加Hidl Service
  8. 不同系统下的shell的不同_案例分析 | 不同安装角度下平板集热器阳台壁挂式太阳能热水系统性能分析...
  9. 车牌号测试打分最准确的软件,汽车牌号码测吉凶_车牌号码测试打分_周易测车牌号吉凶 神巴巴测试网...
  10. java电影推荐系统_基于Mahout的电影推荐系统
  11. Parse error: syntax error, unexpected ':', 解决办法
  12. 一气之下,我抢过面试官电脑花10分钟搭建了MySQL主从架构,面试官蒙了
  13. cad一键卸载工具叫什么_「CAD」一键卸载AutoCAD工具、拿走不谢
  14. centos 架设虚拟服务器,centos虚拟主机搭建(centos搭建网站)
  15. 数据库性能系列之索引(中)
  16. python两两组合_python – 一个列表中的两个组合列表
  17. COMP SCI 4094/4194/7094 - Distributed Databases and Data Mining
  18. Days14 ContentProvider ContentResolver
  19. Qt5气泡式聊天框——QListWidget+QPainter实现
  20. ZYNQ-ZedBoard 上运行桌面 LINUX

热门文章

  1. python项目-每日日考系统-数据结构
  2. mysql执行计划字段解释
  3. Linux删除乱码文件
  4. Daemon线程--《Java并发编程的艺术》学习笔记
  5. 软考信息安全必备考点
  6. 全世界关于数学家和科学家的电影
  7. xcode 4.2下怎么添加framework?
  8. IP路由故障关于BGP的疑问解答
  9. 略论bs架构设计的几种模式
  10. 谷歌相册明年取消无限空间储存政策