導航:首頁 > 編程語言 > python數字字母混合驗證識別碼

python數字字母混合驗證識別碼

發布時間:2022-04-14 01:26:57

python如何判斷字元串同時含有數字和字母

⑵ python怎樣識別驗證碼

1. 如果重點在演算法,我覺得OCR不見得能識別好驗證碼,比較那玩意設計的就是用來防止機器識別的。
2. 如果只是想為了OCR而OCR:Linux和Mac的核心是一樣的,應該可以通用。請貼出更多的技術細節:比如是否已經驗證在Linux上好使,而同樣的代碼在Mac上遇到何種問題。

⑶ 如何用Python+人工識別處理知乎的倒立漢字驗證碼

#登錄知乎,通過保存驗證圖片方式
importurllib.request
importurllib.parse
importtime
importhttp.cookiejar

webUrl="https://www.hu.com/login/email"#不能寫https://www.hu.com/#signin因為不支持重定向

webheader={
#'Accept':'text/html,application/xhtml+xml,*/*',
#'Accept-Language':'zh-CN',
#'User-Agent':'Mozilla/5.0(WindowsNT6.1;WOW64;Trident/7.0;rv:11.0)likeGecko',
'User-Agent':'Mozilla/5.0(Linux;Android6.0;Nexus5Build/MRA58N)AppleWebKit/537.36(KHTML,likeGecko)Chrome/56.0.2924.87MobileSafari/537.36',
#'User-Agent':'Mozilla/5.0(iPod;U;CPUiPhoneOS4_3_3likeMacOSX;en-us)AppleWebKit/533.17.9(KHTML,likeGecko)Version/5.0.2Mobile/8J2Safari/6533.18.5',
#'DNT':'1',
#'Connection':'Keep-Alive'
}

postData={
'email':'在這里寫你的賬號',
'captcha_type':'cn',
'password':'在這里寫你的密碼',
'_xsrf':'',
'captcha':''
}
localStorePath="寫你想保存的驗證碼圖片的地址"

if__name__=='__main__':
#聲明一個CookieJar對象實例來保存cookie
cookie=http.cookiejar.CookieJar()
#創建opener
handler=urllib.request.HTTPCookieProcessor(cookie)
opener=urllib.request.build_opener(handler)#建立opener對象,並添加頭信息
urllib.request.install_opener(opener)

captcha_url='https://www.hu.com/captcha.gif?r=%d&type=login&lang=cn'%(time.time()*1000)
#captcha_url='http://www.hu.com/captcha.gif?r=%d&type=login'%(time.time()*1000)#這樣獲得的是「字母+數字驗證碼」

#這個獲取驗證碼圖片的方法是不行的!
#urllib.request.urlretrieve(captcha_url,localStorePath+'myCaptcha.gif')

#用urlopen函數保存驗證圖片
req=urllib.request.Request(url=captcha_url,headers=webheader)
content=urllib.request.urlopen(req)
#content=opener.open(req)
captcha_name='D:/Python學習/crawler_learning/知乎登錄專題研究/知乎驗證碼圖片/myNewCaptcha.gif'
content=content.read()
withopen(captcha_name,'wb')asf:
f.write(content)

postData['captcha']=input('請輸入驗證碼')
#postData['_xsrf']=get_xsrf()
postData['_xsrf']=''
print(postData['_xsrf'])

#用urlopen函數傳送數據給伺服器實現登錄
postData_encoded=urllib.parse.urlencode(postData).encode('utf-8')
req=urllib.request.Request(url=webUrl,data=postData_encoded,headers=webheader)
webPage=urllib.request.urlopen(req)
#webPage=opener.open(req)
data=webPage.read().decode('utf-8')

print(data)
withopen("D:/知乎伺服器反饋的內容.txt",mode='w',encoding='utf-8')asdataFile:
dataFile.write(data)

⑷ 如何python爬蟲識別驗證碼

  1. 在用爬蟲爬取網站數據時,有些站點的一些關鍵數據的獲取需要使用賬號登錄,這里可以使用requests發送登錄請求,並用Session對象來自動處理相關Cookie。

  2. 另外在登錄時,有些網站有時會要求輸入驗證碼,比較簡單的驗證碼可以直接用pytesser來識別,復雜的驗證碼可以依據相應的特徵自己採集數據訓練分類器。

  3. 以CSDN網站的登錄為例,這里用Python的requests庫與pytesser庫寫了一個登錄函數。如果需要輸入驗證碼,函數會首先下載驗證碼到本地,然後用pytesser識別驗證碼後登錄,對於CSDN登錄驗證碼,pytesser的識別率很高。

⑸ 如何使用python識別驗證碼

第一種,將驗證碼保存本地,然後手動輸入。
第二種,外包給驗證碼識別公司
第三種,學習演算法識別

⑹ 如何利用Python 做驗證碼識別

