Python3網絡爬蟲課程 8.2極驗滑動驗證碼的識別

2021-01-21 機器人在追你

上一節了解了簡單驗證碼的識別,但是現在這種驗證碼非常少見,現在出現了一大批新型的驗證碼,如極驗滑動驗證碼,它需要拖動合併滑塊才能完成識別。

目標

本節目標是識別極驗滑動驗證碼,如分析思路、識別缺口、生成拖動路徑、模擬合併等。

準備

需要安裝 Python 的 selenium 庫,需要安裝 Chrome 瀏覽器並配置好驅動 ChromeDriver。請參考第一節第二節的內容。

識別

我們使用瀏覽器模擬的方式來識別驗證碼,然後我們拖動滑塊,使滑塊和圖片缺口對齊,則通過驗證。

思路

歸納一下,識別大概分為三步:

模擬點擊驗證按鈕識別圖片缺口位置拖動滑塊 第一步操作很簡單,我們可以直接使用 selenium 模擬點擊。 第二步識別缺口的位置很關鍵,需要使用到圖像處理相關的方法。我們觀察圖片,缺口的四周有明顯的斷裂痕跡,邊緣和邊緣周圍有明顯的區別。可以實現一個邊緣檢測算法來尋找缺口的位置,對於極驗滑動驗證碼來說,可以利用和原圖對比的方式來識別缺口的位置,點擊驗證按鈕,未拖動滑塊時圖片是完成的,當拖動圖片時才會顯示缺口,我們可以獲取這兩張圖片,設定一個閾值,遍歷圖片,找出兩張圖片相同位置像素 RGB 差距超過此閾值的像素點,那麼這個像素點就是缺口的位置。第三步操作看似簡單,但實際坑很多。極驗滑動驗證碼增加了機器軌跡識別、勻速移動、隨機速度移動等方式,這些方式都不能通過驗證,只有完全模擬人的移動軌跡才可以通過識別。人的移動軌跡一般時先加速後減速,我們要模擬這個過程。

初始化

這裡首先做一些初始化的配置。

模擬點擊

實現第一步操作,即模擬點擊,我們定義一個方法來獲取這個按鈕。

隨後我們調用 click()方法點擊這個按鈕即可。

識別缺口

獲取不帶缺口圖片

我們先獲取不帶缺口的位置,利用 selenium 獲取圖片元素,得到其所在位置、寬高等,然後獲取網頁的截圖,裁剪圖片。

獲取網頁截圖

獲取驗證碼圖片的位置

獲取帶缺口的圖片

首先獲取滑塊

利用 get_slider()方法獲取到滑塊對象,然後點擊 clikc()方法,缺口圖片即可呈現。

調用 get_geetest_image()方法獲取帶缺口圖片

獲取缺口

我們遍歷兩張圖片的每個坐標點,獲取到兩張圖片對應像素點的 RGB 數值。如果二者的 RGB 數值差在一定範圍內,那就代表兩個像素相同,繼續對比下一個像素,如果差距超過一定範圍,則當前位置即為缺口位置。is_pixel_equal()方法用於判斷兩張圖片同一位置的像素是否相同,get_gap()方法用於獲取缺口位置。

模擬拖動

模擬拖動過程不複雜,但坑很多,勻速移動極驗滑動會識別出他是程序的操作,因為人是無法做到勻速移動的,極驗滑動使用機器學習模型來識別是否為機器操作。 我們嘗試模擬加速減速過程來進行驗證,前段滑塊做勻加速運動,後段做勻減速運動。我們嘗試定義 get_track()方法,傳入移動總距離,返回移動軌跡

最後,我們按照移動軌跡來拖動滑塊。

