當前位置:首頁 » 編程語言 » python驗證碼圖片

python驗證碼圖片

發布時間: 2023-01-12 22:25:01

A. python如何解析爬去這個驗證碼的圖片有沒有人知道,查到最後應該是bas64加密加cookie的

將它下載到一個文件夾,然後使用Python圖像識別來識別,識別率不算準確

B. python爬取驗證碼圖片,遇到驗證碼src屬性為完整的網址應該怎麼做

爬蟲中手動輸入驗證碼方法無法獲取圖片src地址
驗證碼在html中圖片標簽內容:
<class=「verCodeImg」 src="/kaptcha.jpg?v=0.234724039578059" οnclick=「verCode(this)」>
< class=「verCodeImg」 src="/kaptcha.jpg?v=0.234724239578059" οnclick=「verCode(this)」>
可知獲取到驗證碼的src地址就能動態的獲得驗證碼
因為驗證碼是動態的!動態的!動態的!
用動態爬取網頁的方法:
要用到selenium庫
其實獲得了驗證碼的src地址,我還是沒能成功登陸
因為即使是相同的鏈接點進去,每一次刷新都會有不同的驗證碼
通過動態網頁打開是一張
解析src地址出來是另一張

C. 用python如何直接獲取jsp生成的驗證碼圖片

你只需要正常請求圖片就行了,分析一下image的src,把它拼接成一個完整的URL去請求就好了,得到的有可能是BASE64編碼串,或者是文件,把它保存下來就可以了。

D. 請教生成如圖驗證碼的python演算法

def gene_text():
source = list(string.letters)
for index in range(0,10):
source.append(str(index))
return ''.join(random.sample(source,number))#number是生成驗證碼的位數
然後我們要創建一個圖片,寫入字元串,需要說明的這裡面的字體是不同系統而定,如果沒有找到系統字體路徑的話,也可以不設置
def gene_code():
width,height = size #寬和高
image = Image.new('RGBA',(width,height),bgcolor) #創建圖片
font = ImageFont.truetype(font_path,25) #驗證碼的字體和字體大小
draw = ImageDraw.Draw(image) #創建畫筆
text = gene_text() #生成字元串
font_width, font_height = font.getsize(text)
draw.text(((width - font_width) / number, (height - font_height) / number),text,
font= font,fill=fontcolor) #填充字元串
接下來,我們要在圖片上畫幾條干擾線

#用來繪制干擾線
def gene_line(draw,width,height):
begin = (random.randint(0, width), random.randint(0, height))
end = (random.randint(0, width), random.randint(0, height))
draw.line([begin, end], fill = linecolor)
最後創建扭曲,加上濾鏡,用來增強驗證碼的效果。
image = image.transform((width+20,height+10), Image.AFFINE, (1,-0.3,0,-0.1,1,0),Image.BILINEAR) #創建扭曲
image = image.filter(ImageFilter.EDGE_ENHANCE_MORE) #濾鏡,邊界加強
image.save('idencode.png') #保存驗證碼圖片

E. 怎麼通過python獲取驗證碼圖片

p_url='驗證碼圖片地址'
pic = opener.open(p_url)
content = pic.read()
f = open('本地圖片地址','wb')
f.write(content)
f.close()

F. 怎麼通過python獲取驗證碼圖片

因為驗證碼圖片是禁止緩存的 ,當然無法用緩存函數獲取了。 解決方法有很多。可以用同樣的會話再次請求得到圖片。

G. 如何利用Python做簡單的驗證碼識別

最近在折騰驗證碼識別。最終的腳本的識別率在92%左右,9000張驗證碼大概能識別出八千三四百張左右。好吧,其實是驗證碼太簡單。下面就是要識別的驗證碼。

接下來對圖片進行分割。遍歷圖片中所有像素點,計算每一列像素為0的點的個數(jd)。對於相鄰兩列,若其中一列jd=0,而另一列jd!=0,則可以認為這一列是驗證碼中字元邊界,由此對驗證碼進行分割。這樣分割能達到比較好的效果,分割後得到的字元圖片幾乎能與模板完全相同。

(Width,Height) = img2.size
pix2 = img2.load()
x0 = []
y0 = []for x in range(1,Width):
jd = 0
# print x
for y in range(1,Height): # print y
if pix2[x,y] == 0:
jd+=1
y0.append(jd) if jd > 0:
x0.append(x)#分別對各個字元邊界進行判斷,這里只舉出一個 for a in range(1,Width): if (y0[a] != 0)&(y0[a+1] != 0):
sta1 = a+1

