《Python網絡爬蟲》 課件 第4單元-反爬蟲策略及解決辦法_第1頁
《Python網絡爬蟲》 課件 第4單元-反爬蟲策略及解決辦法_第2頁
《Python網絡爬蟲》 課件 第4單元-反爬蟲策略及解決辦法_第3頁
《Python網絡爬蟲》 課件 第4單元-反爬蟲策略及解決辦法_第4頁
《Python網絡爬蟲》 課件 第4單元-反爬蟲策略及解決辦法_第5頁
已閱讀5頁,還剩57頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

Python網絡爬蟲第四單元

反爬蟲策略及解決辦法教學概述概述

在第二部分的相關知識點:Requests的相關技術介紹的同時,向大家同步闡述了爬蟲過程中常見的難題,也就是反爬蟲。

我們先來認知一下爬蟲和反爬蟲的對比和歷史。爬蟲:自動獲取網站數據的程序,常伴隨批量的獲取。反爬蟲:使用技術手段防止爬蟲程序的方法。

反爬蟲的最終目的是:數據保護。因為伴隨著爬蟲程序的運行,會造成:粗暴爬取,服務器壓力過大,網站癱瘓。爬蟲失控,演變成服務器攻擊。

商業數據泄露,競爭能力流失等教學概述教學導航知識重點反爬蟲策略之Headers、Cookies、Proxies,Tesseract安裝與配置和Pytesseract應用。知識難點Pytesseract應用。推薦教學方式從學習情境任務書入手,通過對任務的解讀,引導思維獲取信息,引導學生制作工作計劃;根據標準工作流程,調整學生計劃并提出決策方案;通過對相關案例的實施演練讓學生掌握任務的實現流程及技能。建議學時8學時推薦學習方法根據任務要求獲取信息,制定工作計劃;根據教師演示,動手實踐完成工作實施,掌握任務實現的流程與技能;并進行課后的自我評價與擴展思考。必須掌握的理論知識反爬蟲策略之Headers、Cookies及Pytesseract應用。必須掌握的技能使用Headers模擬瀏覽器操作;使用Cookies記錄身份信息。安裝Tesseract軟件;使用Pytesseract識別驗證碼。第四單元

反爬蟲策略及解決辦法0304反爬蟲的三大策略輸入式、行為式、智能三大驗證碼Tesseract使用

Pytesseract有效識別輸入式驗證碼0102情境一:常見反爬蟲策略及解決辦法010302情景概述知識準備總結PART01情境概述情境一:常見反爬蟲策略及解決辦法情境概述學習情境描述1.教學情境描述:根據自我網絡爬蟲技術的學習,總結歸納出所遇見的反爬蟲策略以及自己是如何解決它的。并結合老師或其他資料完善自己對反爬蟲策略及技術的認知,完善反爬蟲策略體系,并針對反爬蟲策略構思對應的解決辦法。2.關鍵知識點:反爬蟲策略之Headers、反爬蟲策略之Cookies、反爬蟲策略之Proxies。3.關鍵技能點:使用Headers模擬瀏覽器操作、使用Cookies記錄身份信息。情境一:常見反爬蟲策略及解決辦法情境概述本節課的學習目標了解常見的反爬蟲策略。掌握常見反爬蟲策略的解決辦法。掌握學習新型反爬蟲技術能力。掌握學習和思考新型反爬蟲解決方案。情境一:常見反爬蟲策略及解決辦法PART02知識準備情境一:常見反爬蟲策略及解決辦法知識準備引導問題了解什么是反爬蟲策略。你都遇到過哪些反爬蟲策略?你還知道哪些反爬蟲策略?對你遇到的反爬蟲策略,你是如何處理的?對你沒遇見過的反爬蟲策略,你準備如何處理?情境一:常見反爬蟲策略及解決辦法知識準備知識點介紹反爬蟲策略之Headers反爬蟲策略之Cookie反爬蟲策略之Proxies情境一:常見反爬蟲策略及解決辦法知識準備思維導圖情境一:常見反爬蟲策略及解決辦法知識準備反爬蟲策略之HeadersHeaders是指網絡請求的頭部信息,也就是網絡請求過程中所攜帶的描述信息,允許您對HTTP請求和響應頭執行各種操作。

