网络爬虫/数据抓取,反爬虫(更新版)
生活随笔
收集整理的這篇文章主要介紹了
网络爬虫/数据抓取,反爬虫(更新版)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
知己知彼,百戰不殆
想要反網絡爬蟲,首先需要了解網絡爬蟲,基本概念不說了,這里主要對網路爬蟲的特征進行闡述:
- 大多數是高訪問量;
- 大多數是定時(可加入salt隨機時間);
- IP基本固定/不變(IP代理可跳過);
如何反爬蟲
反爬蟲的思路主要是區別爬蟲和正常人工訪問的區別,進行策反,所以發爬蟲需要兩步走,第一步識別,第二部策反;
識別
識別的思路主要是根據爬蟲的特征,但需要考慮人工操作,大體來說,識別分為以下常見方式:
- 統計數量,如多久內超過多少訪問量;(閾值是人工比較難操作的數量)
- (不定期,下同)驗證碼 > 最常見最普通,技術門檻最低;
- User-Agent + Referer檢測 / cookies > 可模擬;
- 驗證圖形 > 比如拖拉圖形的區域到指定位置;
- 簡單算術 > 比較常見,加減乘除;
- 回答問題 > 小米/魅族等電商網上營銷時常用,如孫悟空的師傅是誰;
- 選擇點擊圖片 > 12306常見方式;
- 驗證性鏈接:
- 驗證性區域 > 根據界面展示的內容展示不可見區域進行識別,不如列表界面,分頁或數據界面展示不可見區域,人工操作無法進入,但一般爬蟲難以識別隱藏域;
以上主要的思路就是,電腦做起來不容易,但人工操作很容易。
策反
- 監禁:采集一次放到全局變量中進行記錄,并隔離訪問(通過過濾器攔截器等限制訪問),然后再放出來(提高應用容錯性),再次符合判斷再進行隔離訪問或終身監禁,但界面展示為網絡問題,等待中(為了防止破譯監禁制造假象);
- 投毒:界面展示的數據經過加工處理,展示的數據變為假數據(半真半假)(也可亂碼)(投毒一般都是看起來像真數據,不僅僅是爬到真數據,也是想欺騙爬蟲);
- 斷奶:如果判斷是爬蟲,直接拉黑;
- 筑墻:常見的驗證碼,各種驗證,如簡單的數字,復雜一點的文字、拖動滑塊,稍微復雜一點的成語拼接、識圖辯色,bug級別的認識白百何王珞丹、找小星星小傘、排序黑紅方梅等;
- 開鎖:第一步拿鑰匙,第二部開鎖,第一步必須通過驗證,常見搭配驗證碼,返回一個鑰匙/code,拿著鑰匙拼接正確的url地址進行訪問,才能返回正常的數據界面;(筑墻的升級版)
- 攻擊(難度大,不建議):攻擊方面有保守攻擊和激進攻擊兩種,保守攻擊如相應延時策略、返回大批量假數據策略、破壞數據解析規則策略等;激進攻擊如肉雞;
- 混淆:常見css反爬或字體反爬,css反爬初級的文字順序變動+css調樣式調順序,bug級別的圖片+算法+偏移量等等計算出內容來;字體反爬,網頁指定不常用字體,普通的客戶端沒有改字體,服務器在渲染的時候通過指定的服務器端字體渲染展示,如果沒有改字體,爬下來也是亂碼;提名表揚大眾點評
一般建議:
識別:低成本高收益的是普通驗證碼+統計閾值;
處理:投毒/監禁,投毒可適用于部分補救措施;普通的可以筑墻提高爬蟲成本;稍微高級一點可以結合開鎖;大神bug級別就混淆或各種混搭;
總結
以上是生活随笔為你收集整理的网络爬虫/数据抓取,反爬虫(更新版)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 不同分辨率图片匹配_杜克大学开源 AI
- 下一篇: 计算机二级试题操作题图文讲解,计算机二级