一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術(shù)及教程分享平臺!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Python - Python實現(xiàn)圖片滑動式驗證識別方法

Python實現(xiàn)圖片滑動式驗證識別方法

2020-12-16 01:05一點一滴的Beer Python

驗證碼作為一種自然人的機器人的判別工具,被廣泛的用于各種防止程序做自動化的場景中。這篇文章主要介紹了Python實現(xiàn)圖片滑動式驗證識別方法,需要的朋友可以參考下

1 abstract

驗證碼作為一種自然人的機器人的判別工具,被廣泛的用于各種防止程序做自動化的場景中。傳統(tǒng)的字符型驗證安全性已經(jīng)名存實亡的情況下,各種新型的驗證碼如雨后春筍般涌現(xiàn)。目前最常見的一種形式就是“滑動拼圖式”

2 內(nèi)容概述

關(guān)于滑動式驗證,最早由國內(nèi)某網(wǎng)絡(luò)安全公司首次提出的行為式驗證,以滑動拼圖解鎖的方式呈現(xiàn)在世人面前。然后大概過了好幾年之后,各種各樣的滑動式驗證產(chǎn)品都出來了,那么這些看似一樣的產(chǎn)品,它們的安全性到底如何呢?

本文特意挑選出了一些后來者的小廠商的滑動式驗證來做下實驗,僅從第一步的圖像學(xué)上分析一下安全性。因為我的主技術(shù)路線是圖像學(xué),關(guān)于前端的js并不熟悉,所以就只在圖像學(xué)上點到即止即可。僅供會一些自動化技術(shù)的同學(xué)提供一些知識補充吧。

由于研究的實驗對象實在是太簡單,所以本文涉及的一些圖像學(xué)的知識也不難,基本上python的初級選手就可以跑通本程序。僅供大家學(xué)習(xí)學(xué)習(xí)。

3 研究對象

某小站點上由小廠商提供的“滑動式驗證”:

Python實現(xiàn)圖片滑動式驗證識別方法

使用python寫一個簡單的爬蟲自動化腳本,將此網(wǎng)站上的驗證碼資源多請求幾次,并保存到本地,觀查圖片特點。

Python實現(xiàn)圖片滑動式驗證識別方法

一般情況下,這一步是必須的,多下載一些圖片,很多規(guī)律是可以一眼看出的。比如,從公開的頁面中,連續(xù)請求此驗證的資源 100次,下載100張圖片后。

一眼看上去,此驗證的圖片素材都只有一種模式,那么就放心了,因為這個問題就比較單一,而不是多模式下你必須要解決多個問題。

4 定性分析

將這種單一模式的圖片篩選一張出來,如下:

Python實現(xiàn)圖片滑動式驗證識別方法

發(fā)現(xiàn)如下特點:

和前端展示相關(guān)的圖片有:方塊位置提示圖A,小方塊B,完整背景圖C。

A圖完全是由B和C合成

顯然,設(shè)計這個驗證圖片的人沒啥安全方面的經(jīng)驗,有如下兩個產(chǎn)品細節(jié)沒有注意:

對圖片沒做任何的特殊處理

對外公開提供了過多信息

于是使得識別此圖片的位置變得極其簡單。

5 定量分析

在前面一小節(jié)中,我們只是直觀的看到了這些圖片的一些特別,但是要解答這個題目,還需要進行量化,量化后才能程序化,程序化后才能全自動化。

Python實現(xiàn)圖片滑動式驗證識別方法

使用matplotlib工具打開此圖片。量化得到如下參數(shù):

圖片整體規(guī)格:w:240,h:450

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

6 求解圖片

很明顯,只要將第一張圖和第三張圖相應(yīng)的像素相減,神奇的事情就發(fā)生了:

Python實現(xiàn)圖片滑動式驗證識別方法

“左上” 減去 “右下” 就得到 “左下”的結(jié)果。

這個時候,對x方向的R通道的像素點進行累加統(tǒng)計。

得到如下的統(tǒng)計圖:

Python實現(xiàn)圖片滑動式驗證識別方法

然后對這個曲線求一階導(dǎo)數(shù)或者只要發(fā)現(xiàn)有個突變值超過最大像素值的某百分比時,即可得到最左邊的那個y方向突變點的位置。

到此為止,此圖片的位置已經(jīng)成功解出。

下面是相應(yīng)的python代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import numpy as np
...
def get_boundary(mask, axis, ratio=0.6):
 """
 對灰度圖的某個channel做像素統(tǒng)計
 """
 sum_along_axis = np.sum(mask, axis=axis)
 max_value = np.max(sum_along_axis)
 bound_value = max_value * ratio
 bvalue = (sum_along_axis >= bound_value).astype('int8')
 return np.where(bvalue != 0)[0][0]
def get_predict_ans(img):
 """
 根據(jù)分類出來的圖像,找到相應(yīng)的圖像位置
 傳入二進制的圖片,返回答案
 :param img:
 :return:
 """
 nd_img = np.array(img)
 w_pos = get_boundary(nd_img, 0) # 根據(jù)分布圖找到邊界位置
 return w_pos

總結(jié)

以上所述是小編給大家介紹的Python實現(xiàn)圖片滑動式驗證識別方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對服務(wù)器之家網(wǎng)站的支持!

原文鏈接:http://www.cnblogs.com/beer/p/7808043.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美一级久久久久久久大片 | 亚洲精品91在线 | 日本高清不卡一区久久精品 | 国产成人综合精品 | 国产亚洲精品综合在线网址 | 国产欧美日韩不卡一区二区三区 | 四虎网址 | 91精品国产高清久久久久久io | 狠狠干狠狠插 | 精品一区二区三区自拍图片区 | 国产资源视频在线观看 | 亚洲欧美日本在线观看 | 99热国产这里只有精品 | 国产麻豆在线观看网站 | 亚洲色图影院 | 日本动漫黄网站在线观看 | 亚洲色图图| 精品国产一区二区三区久 | 国产大片51精品免费观看 | 国产精品成人一区二区 | 精品国产香蕉 | 免费观看毛片视频 | 15同性同志18 | 日本特级大片 | 精品区卡一卡2卡三免费 | 欧美香蕉人人人人人人爱 | 四虎成人4hutv影院 | 热99精品| 玩两个少妇女邻居 | 国产成人夜色91 | 91久久国产青草亚洲 | 色播影院性播影院私人影院 | 国产精品一区二区三区免费 | 国内9lporm自拍视频区 | 我把校花黑色蕾丝胸罩脱了 | 精品91自产拍在线观看99re | 日本韩国推理片免费观看网站 | 日本在线看免费 | 久久伊人在 | 贤妻良母电影日本 | 免费视频大全 |