Headers中常見字段有:Accept、Accept-Encoding、Accept-Language、Content-Type、Connection、User-Agent、Host、Referer、Cookie等。

基于Headers的反爬蟲策略常見的為:根據User-Agent識別瀏覽器行為;根據Cookie識別用戶信息;根據Referer識別鏈路、根據Content-Type識別數據類型。以下我們針對User-Agent和Referer進行處理(其中Cookie單獨講解,此處不做處理;Content-Type是服務器進行類型判斷識別,此處亦不做講解)。情境一:常見反爬蟲策略及解決辦法知識準備反爬蟲策略之Headers1.User-Agent

服務器會通過判斷客戶端請求頭中的User-Agent是否來源于瀏覽器。所以針對Web訪問的頁面或接口,我們需要把自己偽裝成一個瀏覽器來發起訪問。因此就要指定User-Agent來偽裝成瀏覽器發起請求。

樣例4-1:模擬谷歌瀏覽器,訪問百度搜索。importrequestsheaders={'User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/89.0.4389.90Safari/537.36'}requests.get(url='/',headers=headers)情境一:常見反爬蟲策略及解決辦法知識準備反爬蟲策略之Headers1.User-Agent

樣例4-2:隨機模擬瀏覽器,訪問百度搜索。importrequestsfromfake_useragentimportUserAgentheaders={'User-Agent':UserAgent().random}requests.get(url='/',headers=headers)情境一:常見反爬蟲策略及解決辦法知識準備反爬蟲策略之Headers2.Referer

很多網站群的訪問都是級聯的,而如何去判斷當前的訪問是通過用戶交互行為操作的還是直接訪問目標地址的呢?就是通過Headers中的Referer。Referer會自動保存并設置鏈路,也就是上一步歷史記錄地址,服務器就可以以此為參數判定是否是交互行為的產物。那么我們在程序中如何避免這種反爬蟲策略呢?情境一:常見反爬蟲策略及解決辦法知識準備反爬蟲策略之Headers2.Referer

樣例4-3:隨機模擬瀏覽器,訪問百度搜索。importrequestsfromfake_useragentimportUserAgenturl='/search?q=user-agent&qs=n&form=QBRE&sp=-1&pq=user-agent&sc=10-10&sk=&cvid=5A450C85AD6E40CFB5D9D9810A2504EE'referer='/search?q=Headers&qs=n&form=QBRE&sp=-1&pq=headers&sc=10-7&sk=&cvid=7C6B7E50739E4FD29EFDE523EA3E508D'headers={'User-Agent':UserAgent().random,'Referer':referer,}requests.get(url=url,headers=headers)情境一:常見反爬蟲策略及解決辦法知識準備反爬蟲策略之CookieCookie是請求頭的一部分,同時也web瀏覽器的憑證,根據實際情況,有時候要指定Cookie參數。requests將Cookie從中剝離出來,可以使用cookies參數直接指定。url="/cookies"r=requests.get(url,cookies={'myname':'lisi'})情境一:常見反爬蟲策略及解決辦法知識準備反爬蟲策略之CookieCookie最常用的場景是:用戶登錄信息管理。在爬取有些網頁是要求登錄之后的才能爬取,所以要和服務器一直保持登錄狀態,有時的策略不都指定cookies,而是會使用session來完成,Session提供的API和requests是一樣的,并且可將Cookie自動保存。s.Session()對象自動保存和傳遞的方式。s=requests.Session()s.cookies=requests.utils.cookiejar_from_dict({"b":"d"})r=s.get('/cookies')r=s.get('/cookies')綜上所述,對于Cookie的問題,若在初始狀態需要傳遞,可以作為屬性放置在Headers的Cookie屬性中;可以單獨設置在參數cookies中。若在訪問過程實時攜帶,可以使用requests.Session()對象自動保存和傳遞的方式。情境一:常見反爬蟲策略及解決辦法知識準備反爬蟲策略之Proxies服務器會針對用戶操作對用戶行為進行記錄,當根據規則匹配識別為程序操作,可能會進行IP封禁的操作。當我們發現IP已經被封了,此IP就再也訪問不到目標網站了。為了面對封禁IP的操作,我們可以:做更完善的設置,避免瀏覽器識別并封禁IP;使用代理IP,隱藏真實IP;設置好訪問間隔,避免服務器壓力過大。對于使用代理IP,保護真實機器IP的方式如下,設置proxies參數:proxies={'https':'8:8118','http':':9999'}r=requests.get('',proxies=proxies,timeout=2)情境一:常見反爬蟲策略及解決辦法PART03總結情境一:常見反爬蟲策略及解決辦法總結總結本情景,主要介紹了完成Fiddler及模擬器軟件軟件的安裝配置。通過對案例的學習,讓同學們掌握

