驗證碼是一種反爬蟲的措施锨用,目前的驗證碼主要有圖像驗證碼、極驗滑動驗證碼泽裳、點觸驗證碼瞒斩、微博宮格驗證碼等。根據(jù)不同類型的驗證碼涮总,有以下識別的方法胸囱。
圖像驗證碼
利用OCR字符識別技術(shù)來實現(xiàn),需要安裝tesserocr庫進行識別瀑梗。因為驗證碼圖片的背景有些多余的線條烹笔、顏色會干擾識別效果,因此可以在識別前對圖片進行二值化處理或灰度處理
極驗滑動驗證碼
它通過拖動滑塊來拼合圖像進而實現(xiàn)驗證抛丽。識別的主要思路:利用selenium來模擬點擊驗證按鈕谤职,獲取包含缺口的圖片,將原圖與其對比亿鲜,識別出缺口位置允蜈,模擬拖動。模擬拖動時需要注意狡门,不能勻速陷寝,因為人無法做到勻速拖動,因此會導致識別識別其馏。比較好的辦法就是凤跑,模擬加速和減速運動來進行拖動。前段先加速后段在減速叛复。
點觸驗證碼的識別
這種驗證碼主要有兩種仔引,一種是點擊圖中所以符合要求的圖片扔仓,二是按照順序點擊指定的文字。對于這種驗證碼咖耘,可以利用第三方平臺來實現(xiàn)識別翘簇,比如超級鷹。具體思路將驗證碼的圖片傳入到第三方平臺上儿倒,然后根據(jù)第三方平臺范圍的坐標位置版保,進行依次點擊。
微博宮格驗證碼的識別
這種驗證碼的宮格之間會有一條指示連線夫否,指示了用戶需要滑動的軌跡彻犁。如果要識別這種驗證碼,就需要識別箭頭的指示方向凰慈,因此需要首先找到所有箭頭的位置汞幢,然后計算像素點的變化規(guī)律。這個方法比較麻煩微谓。對于這種驗證碼可以采用另一種思路:模板匹配森篷,即首先將所有可能出現(xiàn)的驗證碼圖片收集下來,這樣每個圖片的滑動順序已知豺型,構(gòu)成一個模板庫仲智。在每一次識別時,將原圖與模板庫中的圖片進行匹配即可触创。