分割完成後,對於識別,目前有幾種方法。可以遍歷圖片的每一個像素點,獲取像素值,得到一個字元串,將該字元串與模板的字元串進行比較,計算漢明距離或者編輯距離(即兩個字元串的差異度),可用Python-Levenshtein庫來實現。

我採用的是比較特徵向量來進行識別的。首先設定了4個豎直特徵向量,分別計算第0、2、4、6列每一列像素值為0的點的個數,與模板進行比較,若小於閾值則認為該字元與模板相同。為了提高識別率,如果通過豎直特徵向量未能識別成功,引入水平特徵向量繼續識別,原理與豎直特徵向量相同。

另外,還可以通過局部特徵進行識別。這對於加入了旋轉干擾的驗證碼有很好效果。由於我寫的腳本識別率已經達到了要求,所以並沒有用到這個。

最後的結果是這樣的:

最終在模板庫只有25條的情況下,識別率在92%左右(總共測試了一萬六千張驗證碼)。好吧,只能說驗證碼太簡單。。

以上。

H. python如何識別驗證碼

我們首先識別最簡單的一種驗證碼,即圖形驗證碼。這種驗證碼最早出現,現在也很常見,一般由4位字母或者數字組成。例如,中國知網的注冊頁面有類似的驗證碼,頁面如下所示:

表單中最後一項就是圖形驗證碼,我們必須完全正確輸入圖中的字元才可以完成注冊。

更多有關驗證碼的知識,可以參考這些文章:

Python3爬蟲進階:識別圖形驗證碼

Python3爬蟲進階:識別極驗滑動驗證碼

Python3爬蟲進階:識別點觸點選驗證碼

Python3爬蟲進階:識別微博宮格驗證碼

·本節目標以知網的驗證碼為例,講解利用OCR技術識別圖形驗證碼的方法。

·准備工作識別圖形驗證碼需要庫tesserocr,以mac安裝為例:在mac下,我們首先使用Homebrew安裝ImageMagick和tesseract庫: brew install imagemagickbrew install tesseract 接下來再安裝tesserocr即可:pip3 install tesserocr pillow這樣我們就完成了 tesserocr的安裝。

·獲取驗證碼為了便於實驗,我們先將驗證碼的圖片保存到本地。打開開發者工具,找到驗證碼元素。驗證碼元素是一張圖片,它的ser屬 性是CheckCode.aspk。所以我們直接打開如下鏈接就可以看到一個驗證碼,右鍵保存即可,將其命名為code.jpg:

這樣我們就得到一張驗證碼圖片,以供測試識別使用。

相關推薦:《Python教程》

識別測試

接下來新建一個項目,將驗證碼圖片放到項目根目錄下,用tesserocr庫識別該驗證碼,代碼如下所示:

這里我們新建了一個Image對戲那個,調用了tesserocr的image_to_text( )方法。傳入該Image對象即可完成識別,實現過程非常簡單,結果如下:

我們可以看到,識別的結果和實際結果有偏差,這是因為驗證碼內的多餘線條干擾了圖片的識別。

另外,tesserocr還有一個更加簡單的方法,這個方法可以直接將圖片文件轉為字元串,代碼如下:

不過這種方法的識別效果不如上一種的好。

驗證碼處理

對於上面的圖片,我們可以看到其實並沒有完全識別正確,所以我們需要對圖像作進一步的處理,如灰度轉換、二值化等操作。

我們可以利用Image對象的convert( )方法參數傳入L,即可將圖片轉化為灰度圖像,代碼如下:

傳入1即可將圖片進行二值化處理,如下所示:

我們還可以指定二值化的閾值。上面的方法採用的是默認閾值127。不過我們不能直接轉化原圖,要將原圖先轉化為灰度圖像,然後再指定二值化閾值,代碼如下:

在這里,變數threshold代表二值化閾值,閾值設置為160,之後我們來看看我們的結果:

我們可以看到現在的二維碼就比較方便我們進行識別了;那麼對於一些有干擾的圖片,我們做一些灰度和二值化處理,這會提高圖片識別的正確率。

I. 如何利用Python做簡單的驗證碼識別

1摘要

驗證碼是目前互聯網上非常常見也是非常重要的一個事物,充當著很多系統的防火牆功能,但是隨時OCR技術的發展,驗證碼暴露出來的安全問題也越來越嚴峻。本文介紹了一套字元驗證碼識別的完整流程,對於驗證碼安全和OCR識別技術都有一定的借鑒意義。