Requests、BeautifulSoup4、CSV技術的應用,學習如何在實際靜態網頁數據采集中應用Requests獲取網頁源數據;使情境一:常見反爬蟲策略及解決辦法情景二:處理輸入式驗證碼校驗01030204情景概述知識準備案例講解總結PART01情境概述情景二:處理輸入式驗證碼校驗情境概述學習情境描述1.教學情境描述:在上一個學習情境中,簡單介紹了常見的網絡請求反爬蟲策略和解決方法。接下來,我們來看看網絡訪問的時候常見的驗證碼問題。驗證碼(CAPTCHA)是“CompletelyAutomatedPublicTuringtesttotellComputersandHumansApart”(全自動區分計算機和人類的圖靈測試)的縮寫,是一種區分用戶是計算機還是人的公共全自動程序。可以防止注冊機批量注冊和惡意登錄;防止惡意刷單,投票、評論等;防止爬蟲盜取網頁內容和數據;防止虛假交易,盜卡支付等。實際上用驗證碼是現在很多網站通行的方式,我們利用比較簡易的方式實現了這個功能。這個問題可以由計算機生成并評判,但是必須只有人類才能解答。由于計算機無法解答CAPTCHA的問題,所以回答出問題的用戶就可以被認為是人類。情景二:處理輸入式驗證碼校驗情境概述學習情境描述2.關鍵知識點(1)Tesseract;(2)Pytesseract。3.關鍵技能點(1)安裝Tesseract軟件;(2)使用Pytesseract識別驗證碼。情景二:處理輸入式驗證碼校驗情境概述本節課的學習目標了解驗證碼的由來和意義。了解驗證碼的類型和應用場景。掌握網頁驗證碼定位提取。掌握輸入式驗證碼基礎識別技術。情景二:處理輸入式驗證碼校驗情境概述本節課的任務書完成Tesseract軟件的安裝配置。使用pytesseract識別圖片內容。使用Pillow處理圖片干擾信息。情景二:處理輸入式驗證碼校驗PART02知識準備情景二:處理輸入式驗證碼校驗知識準備知識點介紹Tesseract軟件的安裝配置pytesseract識別圖片內容Pillow處理圖片干擾信息情景二:處理輸入式驗證碼校驗知識準備引導問題什么是輸入式驗證碼?如何才算通過校驗?驗證碼的生成機制是怎樣的?為什么爬蟲中要處理驗證碼校驗?本次情境中驗證碼具體類型和內容范圍是什么?模擬用戶思維和行為,程序中識別輸入式驗證碼的原理是什么?輸入型驗證碼校驗過程可能會遇到哪些問題?如何定位和獲取實時驗證碼?獲取到的驗證碼是否有干擾信息?如何處理這些干擾信息?如何處理輸入式驗證碼完成校驗?情景二:處理輸入式驗證碼校驗知識準備思維導圖情景二:處理輸入式驗證碼校驗知識準備Tesseract1.Tesseract介紹Tesseract,一款由HP實驗室開發由Google維護的開源OCR(OpticalCharacterRecognition,光學字符識別)引擎,與MicrosoftOfficeDocumentImaging(MODI)相比,我們可以不斷的訓練的庫,使圖像轉換文本的能力不斷增強;如果團隊深度需要,還可以以它為模板,開發出符合自身需求的OCR引擎。情景二:處理輸入式驗證碼校驗知識準備Tesseract2.Tesseract安裝與配置Tesseract的使用,需要環境的支持,以實現簡單的轉換和訓練。1.1.下載軟件Tesseract是Github項目,其源碼地址為:/tesseract-ocr/tesseractTesseract有兩個大的穩定版本迭代,分別是3和4.也有一個最新開發測試版本5.關于Windows編譯運行軟件可以在官網下載,也可以在下載站下載,以下是官網地址:/tesseract-ocr/tesseract/releases/tag/4.1.1以下是下載站地址:https://digi.bib.uni-mannheim.de/tesseract情景二:處理輸入式驗證碼校驗知識準備Tesseract2.Tesseract安裝與配置1.2.安裝軟件運行下載的Tesseract安裝包:tesseract-ocr-w64-setup-v0190314.exe,選定安裝地址,默認安裝即可,效果如圖4-4所示。

