日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Tomcat和搜索引擎网络爬虫的攻防

發布時間:2023/12/19 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Tomcat和搜索引擎网络爬虫的攻防 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

不知道廣大程序員朋友們注意到一個現象么?使用百度是無法搜索到淘寶網的網頁。為什么會造成這種現象?這就要從網絡爬蟲說起了。

咱們程序員假如自己搭設個人網站,在上面分享少量自己的技術文章,面臨的一個重要問題就是讓搜索引擎能夠搜索到自己的個人網站,這樣才能讓更多的讀者訪問到。

而搜索引擎如百度和微軟Bing搜索,Google搜索等通過什么方式才能收錄我們的個人網站呢?

答案是搜索引擎的網絡爬蟲。 網絡爬蟲是一個很形象的名詞,是屬于搜索引擎的工具,只有被這些網絡爬蟲“爬過”的內容才有機會出現在對應搜索引擎的搜索結果中。

個人站長對網絡爬蟲是又愛又恨。一方面,網絡爬蟲可以讓我們的個人網站出現在搜索結果里,對我們的個人網站進行擴散。另一方面,假如網絡爬蟲太多太頻繁地訪問個人網站,會肯定程度上影響正常使用戶的請求解決。

于是就有了文章開頭我提到的百度搜不到淘寶產品信息的文章。

在瀏覽器里輸入https://www.taobao.com/robots.txt,

能看到淘寶網的一個文件robots.txt:

隨意選一段解釋:這個robots.txt的意思是,淘寶網做出了規定,假如網絡請求來自百度爬蟲(Baiduspider), 那么只允許(allow)百度爬蟲讀取article, oshtml和/ershou, 不允許讀取的是product。

User-agent: Baiduspider

Allow: /article

Allow: /oshtml

Allow: /ershou

Disallow: /product/

Disallow: /

那么淘寶網怎樣知道一個請求是來自百度爬蟲,還是來自真正的使用戶訪問呢?答案就是HTTP請求的User-agent字段。

下圖是我使用Chrome訪問淘寶網的HTTP請求的User-agent:

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.84 Safari/537.36

再回到Tomcat。假如有大量來自網絡爬蟲的讀取請求,Web服務器需要為每一個請求創立一個session。當Session數量變得巨大時,消耗的服務器內存和資源也是巨大的。

因而,Tomcat對于來自網絡爬蟲的請求,用同一個session來解決。

我們打開Tomcat的源代碼來學習。

Tomcat的源代碼可以到其官網去下載:

https://tomcat.apache.org/download-70.cgi

點這個鏈接:

我下載的是7.0.90版本,只有7MB大。

這里需要注意,即便Spider顯式的傳了一個 sessionId過來,也會棄使用,而是根據client Ip 來進行判斷,即對于 相同的 Spider 只提供一個Session。

在下載好的源代碼文件夾里,找到這個子文件夾:\apache-tomcat-7.0.90-src\java\org\apache\catalina\valves

打開CrawlerSessionManagerValve.java:

可以看到從第192行代碼開始都是Tomcat使用來檢測進來的網絡請求能否是網絡爬蟲:

通過這個類里定義的正則表達式檢測HTTP請求的user-agent字段來判斷究竟該請求能否來自網絡爬蟲:

“.[bB]ot.|.Yahoo! Slurp.|.Feedfetcher-Google.”

一旦正則表達式在第205行匹配成功,將第206行的標志位設成true。

假如檢測到是網絡爬蟲,則使用clientIdSessionId.get這個API獲取Tomcat專門為網絡爬蟲預留的sessionId, 而后在第226行把該sessionId分配到進來的網絡爬蟲請求,這樣就避免了白費太多的資源申請session來服務海量的網絡爬蟲請求,節省了Web服務器的資源。

要獲取更多Jerry的原創技術文章,請關注公眾號"汪子熙"或者掃描下面二維碼:

總結

以上是生活随笔為你收集整理的Tomcat和搜索引擎网络爬虫的攻防的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。