然後經過了一年的時間,筆者又研究和get到了一種更強大的基於CNN卷積神經網路的直接端到端的驗證識別技術(文章不是我的,然後我把源碼整理了下,介紹和源碼在這裡面):

基於python語言的tensorflow的『端到端』的字元型驗證碼識別源碼整理(github源碼分享)

2關鍵詞

關鍵詞:安全,字元圖片,驗證碼識別,OCR,Python,SVM,PIL

3免責聲明

本文研究所用素材來自於某舊Web框架的網站完全對外公開的公共圖片資源。

本文只做了該網站對外公開的公共圖片資源進行了爬取,並未越權做任何多餘操作。

本文在書寫相關報告的時候已經隱去漏洞網站的身份信息。

本文作者已經通知網站相關人員此系統漏洞,並積極向新系統轉移。

本報告的主要目的也僅是用於OCR交流學習和引起大家對驗證安全的警覺。

4引言

關於驗證碼的非技術部分的介紹,可以參考以前寫的一篇科普類的文章:

互聯網安全防火牆(1)--網路驗證碼的科普

裡面對驗證碼的種類,使用場景,作用,主要的識別技術等等進行了講解,然而並沒有涉及到任何技術內容。本章內容則作為它的技術補充來給出相應的識別的解決方案,讓讀者對驗證碼的功能及安全性問題有更深刻的認識。

5基本工具

要達到本文的目的,只需要簡單的編程知識即可,因為現在的機器學習領域的蓬勃發展,已經有很多封裝好的開源解決方案來進行機器學習。普通程序員已經不需要了解復雜的數學原理,即可以實現對這些工具的應用了。

主要開發環境:

  • python3.5

  • python SDK版本

  • PIL

  • 圖片處理庫

  • libsvm

  • 開源的svm機器學習庫

  • 關於環境的安裝,不是本文的重點,故略去。

    6基本流程

    一般情況下,對於字元型驗證碼的識別流程如下:

  • 准備原始圖片素材

  • 圖片預處理

  • 圖片字元切割

  • 圖片尺寸歸一化

  • 圖片字元標記

  • 字元圖片特徵提取

  • 生成特徵和標記對應的訓練數據集

  • 訓練特徵標記數據生成識別模型

  • 使用識別模型預測新的未知圖片集

  • 達到根據「圖片」就能返回識別正確的字元集的目標

  • 7素材准備

    7.1素材選擇

    由於本文是以初級的學習研究目的為主,要求「有代表性,但又不會太難」,所以就直接在網上找個比較有代表性的簡單的字元型驗證碼(感覺像在找漏洞一樣)。

    最後在一個比較舊的網站(估計是幾十年前的網站框架)找到了這個驗證碼圖片。

    原始圖:

  • def get_feature(img): """

  • 獲取指定圖片的特徵值,

  • 1. 按照每排的像素點,高度為10,則有10個維度,然後為6列,總共16個維度

  • :param img_path:

  • :return:一個維度為10(高度)的列表 """


  • width, height = img.size


  • pixel_cnt_list = []

  • height = 10 for y in range(height):

  • pix_cnt_x = 0 for x in range(width): if img.getpixel((x, y)) == 0: # 黑色點

  • pix_cnt_x += 1


  • pixel_cnt_list.append(pix_cnt_x) for x in range(width):

  • pix_cnt_y = 0 for y in range(height): if img.getpixel((x, y)) == 0: # 黑色點

  • pix_cnt_y += 1


  • pixel_cnt_list.append(pix_cnt_y) return pixel_cnt_list

  • 然後就將圖片素材特徵化,按照libSVM指定的格式生成一組帶特徵值和標記值的向量文

熱點內容
手機版伺服器生存有什麼好玩的服務 發布:2025-07-14 01:49:45 瀏覽:210
銳龍3代編程 發布:2025-07-14 01:48:22 瀏覽:968
配置管理需要會什麼 發布:2025-07-14 01:35:35 瀏覽:373
去除頭條中的緩存 發布:2025-07-14 01:27:38 瀏覽:784
php開啟錯誤 發布:2025-07-14 01:16:49 瀏覽:999
esp資料庫 發布:2025-07-14 01:16:44 瀏覽:981
python查找文件路徑 發布:2025-07-14 01:16:03 瀏覽:515
phpapachetomcat 發布:2025-07-14 01:08:41 瀏覽:124
伺服器運維看什麼書 發布:2025-07-14 01:07:32 瀏覽:989
密碼器動態密碼怎麼弄 發布:2025-07-14 00:44:27 瀏覽:387