圖4-4Tesseract安裝情景二:處理輸入式驗證碼校驗知識準備Tesseract2.Tesseract安裝與配置1.2.安裝軟件

圖4-4Tesseract安裝情景二:處理輸入式驗證碼校驗知識準備Tesseract2.Tesseract安裝與配置1.3.Tesseract配置為了支持Python的pytesseract庫進行OCR識別,需要系統識別到Tesseract環境。首先,在系統變量中添加一列:TESSDATA_PREFIX,并設置Tesseract安裝目錄下的tessdata文件夾地址,效果如圖4-5所示。

圖4-5TESSDATA_PREFIX配置情景二:處理輸入式驗證碼校驗知識準備Tesseract2.Tesseract安裝與配置1.3.Tesseract配置接下來,需要將其路徑配置在系統環境Path中,配置如圖4-6所示。

圖4-6Path配置情景二:處理輸入式驗證碼校驗知識準備Tesseract2.Tesseract安裝與配置1.3.Tesseract配置接下來,在命令行窗口中驗證Tesseract環境及版本,輸入以下命令:$tesseract--versiontesseractv0190314leptonica-1.78.0libgif5.1.4:libjpeg8d(libjpeg-turbo1.5.3):libpng1.6.34:libtiff4.0.9:zlib1.2.11:libwebp0.6.1:libopenjp22.3.0FoundAVX2FoundAVXFoundSSE情景二:處理輸入式驗證碼校驗知識準備Pytesseract1.Pytesseract介紹Python-tesseractisanopticalcharacterrecognition(OCR)toolforpython.Thatis,itwillrecognizeand“read”thetextembeddedinimages.Python-tesseractisawrapperfor

Google’sTesseract-OCREngine.Itisalsousefulasastand-aloneinvocationscripttotesseract,asitcanreadallimagetypessupportedbythePillowandLeptonicaimaginglibraries,includingjpeg,png,gif,bmp,tiff,andothers.Additionally,ifusedasascript,Python-tesseractwillprinttherecognizedtextinsteadofwritingittoafile.pytesseract是google做的ocr庫,可以識別圖片中的文字,也是本次情境中用以識別輸入式驗證碼的有利工具庫。情景二:處理輸入式驗證碼校驗知識準備Pytesseract2.Pytesseract環境和其他三方庫一樣,Pytesseract不屬于Python本地環境,需要安裝后才能使用。2.1.安裝Pytesseract可以使用PIP安裝Python的Pytesseract庫。語法如下:$pipinstallPytesseract2.2.驗證安裝可以使用PIP安裝Python的Pytesseract庫。語法如下:$piplist在已安裝列表中顯示了Pytesseract及其對應版本,,表明Pytesseract庫安裝成功。情景二:處理輸入式驗證碼校驗知識準備Pytesseract3.Pytesseract應用Pytesseract是一個OCR識別庫,Pytesseract具有的函數如表4-2所示。函數描述get_languages返回PytesseractOCR當前支持的所有語言。get_tesseract_version返回安裝在系統中的Pytesseract版本。image_to_string返回未修改的輸出作為字符串從PytesseractOCR處理image_to_boxes包含識別字符及其框邊界的返回結果image_to_data返回結果包含框邊界、信任和其他信息。image_to_osd返回結果包含有關方向和腳本檢測的信息。image_to_alto_xml返回以Pytesseract的ALTOXML格式的形式產生。run_and_get_output返回PytesseractOCR的原始輸出。情景二:處理輸入式驗證碼校驗知識準備Pytesseract3.Pytesseract應用其中最常用,也最直接識別驗證碼的函數是:image_to_string,將值作為字符串進行輸出。樣例4-4:使用Pytesseract識別圖4-7的內容。

