淺析Java Web 防爬蟲機制


前戲:
因為作者喜歡爬蟲,所以總結了一下自己爬蟲時一般遇到的難處,所以這些難處就是防爬蟲的有效措施。


了解一般防爬蟲的方法:
1.給令牌(類似我們拿快遞,需要有身份驗證的令牌,才給你拿快遞)。
2.記錄ip(同ip訪問量速度太高等等)。
其他的還有很多。。。


今天我們模擬第一種機制:給令牌。
首先我們看看這個網頁:

普通.png

其次看看頁面的源碼:

頁面源碼.png

一般爬蟲遇到這種網頁,肯定偷偷開心,因為只要爬整個網頁就可以獲取里面的圖片資源等等。。。
接下來我們再來看看同樣的網頁,不同的源碼:

源碼2.png

這兩個源碼的實現(xiàn)的效果是一樣的,為什么他們區(qū)別那么大(第一個基本各種標簽都在界面上,第二個就兩個div)。


沒錯,很多人猜到了,就是異步加載(Ajax)!
至于如何異步加載不是本篇文章的重點,接下來我們看看如何實現(xiàn)異步加載和令牌式來防爬蟲。
接下來看看圖片,了解整個令牌防爬蟲。


圖解.png

因為有了令牌驗證,爬蟲并不能直接爬取,他需要拿到令牌,假設你的令牌很難構造,這就可以過濾很多爬蟲了!


看到這里應該明白怎么個防爬蟲原理了吧,接下來關鍵的是令牌的構造!
這里有兩種方式:
第一種:請求服務器給令牌(比如你登陸后,個人信息存在session,在加密給你一個令牌),不過這種給服務器的壓力大,不建議。
第二種:在客戶端構成令牌(看是在我們客戶端構成令牌,不過加密夠難解,還是不容易偽造?。?/p>


實現(xiàn)方法:

<script type="text/javascript" src="Js/jquery-3.2.1.js"></script>//Jquery
    <script type="text/javascript" src="Js/LoadPage.js"></script>//異步的JS
    <script type="text/javascript" src="Js/Encrypt.js"></script>//加密的JS

由于異步不是重點,所以略過。。。。
接下來,我們服務器接收令牌并且判斷,合法給予資源,不合法不給予!

 try {
            params = Encrypt.GetMD5Code(token);
            System.out.println("服務器的params:"+params);
        }catch (Exception e){
            e.printStackTrace();
        }
        String getToken = req.getParameter("token");
        System.out.println("客戶端的params:"+getToken);
        if (getToken.equals(params)){//判斷令牌是否合法!
//合法便給予資源            
resp.getWriter().print( "![](Pic/me.jpg)\n");
        }
    }

接下來我們看看通過抓包,我們的模擬是否成功~
抓包看看令牌:

令牌.png

服務器和客戶端的令牌是否相同,相同合法給予圖片資源!

服務端.png

給予資源(在response里面)

響應.png

至此我們獲取到了資源!
本文為原創(chuàng),如有轉載請注明轉載地址,對作者的一種鼓勵!
本次項目發(fā)布在github上(求個star(●'?'●)):https://github.com/Elricyo/PreventSpider
謝謝觀看!有什么問題請評論,作者也是Java Web 的菜鳥!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,872評論 25 709
  • 1 前言 作為一名合格的數(shù)據(jù)分析師,其完整的技術知識體系必須貫穿數(shù)據(jù)獲取、數(shù)據(jù)存儲、數(shù)據(jù)提取、數(shù)據(jù)分析、數(shù)據(jù)挖掘、...
    whenif閱讀 18,298評論 45 523
  • 2017年04月05日 2017-04-05 15:59閱讀:10 清明時節(jié)雨紛飛。 今年的清明,也就是昨天,雨、...
    傲雪風骨梅閱讀 345評論 1 3
  • 正好畢業(yè)一年,上班時,加班是常事,對此我也習以為常。 加班,累并快樂著。珍惜加班的機會,抱著但凡經歷的都是上天給的...
    劉素言閱讀 796評論 0 1
  • 出租車下了八達嶺高速,繞到回龍觀的大街,便停下了。程小灰睡醒了過來,發(fā)現(xiàn)還牽著我的手,立即松開了,臉上顯出一絲羞愧...
    雨過湘南閱讀 531評論 15 16

友情鏈接更多精彩內容