1、輸入式驗證碼
#這種驗證碼主要是透過用戶輸入圖片中的字母、數字、漢字等進行驗證。如下圖
#解決想法:這種是最簡單的一種,只要辨識出裡面的內容,然後填入輸入框即可。這種辨識技術叫做OCR,這裡我們推薦使用Python的第三方函式庫,tesserocr。對於沒有什麼背影影響的驗證碼如圖2,直接透過這個庫來辨識就可以。但對於有吵雜的背景的驗證碼這種,直接辨識辨識率會很低,遇到這種我們就得需要先處理一下圖片,先對圖片進行灰度化,然後再進行二值化,再去識別,這樣識別率會大大提高。
2.滑動式驗證碼
解決想法:對於這種驗證碼就比較複雜一點,但也是有對應的辦法。我們直接想到的就是模擬人去拖曳驗證碼的行為,點擊按鈕,然後看到了缺口的位置,最後把拼圖拖曳到缺口位置處完成驗證。
第二步:拖曳到缺口位置。我們知道拼圖應該拖到缺口處,但是這個距離如果用數值來表示?透過我們第一步觀察到的現象,我們可以找到缺口的位置。這裡我們可以比較兩張圖的像素,設定一個基準值,如果某個位置的差值超過了基準值,那我們就找到了這兩張圖片不一樣的位置,當然我們是從那塊拼圖的右側開始並且從左到右,找到第一個不一樣的位置時就結束,這是的位置應該是缺口的left,所以我們使用selenium拖到這個位置即可。這裡還有個疑問就是如何能自動的儲存這兩張圖?這裡我們可以先找到這個標籤,然後取得它的location和size,然後top,bottom,left,right = location['y'] ,location['y'] size['height'] location['x'] size['width'] ,然後截圖,最後摳圖填入這四個位置就行。具體的使用可以查看selenium文檔,點選按鈕前摳張圖,點擊後再摳張圖。最後拖曳的時候要需要模擬人的行為,先加速然後減速。因為這種驗證碼有行為特徵檢測,人是不可能做到一直勻速的,否則它就判定為是機器在拖動,這樣就無法通過驗證了。
相關學習推薦:python教學
以上是python爬蟲怎麼識別的詳細內容。更多資訊請關注PHP中文網其他相關文章!