1. 程式人生 > >網路爬蟲/資料抓取,反爬蟲(更新版)

網路爬蟲/資料抓取,反爬蟲(更新版)

知己知彼,百戰不殆

想要反網路爬蟲,首先需要了解網路爬蟲,基本概念不說了,這裡主要對網路爬蟲的特徵進行闡述:

  • 大多數是高訪問量;
  • 大多數是定時(可加入salt隨機時間);
  • IP基本固定/不變(IP代理可跳過);

如何反爬蟲

反爬蟲的思路主要是區別爬蟲和正常人工訪問的區別,進行策反,所以發爬蟲需要兩步走,第一步識別,第二部策反;

識別

識別的思路主要是根據爬蟲的特徵,但需要考慮人工操作,大體來說,識別分為以下常見方式:

  • 統計數量,如多久內超過多少訪問量;(閾值是人工比較難操作的數量)
  • (不定期,下同)驗證碼 > 最常見最普通,技術門檻最低;
  • 驗證圖形 > 比如拖拉圖形的區域到指定位置;
  • 簡單算術 > 比較常見,加減乘除;
  • 回答問題 > 小米/魅族等電商網上營銷時常用,如孫悟空的師傅是誰;
  • 選擇點選圖片 > 12306常見方式;
  • 驗證性連結:
  • 驗證性區域 > 根據介面展示的內容展示不可見區域進行識別,不如列表介面,分頁或資料介面展示不可見區域,人工操作無法進入,但一般爬蟲難以識別隱藏域;
    以上主要的思路就是,電腦做起來不容易,但人工操作很容易。

策反

  • 監禁:採集一次放到全域性變數中進行記錄,並隔離訪問(通過過濾器攔截器等限制訪問),然後再放出來(提高應用容錯性),再次符合判斷再進行隔離訪問或終身監禁,但介面展示為網路問題,等待中(為了防止破譯監禁制造假象);
  • 投毒:介面展示的資料經過加工處理,展示的資料變為假資料(半真半假)(也可亂碼)(投毒一般都是看起來像真資料,不僅僅是爬到真資料,也是想欺騙爬蟲);
  • 斷奶:如果判斷是爬蟲,直接拉黑;
  • 攻擊(難度大,不建議):攻擊方面有保守攻擊和激進攻擊兩種,保守攻擊如相應延時策略、返回大批量假資料策略、破壞資料解析規則策略等;激進攻擊如肉雞;

一般建議:

識別:低成本高收益的是普通驗證碼+統計閾值;
處理:投毒/監禁,投毒可適用於部分補救措施;