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

2021-01-09 機器人在追你

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

目標

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

準備

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

識別

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

思路

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

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

初始化

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

模擬點擊

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

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

識別缺口

獲取不帶缺口圖片

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

獲取網頁截圖

獲取驗證碼圖片的位置

獲取帶缺口的圖片

首先獲取滑塊

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

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

獲取缺口

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

模擬拖動

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

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

相關焦點

  • 爬蟲面試必備,幾種驗證碼的解決方案
    如果驗證碼中帶有簡單幹擾線可以使用灰度和二值化的方法提高代碼的識別率。部分對比代碼:# -*- coding: utf-8 -*-import cv2import numpy as npimagepath = '9_1.png'img = cv2.imread(imagepath)gray = cv2.cvtColor ( img , cv2.COLOR_BGR2GRAY )ret, binary
  • 01 | 圖形驗證碼的識別
    隨著技術的發展,驗證碼的花樣越來越多。驗證碼最初幾個數字組合的簡單的圖形驗證碼,後來加入了英文字母和混淆曲線。有的網站還能看到中文驗證碼,這使得識別語法困難。 因為,我們需要識別文字,然後點擊與文字描述相符合的圖片,驗證碼完全正確,驗證才能通過。現在這種具有交互式的驗證碼越來越多,如 極驗滑動驗證碼 此類驗證碼需要 滑動拼合滑塊才可以驗證(我不過我個人更喜歡叫它拼圖驗證碼)。
  • 揭秘滑動拼圖驗證碼背後的故事
    12306 拼命把驗證碼弄複雜的原因,目的就是識別出背後同你一起搶票的機器。  作為區分計算機和人類的一種程序算法,驗證碼可有效對抗機器的大批量自動化訪問,這也催生了從事識別驗證碼的各路黑產。  在雷鋒網對「快啊答題」的報導中就提到:  其打碼平臺基於主流 AI 深度學習 Caffe 框架,使用 vgg16 卷積核神經網絡模型,可以直接輸入原始圖像(避免了對圖像的複雜前期預處理),並能通過深度的機器學習來獲得較高的驗證碼識別率。  當機器可以理解圖像的含義時,傳統的驗證碼就不再安全了。
  • 最全的 Python 反爬蟲及應對方案!
    Spider Trap蜘蛛陷阱導致網絡爬蟲進入無限循環之類的東西,這會浪費蜘蛛的資源,降低其生產力,並且在編寫得不好的爬蟲的情況下,可能導致程序崩潰。禮貌蜘蛛在不同主機之間交替請求,並且不會每隔幾秒鐘從同一伺服器請求多次文檔,這意味著「禮貌」網絡爬蟲比「不禮貌」爬蟲的影響程度要小得多。
  • Python驗證碼識別:利用pytesser識別簡單圖形驗證碼
    blog/647326(點擊尾部閱讀原文前往)一、探討識別圖形驗證碼可以說是做爬蟲的必修課計算機涉及到的幾何圖形處理一般有 2維到n維圖形處理,邊界區分,面積計算,體積計算,扭曲變形校正。對於顏色則有色彩空間的計算與轉換,圖形上色,陰影,色差處理等等。在破解驗證碼中需要用到的知識一般是 像素,線,面等基本2維圖形元素的處理和色差分析。
  • Python視頻教程網課編程零基礎入門數據分析網絡爬蟲全套Python...
    ,然後再根據自 己的需求和規劃選擇學習其他方向課程,學完後一定要多實踐 總目錄 零基礎全能篇(4套課程) 實用編程技巧進價(1套課程) 數據分析與挖掘(8套課程) 辦公自動化(3套課程) 機器學習與人工智慧(7套課程) 開發實戰篇(4套課程) 量化投資(2套課程) 網絡爬蟲(
  • 專訪極驗張振宇:揭秘滑動拼圖驗證碼背後的故事
    在雷鋒網對「快啊答題」的報導中就提到:其打碼平臺基於主流 AI 深度學習 Caffe 框架,使用 vgg16 卷積核神經網絡模型,可以直接輸入原始圖像(避免了對圖像的複雜前期預處理),並能通過深度的機器學習來獲得較高的驗證碼識別率。當機器可以理解圖像的含義時,傳統的驗證碼就不再安全了。
  • 使用Python+Tensorflow的CNN技術快速識別驗證碼
    北京 上海巡迴站 | NVIDIA DLI深度學習培訓NVIDIA 深度學習學院 帶你快速進入火熱的DL領域正文共2929個字,17張圖,預計閱讀時間:8分鐘。近年來,機器學習變得愈加火熱,中國選手柯潔與AlphaGo的人機大戰更是引起熱議。目前,在圖像識別和視覺分析研究中,卷積神經網絡(CNN)技術的使用越來越多。
  • 懟就完事了,總結幾種驗證碼的解決方案
    如果驗證碼中帶有簡單幹擾線可以使用灰度和二值化的方法提高代碼的識別率。部分對比代碼:# -*- coding: utf-8 -*-import cv2import numpy as npimagepath = '9_1.png'img = cv2.imread(imagepath)gray = cv2.cvtColor ( img , cv2.COLOR_BGR2GRAY )ret, binary
  • 驗證安全2.0時代:極驗驗證碼評測
    可見驗證碼的存在是為了區分人和機器的操作行為,從而進行分類管理。從應用方面來看,驗證碼可以杜絕撞庫攻擊,暴力註冊,垃圾評論,非法爬蟲,刷票投票和惡意搶購等行為。從出發點來看,驗證碼對改善網際網路環境有著不可磨滅的功勞。但是,實際情況卻事與願違。
  • 寫網絡爬蟲程序的難度是怎麼分等級的
    寫網絡爬蟲程序的難度是怎麼分等級的 猿人學 發表於 2020-02-05 11:49:55 寫爬蟲,是一個非常考驗綜合實力的活兒。
  • Python 爬蟲:8 個常用的爬蟲技巧總結!
    、寫過簡單驗證碼識別腳本。 response.read()在開發爬蟲過程中經常會遇到IP被封掉的情況,這時就需要用到代理IP;在urllib2包中有ProxyHandler類,通過此類可以設置代理訪問網頁,如下代碼片段:import urllib2proxy = urllib2.ProxyHandler({'http': '127.0.0.1:8087
  • 自動化測試實踐之Python識別驗證碼
    來源:  j_hao104my.oschina.net/jhao104/blog/647326文末有福利~一、探討識別圖形驗證碼可以說是做爬蟲的必修課計算機涉及到的幾何圖形處理一般有 2維到n維圖形處理,邊界區分,面積計算,體積計算,扭曲變形校正。對於顏色則有色彩空間的計算與轉換,圖形上色,陰影,色差處理等等。在破解驗證碼中需要用到的知識一般是 像素,線,面等基本2維圖形元素的處理和色差分析。
  • 2018年6月份Python網絡爬蟲與文本挖掘
    ,要在短時間內獲取大量信息,網絡爬蟲無疑是一種最適合的方法。為提升相關科技工作者的技術水平,北京博宏科睿教育科技有限公司特舉辦2018年第二期「Python爬蟲與文本挖掘實例技術與應用」培訓班,本次培訓從爬蟲的基本知識入手,使用Python作為實現工具,一步步講述網絡爬蟲的實現,具體內容如下:            【培訓目標】 1.讓學員儘快掌握python語言的基本結構與語法與數據類型,模塊、
  • 網站反爬蟲常見方法
    網站為了正常運營,通常會設置各種反爬機制,讓爬蟲知難而退。今天神龍代理IP就給大家盤點一下網站常見的反爬蟲機制。反爬蟲機制通過判定訪問請求的頭部中沒有帶UA來識別爬蟲,這種判定方法很低級,通常不會將其作為唯一的判定標準,因為反反爬蟲非常容易,隨機數UA即可針對。2.通過Cookie判定Cookie就是指會員制的帳號密碼登錄驗證,通過分辨這一個帳號在短期內內爬取頻次來判定。這種方法的反反爬蟲也很費勁,需選用多帳戶的方法來爬取。
  • 網絡驗證碼的進化:從簡單圖文到無感驗證
    ,而機器不能」的原理來抵禦惡意登錄,通過識別、輸入這些交互,區分出機器人和真正的人類,防止惡意攻擊或者刷號情況的產生,是一種利用意識區分用戶是計算機還是人的公共全自動程序,在註冊、登錄、網購、交易等各類場景中都發揮著巨大作用,並且在不斷進化中成為網絡中始終不可或缺的技術。
  • 圖像驗證碼和大規模圖像識別技術
    圖1:不同的字符驗碼(Credit: Wikipedia)一個好的驗證碼方案的特點很簡單:人容易識別,而機器無法識別。嚴格來說,如同密碼方案一樣,驗證碼產生的算法應該公開,從而能夠公開驗證算法的安全性,但在實際使用中一般鮮有這樣做的。在電子郵箱申請等這種典型的需要驗證碼的場景,還要求驗證碼的答案可能性(解空間)足夠大,從而讓猜測的成功率也極低。例如,如果有哪怕1%甚至更小的機率能猜對,也不能有效防止機器自動註冊大量郵箱來發送垃圾廣告郵件。
  • Python爬蟲:一些常用的爬蟲技巧總結
    、自動化運維:寫過簡單網站、寫過自動發帖腳本、寫過收發郵件腳本、寫過簡單驗證碼識別腳本。,於是對爬蟲一律拒絕請求。對於一些簡單的驗證碼,可以進行簡單的識別。本人也只進行過一些簡單的驗證碼識別。但是有些反人類的驗證碼,比如12306,可以通過打碼平臺進行人工打碼,當然這是要付費的。7、gzip壓縮有沒有遇到過某些網頁,不論怎麼轉碼都是一團亂碼。哈哈,那說明你還不知道許多web服務具有發送壓縮數據的能力,這可以將網絡線路上傳輸的大量數據消減 60% 以上。
  • 驗證碼安全那些事
    首先針對某招聘網站的驗證碼進行識別,這裡基於tesseract寫的一個OCR程序,測試樣本10張,最後準確率在50%,反溯以下發現對識別相近字時會比較吃力比如」z」和」2″,」0″和」O」等等,因為驗證碼做了反識別部分驗證碼人眼也比較難識別
  • 《Python3網絡爬蟲開發實戰》:0基礎小白的入門級別教科書
    1、Web開發方向2、數據分析方向3、科學計算方向4、AI的機器學習方向5、AI的計算機視覺方向6、網絡爬蟲方向對於不從事編程、AI崗位的職場人士,我個人比較推薦大家學習一下數據分析跟網絡爬蟲。主要是學習網絡爬蟲,等你學完這部分,還有興趣再繼續學數據分析,是一個很不錯的選擇。