導航:首頁 > 編程語言 > python讀取驗證碼

python讀取驗證碼

發布時間:2023-12-23 15:30:31

『壹』 如何利用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%左右(總共測試了一萬六千張驗證碼)。好吧,只能說驗證碼太簡單。。

以上。

『貳』 Python開發文字點選驗證碼,有什麼推薦的方法

文字點選驗證碼(Click Captcha)是一種常見的驗證碼形式,納雹通常由若干個字元或單片語成,要求用戶點擊其中指定的字元或單詞,以驗證用戶身份。

在Python開發中實現文字點選驗證碼,一種常用的方法是使用圖像處理庫和機器學習庫,以下是一些常用的庫和方法:

『叄』 python 爬蟲,關於驗證碼的問題。輸入驗證碼才能搜索。

#給你個例子參考驗證碼請求一次就變了
#!/usr/bin/python
#coding=utf-8
importrequests
importurllib
importurllib2,hashlib,md5

importcookielib

def_md5(password):
md5=hashlib.md5()
md5.update(str.encode(password))
psw=md5.hexdigest()
returnpsw
url='https://passport.liepin.com/captcha/randomcode?2hy270c2ji1'
req=urllib2.Request(url)
res_data=urllib2.urlopen(req)
res=res_data.read()
output_file=open('1.jpg','wb')
output_file.writelines(res)
output_file.close()
verifycode=res_data.headers['Set-Cookie'].split(';')[0]
verifycode=verifycode.replace('verifycode=','')
filename=res_data.headers['Content-disposition'].split(';')[1].strip()
exec(filename)

cookiejar=cookielib.CookieJar()
opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cookiejar))
vidcode=raw_input(u"請輸入驗證碼(在本路徑1.jpg):")
data={'user_login':"[email protected]",
'isMd5':"1",
'user_pwd':_md5('love123456'),
'verifycode':vidcode,
'url':""}

url='https://passport.liepin.com/h/login.json'
data=urllib.urlencode(data)
headers={'Content-Type':'application/x-www-form-urlencoded','X-Requested-With':'XMLHttpRequest','Cookie':'verifycode={0};'.format(verifycode)}
request=urllib2.Request(url,data,headers)
response=opener.open(request)
print'-------result-------------'
printresponse.read()
print'-------headers-------------'
printresponse.headers
print'-------cookies-------------'
forcookieincookiejar:
printcookie

『肆』 python驗證碼識別模塊

只需要簡單幾步操作即可擁有兩大通用識別模塊,讓你在工作中暢通無阻。

測試圖片 test1.png

測試圖片 test2.jpg

以上參數兩者選其一即可,默認 model_type 為 ModelType.OCR, 若指定 conf_path 參數則優先使用自定義模型。

注意: 因模塊過新,阿里/清華等第三方源可能尚未更新鏡像,因此手動指定使用境外源,為了提高依賴的安裝速度,可預先自行安裝依賴:tensorflow/numpy/opencv-python/pillow/pyyaml

輸出結果:

OCR和驗證碼識別的速度基本都在10ms左右,低配CPU可能需要15-20ms。本模塊僅支持單行識別,如有多行識別需求請自行採用目標檢測預裁圖片。

『伍』 python tesserocr識別普通驗證碼成功後列印結果為空

和threshold=127這個有關系,變更這個數值就能看出來了,比如調成200

『陸』 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,之後我們來看看我們的結果:

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

『柒』 python 爬取帶驗證碼需要登陸後的網站

這個有點繁瑣,告訴你,你也可能搞不定
首先請求網頁,然後用你的未登錄cookies去二次請求驗證碼,用byte類型保存在內存中,用pillow模塊展示出來,你在手動輸入,主程序這邊用input阻塞,等你輸入完,主程序向登錄介面提交賬號密碼和驗證碼,然後後面就正常爬取,這是非selenium的模擬登錄,這邊糾正一點,凡是登錄,不管你用什麼模塊,都屬於模擬登錄,並非selenium登錄方式才叫模擬登錄,

『捌』 如何利用Python 做驗證碼識別

#!/usr/bin/python3.4
#-*-coding:utf-8-*-

#1、pip3installpyocr
#2、pip3installpilloworeasy_installPillow
#3、安裝tesseract-ocr:http://jaist.dl.sourceforge.net/project/tesseract-ocr-alt/tesseract-ocr-setup-3.02.02.exe,安裝在C:ProgramFiles下
#4、要求python默認安裝在C盤
#http://www.cnblogs.com/TTyb/p/5996847.html
#代碼:
#!/usr/bin/python3.4
#-*-coding:utf-8-*-

importpytesseract
fromPILimportImage

image=Image.open('../jpg/code.png')
code=pytesseract.image_to_string(image)
print(code)

閱讀全文

與python讀取驗證碼相關的資料

熱點內容
程序中的編譯執行 瀏覽:30
plc控制與單片機控制 瀏覽:884
如何讓安卓手機操控電腦 瀏覽:187
電腦電銷加密電話號碼破解 瀏覽:505
世界史綱pdf 瀏覽:133
湖北社保年審app叫什麼名字 瀏覽:852
邁達克雲伺服器 瀏覽:597
mfc深入淺出從mfc設計到mfc編程 瀏覽:81
螢石雲伺服器連接設置 瀏覽:325
中國名著pdf 瀏覽:592
華為伺服器設備序列號怎麼看 瀏覽:319
跑永輝生活配送用什麼app 瀏覽:149
ug識別符號命令在哪裡 瀏覽:719
pdf文件改文字 瀏覽:734
查詢qq號劍靈伺服器地址 瀏覽:553
國家反詐中心app為什麼要刷臉 瀏覽:304
iphone怎麼修改dns伺服器地址 瀏覽:87
bandizip解壓位置 瀏覽:170
伺服器的防火牆如何訪問 瀏覽:307
javagoto關鍵字 瀏覽:848