2019年我破解了中文裁判網數據爬蟲-python爬蟲-反爬技術哪些事情

2019年我破解了中文裁判網數據挖掘-python爬蟲-反爬技術哪些事情
從事了5年多的PHP研發和python大數據挖掘,最近自己在用python+mongdb+mysql+多進程+cookie池+代理池 寫了一套分佈式多進程的某裁判網數據爬蟲系統,主要是用來幫助一個朋友做案件的判例數據分析使用,實現了對中x裁判網整個網站的全部數據各種維度的採集和存儲,並且根據中x裁判網頁的數據結構建立數據庫表來存儲數據,最後對這些數據分析文本分析、模糊算法分析接觸非常有價值的風險控制模型解決方案,很多做技術的朋友爬取某某裁判網的時候會遇到不少,比如封IP爬不了,比如驗證碼破解了等等問題,我把我的經歷和解決方案分享給大家。
首先我們先分析它的反爬機制:
一、裁判網如何判斷我們是否瀏覽器訪問還是爬蟲訪問:
想要解決繞過裁判網爬數據的問題,首先我們要分析是在什麼情況下才會出現驗證碼,裁判網是通過以下兩種方式進行識別我們是否瀏覽器訪問還是爬蟲訪問:
方法1:通過識別我們的請求頭,來識別是否真實用戶,我們打開裁判網站的時候,正常瀏覽器打開會有一個請求頭,請求頭會按順序帶上相應的參數去請求裁判網的網站,裁判網的技術工程師會頭這個頭進行參數驗證,如果發現您發送過來的請求頭參數缺少或者順序不同或者不對,那麼就可以識別出來您是爬蟲來採集他的數據,不是正常的真實用戶用瀏覽器訪問的,那麼就會提示302,301等各種禁止訪問的提示。每個網頁的請求頭參數我們都可用chrome查看元素去查看瀏覽器打開這個網頁的時候具體包含了那些請求頭參數,下面是刑事案件列表請求頭:訪問網址:
http://wenshu.court.gov.cn/List/List?sorttype=1&conditions=searchWord+1+AJLX++案件類型:刑事案件

請求頭參數:

通過分析這個請求頭我們就知道里面有一個cookie是加密的,還有請求的參數,我們如果要模擬採集這頁面的數據我們就得模擬這個請求頭。然後用python的 request.get(url)方法去請求獲取數據。
方法2:通過監控同一個IP段的訪問頻率,如果用我們的電腦運行爬蟲程序去裁判網,那麼我們的外網IP就一個,你一分鐘之內如果訪問的速度超過十幾次,那麼中文裁判網明顯知道您是用爬蟲程序來訪問他的網站的,他就會讓你稍等再來,或者禁止訪問。那麼我們怎麼知道裁判網的請求頭是什麼呢?我們模擬發送一個get請求的時候,應該帶哪些頭參數呢?
方法3:cookie加密,如果一個網站做了cookie加密算法來攔截爬蟲,一般的手段是你必須先打開首頁,然後才能再打開列表頁或者詳細頁,如果發現你都沒有打開過首頁你就直接訪問詳細頁了,那麼根據頁面訪問的記錄cookie加密算法可以直接識別出來您是非法訪問,你是爬蟲,直接把您攔截了或者拉入黑名單了。
二、採集中文裁判時需要帶header頭哪些參數?
您用火狐或者chrome打開裁判網的刑事案件欄目的首頁,然後用瀏覽器的查看元素-網絡-看到請求頭如下

我們在寫代碼的時候就必須帶上這些參數,而且值是一模一樣,順序也不要顛倒,那麼我們的請求頭問題解決了,下面我們只要再解決封IP問題就可以正常採集裁判網數據。
三、爲什麼採用代理IP後還是被封了?
我們做爬蟲的時候不能使用自己電腦的IP去循環採集裁判網站否則會直接封IP,要解決這個問題其實很簡單就是採用動態的代理IP,但是呢很多人用代理IP還是出現會封,其實原因是您用的這個代理IP質量不行,或者你用的是那種網上公開的或者免費的代理IP。使用代理IP還是被封會有以下原因:
(1) 您的代理IP失效時間太短,還沒成完一個http請求就失效了,導致永遠被封或者無效。
(2) 您的代理IP網絡不到達不通導致,原因是您的代理IP網絡不行。
(3) 你的代理IP不是高匿名的,直接被識別出來,需要購買高匿名、高私密的的代理IP
(4) 您的代理IP已經被其他人用過裁判網了,早被列入黑名單,導致你永遠IP被封。
(5) 你是不是老是一直用幾個代理IP循環去爬?正確做法是每個請求都隨機換不同IP,所以您需要網上選那種不限制數量的代理IP,而不是固定幾個IP。

四、、爬裁判網應該選用什麼樣的代理IP?
建議您的代理IP應該滿足以下要求:
(1) 、高匿名,普通匿名不行,一定是高匿名,具體哪裏可有購買這種,可去百度網上搜索,反正價格不菲。
(2) 、有效期時間長,至少2分鐘之內是有效的,如果2分鐘就過去了,網頁還沒有加載完,數據還還沒有解析完IP就失效了,導致數據永遠爬不下來。
(3) 、不重複,至少在30天內不重複的IP,因爲動態IP是採用vps自動撥號原理來生成的,存在重複的可能,所以您需要過濾掉一些已經用過的IP.
(4) 、不限量,每天IP的數據不限制,隨機改變。

五、海量的裁判文書如何解析和存儲?
裁判網有幾個億的裁判文書,我們爬下來的是html原始數據,下一步是需要對html原始數據清洗解析加工結構化存儲,我們解析網頁最好的工具肯定是python的BeautifulSoup,可以方便的解析案件內容,可以把被告、原告、時間、類型、內容、關鍵詞、標題等解析出來然後結構化存儲到數據庫供後面的應用開發做檢索和分析使用。裁判網數據量太大可以用mongdb,mongdb是一款做大數據結構化和非結構化存儲的數據庫,適合做爬蟲的數據存儲數據庫,裁判網的數據量比較大,如果您全部吧數據存儲到一個表去,那麼前臺系統的搜索幾乎是動不了,所以我們需要按時間分庫存儲,比如2018年的數據做一個庫,2019年的數據又做一個庫,這樣建立索引關係就解決數據量大查詢速度問題。

六、代理IP池的搭建:
我們需要搭建自己高質量的代理IP池,這樣才能保證源源不斷的產出IP然後去請求目標網站,當時我用了幾百臺vps搭建了我自己的代理IP池,解決了封IP的問題。

七、裁判網數據有什麼用?什麼是大數據啊?、

最近很多朋友都問我,天天都看到人們說大數據,但是大數據是做什麼的,大數據都在哪裏,怎麼用的呢? 我相信很多沒有進入大數據領域的朋友都是面臨同樣這樣的問題,其實未來最有價值的除了石油就是數據,誰掌握了數據誰掌握了財富,比如您掌握了上海的企業工商數據,那麼你就掌握了上海企業數據的財富,您掌握了裁判網的數據,你就掌握了企業司法風險分析的財富,您就掌握了律師數據服務的財富,最有價值的不是直接賣數據而是用數據做成解決方案、運營方案、決策方案。舉個簡單例子,比如您用數據挖掘與數據分析技術做成一個“大數據判例分析”的應用投入服務給律師行業使用,我相信很多律師都需要您這個服務,因爲如果他有1萬家企業需要分析時候,他人工就成本是非常大的,所以數據的價值不在於買賣數據,而在於數據分析和數據應用。
(需要爬蟲技術交流的朋友歡迎加我qq:2779571288)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章