網路爬蟲,解放你被電腦禁錮的雙手

2021-10-23 05:28:56 字數 1488 閱讀 9065

提起網路爬蟲,首先會想到的是搜尋引擎每天自動在網際網路世界中到處遊弋,抓取最新的網路資源,供網民們消費。這種複雜的系統可能理解起來有點費勁。

隨著資訊化深入生產生活的方方面面,給人們帶來效率便捷的同時,也有種被機器左右的感覺。但這不是機器的原因,而是系統的設計者太依賴於機器,過猶不及了。也有另外一種解釋,機器還不夠智慧型。因此,就有一些原來手工的工作被搬到了電腦上,每天或者隔斷時間需要去電腦上點一點,或者看看資料,或者匯出些資料。剛開始大家都很有新鮮感,但是過後人們又覺得每天幹得都是重複的工作,能不能讓機器代替來做,自己可以做更有意義的事。這種情況下,爬蟲可以登場了,它所做的工作就是模擬人操作乙個系統。

很典型的,有如下場景:登陸某個管理系統,開啟某個選單,輸入查詢條件,查詢結果,匯出結果,匯入另外的系統中。

我們如何來實現呢?要解決如下幾個問題:

登入功能有驗證碼,簡訊驗證碼等,如何識別

系統如果沒有不操作,隔段時間得重新登入,如何避免反覆登入

如何規避系統的反爬蟲檢測

如果系統異常了,能否正常抓取

如何爬取業務內容

**針對問題1,**我們有如下對策,如果登入條件只有使用者名稱/密碼,那麼我們只要用httpclient呼叫登入介面即可。但是現在安全策略越來越高,人們加了各種驗證碼。針對驗證碼,我們可以採用tesseract來識別單行的字母或數字或文字。但是需要訓練它以提高識別的準確率。如果暫時不想接入ai的領域,它自帶的智商可以識別70%左右的驗證碼,可以反覆識別,直到識別成功。針對簡訊驗證碼,需要使用者輔助操作。在驗證碼發出後,往往有幾分鐘的有效性,可以在這期間人工採集到簡訊驗證碼,以獲取系統准入。類似於12306的那種,已經超出了機器目前的智商,我們還是知難而退吧。下回可以寫寫影象識別的事。

**針對問題2,**在獲取到使用者的有效使用者名稱/密碼/驗證碼後,一般來說我們就具備登入系統的能力了。接下來我們需要做一件很重要的事。如果是人作業系統,登入成功後,系統會給使用者返回登入憑證:cookie,其中包括域,路徑,有效期,名稱,以及其他一些屬性資訊比如sessionid等。為了避免反覆登入,我們需要將cookie儲存下來,可以將其序列化到redis中,用的時候再反序列化回來。並且模仿人操作,每隔幾分鐘去請求某乙個系統內的功能,讓系統認為你一直在作業系統,這樣session就一直不會失效了。也就不用反覆登入了。

**針對問題3,**有的系統為了防止爬蟲,制定了各種不人道的規則,比如短時間內嘗試多次登陸,多次獲取驗證碼,限制客戶端型別user-agent,限制header中必需帶某種指定引數等。這些得具體情況具體應對了,沒有統一的方案。

**針對問題4,**如果趕上系統公升級了,但是很快系統就起來了,那麼可以保持session的有效性。但是如果後台儲存了使用者的session,並手工清理的session,那我們就只能乖乖的重新登陸系統了。所以爬蟲有很多不確定性,只能部分解放人們的雙手。

針對問題5,登陸系統後,cookie也儲存下來了,要獲取某些業務資料,其實就是請求某個具體的介面,但是要帶上cookie,只要從redis中反序列回來即可。

至此,爬蟲已經可以自動幫你幹活了,乙個激靈,工作自己幹完了!

如何隱藏你的無線網路及你的電腦

無線網路中怎麼隱藏電腦 要在無線網路中隱藏自己的電腦,方法有很多,例如單擊 www.cppcns.com開始 執行 然後輸入 cmd 開啟命令提示符視窗,在該視窗中輸入 net config server hidden yes 或者在無線網路連線的屬性視窗中,取消 microsoft網路的檔案和印表...

為你解析那些容易被大家忽視的電腦小細節

今天我們就針對電腦中大家平時忽略的一些電腦部件所需注意事項作乙個小總結。一 鍵盤 它怕潮氣 灰塵 拉拽。現在大部分的鍵盤都採用塑料薄膜開關,即開關由三張塑料薄膜構成,中間一張是帶孔的絕緣薄膜,兩邊的薄膜上鍍上金屬線路和觸點,受潮腐蝕 沾染灰塵都會使鍵盤觸點接觸不良,操作不靈。託拽易使鍵盤線斷裂,使鍵...

你的網路被DNS劫持了嗎?dns 被劫持怎麼解決

dns劫持可用於dns域欺騙 pharming,攻擊者通常目的是為了顯示不需要的廣告以產生收入 或用於網路釣魚 fishing,攻擊者目的是為了讓使用者訪問虛 並竊取使用者的資料和憑據 網際網路服務提供商 isp 也可能通過dns劫持,以接管使用者的dns請求,收集統計資料並在使用者訪問未知網域名稱...