相關焦點

  • Python3網絡爬蟲課程 8.1圖形驗證碼的識別
    目前,很多網站都採取了各種各樣的反爬措施,其中之一便是使用驗證碼.隨著技術的發展,驗證碼卻來越複雜,花樣越來越多,爬蟲的工作也變得愈加複雜,本節將介紹圖形驗證碼的識別.圖形驗證碼我們首先將識別最簡單的驗證碼,圖形驗證碼.目標我們將以知網為例講解使用 OCR 技術識別圖形驗證碼.
  • Python3爬蟲-10:Tesseract 圖像識別
    「人生苦短,快用Python」在爬蟲過程中,經常會遇到各種驗證碼
  • 最全的 Python 反爬蟲及應對方案!
    Spider Trap蜘蛛陷阱導致網絡爬蟲進入無限循環之類的東西,這會浪費蜘蛛的資源,降低其生產力,並且在編寫得不好的爬蟲的情況下,可能導致程序崩潰。禮貌蜘蛛在不同主機之間交替請求,並且不會每隔幾秒鐘從同一伺服器請求多次文檔,這意味著「禮貌」網絡爬蟲比「不禮貌」爬蟲的影響程度要小得多。
  • Python視頻教程網課編程零基礎入門數據分析網絡爬蟲全套Python...
    總目錄 零基礎全能篇(4套課程) 實用編程技巧進價(1套課程) 數據分析與挖掘(8套課程) 辦公自動化(3套課程) 機器學習與人工智慧(7套課程) 開發實戰篇(4套課程) 量化投資(2套課程) 網絡爬蟲(6套課程) 資料庫操作(1套課程) python
  • 學習爬蟲思路分析
    前段時間可能大家被各大新聞爆出眾多爬蟲工程師程序猿被抓,且不知道犯了什麼罪;大家心中產生了疑問,那學爬蟲的意義到底為何呢,給大家插入一個連結是中華人民共和國國家網際網路信息辦公司的針對網絡爬蟲的法律規制(http://www.cac.gov.cn/2019-06/16/c_1124630015.htm)詳細閱讀,爬蟲並不違法,看你將他用在何處。
  • Python驗證碼識別:利用pytesser識別簡單圖形驗證碼
    (點擊上方公眾號,可快速關注)來源:  j_hao104my.oschina.net/jhao104/blog/647326一、探討識別圖形驗證碼可以說是做爬蟲的必修課計算機涉及到的幾何圖形處理一般有 2維到n維圖形處理,邊界區分,面積計算,體積計算,扭曲變形校正。對於顏色則有色彩空間的計算與轉換,圖形上色,陰影,色差處理等等。在破解驗證碼中需要用到的知識一般是 像素,線,面等基本2維圖形元素的處理和色差分析。
  • 用python識別驗證碼
    前言經常大家在做自動化測試或者做網絡爬蟲的時候,都很容易遇到驗證碼。今天,我們就簡單的說下,怎麼用python來處理驗證碼。
  • 人工智慧+Python:爬蟲開發必學的8個技巧
    現在,有越來越多所謂的「教程」來幫助我們提高爬蟲的易用性。本人收集了一些在爬蟲開發中容易出錯和被難住的小問題,提供了參考的意見和想法,以便於幫助爬蟲開發者。1、爬蟲亂碼(網址亂碼、返回頁面亂碼、提交數據亂碼)關於爬蟲亂碼有很多群友的各式各樣的問題,不僅是中文亂碼,還包括一些如日文、韓文 、俄文、藏文之類的亂碼處理,因此 確定源網頁的編碼。2、含有驗證碼錶單登陸屬於post請求,即先向伺服器發送表單數據,需要驗證碼的情況可以使用帶驗證碼登陸的cookie解決。
  • 網站反爬蟲常見方法
    網站為了正常運營,通常會設置各種反爬機制,讓爬蟲知難而退。今天神龍代理IP就給大家盤點一下網站常見的反爬蟲機制。網站反爬蟲常見方法1.通過UA判定UA即User Agent,它是請求瀏覽器的身份標誌。反爬蟲機制通過判定訪問請求的頭部中沒有帶UA來識別爬蟲,這種判定方法很低級,通常不會將其作為唯一的判定標準,因為反反爬蟲非常容易,隨機數UA即可針對。2.通過Cookie判定Cookie就是指會員制的帳號密碼登錄驗證,通過分辨這一個帳號在短期內內爬取頻次來判定。這種方法的反反爬蟲也很費勁,需選用多帳戶的方法來爬取。
  • 「Python爬蟲與文本實例技術與應用」培訓班通知
    各科研院所單位:    隨著網際網路的發展,網絡信息呈現指數式增長,要在短時間內獲取大量信息,網絡爬蟲無疑是一種最適合的方法。
  • 基於社交網絡爬蟲分析人物興趣屬性(三)
    本文所有代碼都已經發布在github項目主頁上https://github.com/smityliu/spider微博模擬登錄、推特模擬登錄久等了各位夥伴們,本篇文章是我們社交網絡人物畫像的第三篇,也是我們爬蟲最技術含量最為豐富的一篇,之前的兩篇文章基於社交網絡爬蟲分析人物興趣屬性(
  • mac使用python識別圖形驗證碼!
    在網上查了很多版本的圖形驗證碼識別,目前看到最多的兩個模塊是pytesseract和tesserocr,但是因為我這裡安裝tesserocr的時候各種出錯,所以最終我鎖定了使用pytesseract。那麼接下來,就記錄下安裝以及使用過程。這裡的系統環境是mac os 10.14.
  • 用Python識別圖形驗證碼,實現自動登陸!
    驗證碼有圖形驗證碼、極驗滑動驗證碼、點觸驗證碼、宮格驗證碼。這回重點講講圖形驗證碼的識別。雖說圖形驗證碼最簡單,但是對於我這等新手,還是要苦學一番。首先尋找測試網站,網站選的是如雲閣小說網,小網站不怕被封。他
  • 圖形驗證碼難防黃牛 今年網購車票超8成無驗證碼
    圖形驗證碼難防黃牛 今年網購車票超8成無驗證碼 原標題: 中國鐵路總公司表示,今年春運網絡購票需要驗證碼的比例將被壓縮到15%以下。昨天,老牌搶票軟體360瀏覽器表示通過大數據分析,今年春運搶票初期,12306的圖形驗證碼並沒有比去年增加難度,他們發現圖形驗證碼已經不是鐵路防止黃牛倒票的主要技術手段,鐵路正在通過更加嚴格的實名認證等其他方式來防黃牛,提高了用戶的購票體驗。
  • Python爬蟲和反爬蟲的鬥爭
    在抓取對方網站、APP 應用的相關數據時,經常會遇到一系列的方法阻止爬蟲。網站APP們這麼做的原因,一是為了保證服務的質量,降低伺服器負載,二是為了保護數據不被獲取。爬蟲與反爬蟲的鬥爭經久不衰,這裡神龍IP給大家分享一些常見的反爬蟲手段。
  • 12306網站驗證碼遭拍磚 「驗證碼」本意是安全不是麻煩
    ——新聞緣起——  12306購票驗證碼遭吐槽  「請點擊下圖中所有的瑪瑙」「請點擊下圖中所有的博斯普魯斯海峽」「請點擊下圖中所有的蜥蜴」……這些都是人們在12306網站購票時遭遇的驗證碼問題。  由於設置了圖形驗證碼,用戶需要根據提示,從8張圖片中找到提示中提到的相關物品,看不清或者沒把握的可以刷新更換。
  • 使用Python和Tesseract來識別圖形驗證碼
    很多時候驗證碼明明很簡單(對於非網際網路企業,或者企業內網中的應用來說特別如此),但因為沒有趁手的識別庫,也只能苦哈哈地進行人肉識別,或者無奈地放棄任務。在這裡,我分享一下自己使用Python和開源的tesseract OCR引擎做驗證碼識別的經驗,並提供相關的原始碼和示例供大家借鑑。
  • Python基礎教程——爬蟲——起步
    提起,Python,那是必須要提到爬蟲的,雖然其他語言也能爬蟲,但是Python無疑是首選,也是最優解。要說起爬蟲,技術細節還是蠻多的,本文的目的是讓你在最短的時間內掌握思路,許多人說起爬蟲,不知道從哪裡入手,不知道要怎麼辦,這才是要解決的重點。本文提供三套解決思路供大家參考。
  • 網絡爬蟲作用有哪些?如何構建網絡爬蟲?
    網絡爬蟲大致有4種類型的結構:通用網絡爬蟲、聚焦網絡爬蟲、增量式網絡爬蟲、深層網絡爬蟲 。1、通用Web爬蟲通用網絡爬蟲所爬取的目標數據是巨大的,並且爬行的範圍也是非常大的,正是由於其爬取的數據是海量數據,故而對於這類爬蟲來說,其爬取的性能要求是非常高的。這種網絡爬蟲主要應用於大型搜尋引擎中,有非常高的應用價值。 或者應用於大型數據提供商。
  • 12306將剔除辨識率低圖形驗證碼
    在人眼識別需要2秒的情況下,機器僅用0.1秒就能識別。「在尖峰時段,相隔這樣的時間,也會造成旅客買不到票。」  朱建生說,圖片識別對普通人而言更加便利,人腦更容易建立問題和圖片間的聯繫,而機器則有一定困難。