圖4-7importpytesseractfromPILimportImageimage=Image.open(r'C:\Users\king1\Pictures\SavedPictures\code2.jpg')print(pytesseract.image_to_string(image))情景二:處理輸入式驗證碼校驗知識準備Pytesseract3.Pytesseract應用運行程序,輸出識別內容:C:\Software\anaconda3\python.exeC:/Repositories/PyCharm/Learning_Situation_7/樣例4-4.pyOFXoProcessfinishedwithexitcode0情景二:處理輸入式驗證碼校驗PART03案例講解情景二:處理輸入式驗證碼校驗案例講解使用Pytesseract有效識別輸入式驗證碼實例:選擇中國知網會員注冊界面的驗證碼進行演示。情景二:處理輸入式驗證碼校驗案例講解使用Pytesseract有效識別輸入式驗證碼步驟:確定目標安裝環境構建項目編寫驗證碼校驗程序運行程序效果截圖優化識別程序情景二:處理輸入式驗證碼校驗案例講解使用Pytesseract有效識別輸入式驗證碼1.確定目標a、本次純粹使用技術驗證數據,選擇中國知網會員注冊界面的驗證碼進行演示,注冊頁面如圖4-8所示。

圖4-8中國知網注冊頁情景二:處理輸入式驗證碼校驗案例講解使用Pytesseract有效識別輸入式驗證碼1.確定目標b、通過定位、檢索,得到注冊頁中圖片驗證碼實際是由AJAX實時請求刷新的,URL地址為:/elibregister/CheckCode.aspx,定位效果如圖4-9。

圖4-9驗證碼定位圖情景二:處理輸入式驗證碼校驗案例講解使用Pytesseract有效識別輸入式驗證碼1.確定目標c、通過觀察和操作網頁發現,在“立即注冊”按鈕事件上,會校驗并上傳數據進行會員注冊;在驗證碼輸入框輸入驗證碼并失去焦點時,會自動請求校驗,校驗地址為:/elibregister/Server.aspx。綜上所述,本次使用Pytesseract進行驗證碼校驗主要針對于驗證碼獲取接口和校驗接口,不做實際注冊操作。情景二:處理輸入式驗證碼校驗案例講解使用Pytesseract有效識別輸入式驗證碼2.安裝環境

本次項目使用環境為以下內容:本地語言環境:Python3.8編譯工具:PyCharm2021.2網絡請求框架:urllib1.26.4、Requests2.25.1圖片處理框架:Pillow8.2.0OCR識別框架:Pytesseract0.3.8情景二:處理輸入式驗證碼校驗案例講解使用Pytesseract有效識別輸入式驗證碼3.構建項目

在準備工作都完成之后,即可通過工具PyCharm構建項目,并開始進行項目開發了。

使用PyCharm構建基本Python項目:Learning_Situation_7,效果如圖4-10所示。

圖4-9驗證碼定位圖情景二:處理輸入式驗證碼校驗案例講解使用Pytesseract有效識別輸入式驗證碼4.編寫驗證碼校驗程序

在創建的項目:Learning_Situation_7中構建驗證碼校驗程序,以下是具體操作步驟。4.1.構建可執行文件

創建網絡爬蟲可執行文件:check_the_verification_code.py。4.2.導入模塊importpytesseractfromPILimportImagefromurllib.requestimporturlretrieve情景二:處理輸入式驗證碼校驗案例講解使用Pytesseract有效識別輸入式驗證碼4.編寫驗證碼校驗程序4.3.獲取驗證碼圖片url_get_code='/elibregister/CheckCode.aspx'defgetImage(filename):urlretrieve(url=url_get_code,filename=filename)4.4.OCR識別圖片內容defocrImage(filename):image=Image.open(filename)result_ocr=pytesseract.image_to_string(image)result_filter=''foriteminresult_ocr:ifstr(item).isalnum():result_filter+=itemreturnresult_filter情景二:處理輸入式驗證碼校驗案例講解使用Pytesseract有效識別輸入式驗證碼5.運行程序5.1.構建程序啟動入口if__name__=='__main__':filename='code.jpg'getImage(filena

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論