驗證碼是一種反爬蟲的措施,目前的驗證碼主要有圖像驗證碼、極驗滑動驗證碼、點觸驗證碼、微博宮格驗證碼等。根據(jù)不同類型的驗證碼,有以下識別的方法。
圖像驗證碼
利用OCR字符識別技術(shù)來實現(xiàn),需要安裝tesserocr庫進行識別。因為驗證碼圖片的背景有些多余的線條、顏色會干擾識別效果,因此可以在識別前對圖片進行二值化處理或灰度處理
極驗滑動驗證碼
它通過拖動滑塊來拼合圖像進而實現(xiàn)驗證。識別的主要思路:利用selenium來模擬點擊驗證按鈕,獲取包含缺口的圖片,將原圖與其對比,識別出缺口位置,模擬拖動。模擬拖動時需要注意,不能勻速,因為人無法做到勻速拖動,因此會導(dǎo)致識別識別。比較好的辦法就是,模擬加速和減速運動來進行拖動。前段先加速后段在減速。
點觸驗證碼的識別
這種驗證碼主要有兩種,一種是點擊圖中所以符合要求的圖片,二是按照順序點擊指定的文字。對于這種驗證碼,可以利用第三方平臺來實現(xiàn)識別,比如超級鷹。具體思路將驗證碼的圖片傳入到第三方平臺上,然后根據(jù)第三方平臺范圍的坐標位置,進行依次點擊。
微博宮格驗證碼的識別
這種驗證碼的宮格之間會有一條指示連線,指示了用戶需要滑動的軌跡。如果要識別這種驗證碼,就需要識別箭頭的指示方向,因此需要首先找到所有箭頭的位置,然后計算像素點的變化規(guī)律。這個方法比較麻煩。對于這種驗證碼可以采用另一種思路:模板匹配,即首先將所有可能出現(xiàn)的驗證碼圖片收集下來,這樣每個圖片的滑動順序已知,構(gòu)成一個模板庫。在每一次識別時,將原圖與模板庫中的圖片進行匹配即可。