用python加「驗證碼」為關鍵詞在里搜一下,可以找到很多關於驗證碼識別的文章。我大體看了一下,主要方法有幾類:一類是通過對圖片進行處理,然後利用字型檔特徵匹配的方法,一類是圖片處理後建立字元對應字典,還有一類是直接利用ocr模塊進行識別。不管是用什麼方法,都需要首先對圖片進行處理,於是試著對下面的驗證碼進行分析。
一、圖片處理
這個驗證碼中主要的影響因素是中間的曲線,首先考慮去掉圖片中的曲線。考慮了兩種演算法:
第一種是首先取到曲線頭的位置,即x=0時,黑點的位置。然後向後移動x的取值,觀察每個x下黑點的位置,判斷前後兩個相鄰黑點之間的距離,如果距離在一定范圍內,可以基本判斷該點是曲線上的點,最後將曲線上的點全部繪成白色。試了一下這種方法,結果得到的圖片效果很一般,曲線不能完全去除,而且容量將字元的線條去除。
第二種考慮用單位面積內點的密度來進行計算。於是首先計算單位面積內點的個數,將單位面積內點個數少於某一指定數的面積去除,剩餘的部分基本上就是驗證碼字元的部分。本例中,為了便於操作,取了5*5做為單位范圍,並調整單位面積內點的標准密度為11。處理後的效果:
二、字元驗證
這里我使用的方法是利用pytesser進行ocr識別,但由於這類驗證碼字元的不規則性,使得驗證結果的准確性並不是很高。具體哪位大牛,有什麼好的辦法,希望能給指點一下。
三、准備工作與代碼實例
1、PIL、pytesser、tesseract
(1)安裝PIL:下載地址:http:// www. pythonware. com/procts/pil/(2)pytesser:下載地址:http :/ /code. google. com/p/pytesser/,下載解壓後直接放在代碼相同的文件夾下,即可使用。
(3)Tesseract OCR engine下載:http: / / code.google. com/p/tesseract-ocr/,下載後解壓,找到tessdata文件夾,用其替換掉pytesser解壓後的tessdata文件夾即可。
2、具體代碼
復制代碼
#encoding=utf-8
###利用點的密度計算
import Image,ImageEnhance,ImageFilter,ImageDrawimport sys
from pytesser import *
#計算范圍內點的個數
def numpoint(im):
w,h = im.size
data = list( im.getdata() )
mumpoint=0
for x in range(w):
for y in range(h):
if data[ y*w + x ] !=255:#255是白色
mumpoint+=1
return mumpoint
#計算5*5范圍內點的密度
def pointmi(im):
w,h = im.size
p=[]
for y in range(0,h,5):
for x in range(0,w,5):
box = (x,y, x+5,y+5)
im1=im.crop(box)
a=numpoint(im1)
if a<11:##如果5*5范圍內小於11個點,那麼將該部分全部換為白色。
for i in range(x,x+5):
for j in range(y,y+5):
im.putpixel((i,j), 255)
im.save(r'img.jpg')
def ocrend():##識別
image_name = "img.jpg"
im = Image.open(image_name)
im = im.filter(ImageFilter.MedianFilter())enhancer = ImageEnhance.Contrast(im)
im = enhancer.enhance(2)
im = im.convert('1')
im.save("1.tif")
print image_file_to_string('1.tif')
if __name__=='__main__':
image_name = "1.png"
im = Image.open(image_name)
im = im.filter(ImageFilter.DETAIL)
im = im.filter(ImageFilter.MedianFilter())enhancer = ImageEnhance.Contrast(im)
im = enhancer.enhance(2)
im = im.convert('1')
##a=remove_point(im)
pointmi(im)
ocrend()

⑺ python怎麼提高驗證碼數字加字母識別率

在我的經驗里. 我想應該是繞不過驗證碼的, 不僅 python 不行,任何語言也不行. 因為驗證碼是你登錄時一起綁定的登錄信息. 沒有驗證碼就是不完善的登錄信息

⑻ 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驗證碼識別

orc文字識別,現在比較流行的是通過人工智慧訓練CNN神經網路來識別。

大體流程

  1. 准備訓練數據。訓練數據可以自己寫個程序生成驗證碼,和標准答案。

  2. 構建CNN模型。這個比較簡單,使用keras框架,5分鍾的事情。

  3. 訓練。不停地把數據feed給程序,直到准確率達到你的期望,推薦使用GPU加速

  4. 預測。載入模型,把驗證碼圖片feed給模型,得出結果

希望對你有幫助。

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

1摘要

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

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

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

2關鍵詞

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

3免責聲明

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

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

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

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

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

4引言

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

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

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

5基本工具

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

主要開發環境:

閱讀全文

與python數字字母混合驗證識別碼相關的資料

熱點內容
java定義數據類型 瀏覽:874
安卓pdf手寫 瀏覽:427
什麼是app開發者 瀏覽:284
android鬧鍾重啟 瀏覽:101
程序員失職 瀏覽:518
在雲伺服器怎麼改密碼 瀏覽:586
伺服器pb什麼意思 瀏覽:940
51駕駛員的是什麼app 瀏覽:670
php靜態變數銷毀 瀏覽:886
編程買蘋果電腦 瀏覽:760
flac演算法 瀏覽:497
reactnative與android 瀏覽:663
程序員是干什麼的工作好嗎 瀏覽:258
kbuild編譯ko 瀏覽:469
條件編譯的宏 瀏覽:564
韓語編程語言 瀏覽:646
小程序開發如何租用伺服器 瀏覽:80
怎麼把釘釘文件夾保存到手機里 瀏覽:71
兵法pdf 瀏覽:645
app格式化下載不起怎麼辦 瀏覽:36