Python3網絡爬蟲課程 8.1圖形驗證碼的識別

2020-12-04 機器人在追你

目前,很多網站都採取了各種各樣的反爬措施,其中之一便是使用驗證碼.隨著技術的發展,驗證碼卻來越複雜,花樣越來越多,爬蟲的工作也變得愈加複雜,本節將介紹圖形驗證碼的識別.

圖形驗證碼

我們首先將識別最簡單的驗證碼,圖形驗證碼.

目標

我們將以知網為例講解使用 OCR 技術識別圖形驗證碼.

準備

需要安裝 tesseract 和 tesserocr 庫,請看第一節和第二節內容.

獲取驗證碼

我們將從這裡獲取驗證碼:

然後點擊右鍵,將驗證碼圖片保存下來.

測試

我們新建一個文件 rec_simple_vcode.py 文件,然後將上面保存的圖片和此文件放在同一個路徑下:

我們創建了一個 Image 對象,調用了 tesserocr 庫的 image_to_text()方法,傳入該 image 即可識別.

另外 tesserocr 還可以使用 file_to_text()方法直接將圖片轉換為字符串.

處理

我們換一個驗證碼,將其命名為 code2.png.

重新用下面的代碼識別:

發現其輸出結果為:

識別錯誤,識別出來的字符串和實際結果有偏差,這是因為驗證碼內多餘的線條幹擾了圖片的識別.對於這種情況,我們需要進行額外的處理,比如灰度化、二值化等。我們可以使用 Image.convert('L)將圖片灰度化。

二值化:

還可以設置二值化的閾值.默認閾值為 127,我們先將圖片灰度化,然後指定閾值二值化.

看看這麼處理後的結果:

我們處理過後的圖片黑白分明,裡面幹擾的線條已經全部被除去,這是重新識別驗證碼:

識別結果如下:

相關焦點

  • Python3網絡爬蟲課程 8.2極驗滑動驗證碼的識別
    上一節了解了簡單驗證碼的識別,但是現在這種驗證碼非常少見,現在出現了一大批新型的驗證碼,如極驗滑動驗證碼,它需要拖動合併滑塊才能完成識別。目標本節目標是識別極驗滑動驗證碼,如分析思路、識別缺口、生成拖動路徑、模擬合併等。
  • Python3爬蟲-10:Tesseract 圖像識別
    「人生苦短,快用Python」在爬蟲過程中,經常會遇到各種驗證碼
  • Python驗證碼識別:利用pytesser識別簡單圖形驗證碼
    (點擊上方公眾號,可快速關注)來源:  j_hao104my.oschina.net/jhao104/blog/647326一、探討識別圖形驗證碼可以說是做爬蟲的必修課圖形通常由點、線、面、體等幾何元素和灰度、色彩、線型、線寬等非幾何屬性組成。計算機涉及到的幾何圖形處理一般有 2維到n維圖形處理,邊界區分,面積計算,體積計算,扭曲變形校正。對於顏色則有色彩空間的計算與轉換,圖形上色,陰影,色差處理等等。在破解驗證碼中需要用到的知識一般是 像素,線,面等基本2維圖形元素的處理和色差分析。
  • 用python識別驗證碼
    前言經常大家在做自動化測試或者做網絡爬蟲的時候,都很容易遇到驗證碼。今天,我們就簡單的說下,怎麼用python來處理驗證碼。
  • 圖形驗證碼難防黃牛 今年網購車票超8成無驗證碼
    圖形驗證碼難防黃牛 今年網購車票超8成無驗證碼 原標題: 中國鐵路總公司表示,今年春運網絡購票需要驗證碼的比例將被壓縮到15%以下。昨天,老牌搶票軟體360瀏覽器表示通過大數據分析,今年春運搶票初期,12306的圖形驗證碼並沒有比去年增加難度,他們發現圖形驗證碼已經不是鐵路防止黃牛倒票的主要技術手段,鐵路正在通過更加嚴格的實名認證等其他方式來防黃牛,提高了用戶的購票體驗。
  • mac使用python識別圖形驗證碼!
    前言首先這篇文章,主要是研究圖形驗證碼,後期會不定時拓展內容。
  • 使用Python和Tesseract來識別圖形驗證碼
    *本文原創作者:ipenox,本文屬FreeBuf原創獎勵計劃,未經許可禁止轉載各位在企業中做Web漏洞掃描或者滲透測試的朋友,可能會經常遇到需要對圖形驗證碼進行程序識別的需求。一、關於圖形驗證碼識別與tesseractOCR儘管多數圖型驗證碼只有區區幾個數字或字母,但你可能聽說了,在進行機器識別的過程中,你要收集樣本,對圖片去噪、二值化、提取字符、計算特徵,甚至還要祭出神經網絡去訓練數據進行機器學習……還沒開幹,退堂鼓早打響三遍了。
  • Python視頻教程網課編程零基礎入門數據分析網絡爬蟲全套Python...
    總目錄 零基礎全能篇(4套課程) 實用編程技巧進價(1套課程) 數據分析與挖掘(8套課程) 辦公自動化(3套課程) 機器學習與人工智慧(7套課程) 開發實戰篇(4套課程) 量化投資(2套課程) 網絡爬蟲(6套課程) 資料庫操作(1套課程) python
  • 12306將剔除辨識率低圖形驗證碼
    12306驗證碼變遷  簡單數字數字加字母加減法算式閃爍變形字母(動態碼)中間添加幹擾線的變形字母圖形驗證碼  目前正值春運購票高峰,網絡上流傳一些調侃鐵路購票網站12306圖形驗證碼的帖子,稱圖形驗證碼難辨識、一些物品名稱沒有聽說過等。
  • 學習爬蟲思路分析
    前段時間可能大家被各大新聞爆出眾多爬蟲工程師程序猿被抓,且不知道犯了什麼罪;大家心中產生了疑問,那學爬蟲的意義到底為何呢,給大家插入一個連結是中華人民共和國國家網際網路信息辦公司的針對網絡爬蟲的法律規制(http://www.cac.gov.cn/2019-06/16/c_1124630015.htm)詳細閱讀,爬蟲並不違法,看你將他用在何處。
  • 用Python識別圖形驗證碼,實現自動登陸!
    驗證碼有圖形驗證碼、極驗滑動驗證碼、點觸驗證碼、宮格驗證碼。這回重點講講圖形驗證碼的識別。雖說圖形驗證碼最簡單,但是對於我這等新手,還是要苦學一番。首先尋找測試網站,網站選的是如雲閣小說網,小網站不怕被封。他
  • 最全的 Python 反爬蟲及應對方案!
    Spider Trap蜘蛛陷阱導致網絡爬蟲進入無限循環之類的東西,這會浪費蜘蛛的資源,降低其生產力,並且在編寫得不好的爬蟲的情況下,可能導致程序崩潰。禮貌蜘蛛在不同主機之間交替請求,並且不會每隔幾秒鐘從同一伺服器請求多次文檔,這意味著「禮貌」網絡爬蟲比「不禮貌」爬蟲的影響程度要小得多。
  • 12306圖形驗證碼讓人"吐槽" 驗證碼到底有什麼用
    在年底的網絡購票高峰中,中國鐵路客戶服務中心的12306圖形驗證碼系統被很多購票者「吐槽」。人們不禁要問,複雜的驗證碼系統,到底有什麼用?其實,驗證碼存在的最大意義,就是區分在頁面上進行輸入操作的是人還是自動化的軟體。
  • 人工智慧+Python:爬蟲開發必學的8個技巧
    現在,有越來越多所謂的「教程」來幫助我們提高爬蟲的易用性。本人收集了一些在爬蟲開發中容易出錯和被難住的小問題,提供了參考的意見和想法,以便於幫助爬蟲開發者。1、爬蟲亂碼(網址亂碼、返回頁面亂碼、提交數據亂碼)關於爬蟲亂碼有很多群友的各式各樣的問題,不僅是中文亂碼,還包括一些如日文、韓文 、俄文、藏文之類的亂碼處理,因此 確定源網頁的編碼。2、含有驗證碼錶單登陸屬於post請求,即先向伺服器發送表單數據,需要驗證碼的情況可以使用帶驗證碼登陸的cookie解決。
  • 要選對12306購票圖形驗證碼 比高考還難
    近日就有不少網友吐槽,這些五花八門的火車票圖形驗證碼讓人大傷腦筋:圖片小且像素低,讓人很難看清楚。原來,為了防止搶票軟體的幹擾,今年3月16日,12306網站進行了再次升級,用戶登錄帳號,需要從8幅彩圖中選出符合要求的圖片。而本周已進入節前搶票高峰期,要想成功「秒殺」到一張春運火車票,靠的不僅是網速,還有眼力,成功率比高考還低。
  • 網站反爬蟲常見方法
    網站為了正常運營,通常會設置各種反爬機制,讓爬蟲知難而退。今天神龍代理IP就給大家盤點一下網站常見的反爬蟲機制。網站反爬蟲常見方法1.通過UA判定UA即User Agent,它是請求瀏覽器的身份標誌。反爬蟲機制通過判定訪問請求的頭部中沒有帶UA來識別爬蟲,這種判定方法很低級,通常不會將其作為唯一的判定標準,因為反反爬蟲非常容易,隨機數UA即可針對。2.通過Cookie判定Cookie就是指會員制的帳號密碼登錄驗證,通過分辨這一個帳號在短期內內爬取頻次來判定。這種方法的反反爬蟲也很費勁,需選用多帳戶的方法來爬取。
  • Python爬蟲和反爬蟲的鬥爭
    在抓取對方網站、APP 應用的相關數據時,經常會遇到一系列的方法阻止爬蟲。網站APP們這麼做的原因,一是為了保證服務的質量,降低伺服器負載,二是為了保護數據不被獲取。爬蟲與反爬蟲的鬥爭經久不衰,這裡神龍IP給大家分享一些常見的反爬蟲手段。
  • 12306網站驗證碼遭拍磚 「驗證碼」本意是安全不是麻煩
    ——新聞緣起——  12306購票驗證碼遭吐槽  「請點擊下圖中所有的瑪瑙」「請點擊下圖中所有的博斯普魯斯海峽」「請點擊下圖中所有的蜥蜴」……這些都是人們在12306網站購票時遭遇的驗證碼問題。  由於設置了圖形驗證碼,用戶需要根據提示,從8張圖片中找到提示中提到的相關物品,看不清或者沒把握的可以刷新更換。
  • 「Python爬蟲與文本實例技術與應用」培訓班通知
    各科研院所單位:    隨著網際網路的發展,網絡信息呈現指數式增長,要在短時間內獲取大量信息,網絡爬蟲無疑是一種最適合的方法。
  • 12306驗證碼已不再安全 機器準確率99.8%
    這些結果不是來自什麼頂尖的實驗室,而是來自某大學的碩士生課程作業。對於Complex Image這種相對複雜的驗證碼,機器識別的準確率高達98%-99.8%。在人機對比實驗裡,人大概10個裡面要錯3個,機器10個裡面只錯了1個,基本上是機器完敗人類。網際網路上的很多平臺目前還嚴重依賴這類驗證碼,以為能夠防止刷單、刷票等等,但是事實上並不安全。