摘要:而搜索引擎如百度和微軟搜索,搜索等通過什么方式才能收錄我們的個人網(wǎng)站呢答案是搜索引擎的網(wǎng)絡(luò)爬蟲。網(wǎng)絡(luò)爬蟲是一個很形象的名詞,是屬于搜索引擎的工具,只有被這些網(wǎng)絡(luò)爬蟲爬過的內(nèi)容才有機會出現(xiàn)在對應(yīng)搜索引擎的搜索結(jié)果中。
不知道廣大程序員朋友們注意到一個現(xiàn)象么?使用百度是無法搜索到淘寶網(wǎng)的網(wǎng)頁。為什么會造成這種現(xiàn)象?這就要從網(wǎng)絡(luò)爬蟲說起了。
咱們程序員假如自己搭設(shè)個人網(wǎng)站,在上面分享少量自己的技術(shù)文章,面臨的一個重要問題就是讓搜索引擎能夠搜索到自己的個人網(wǎng)站,這樣才能讓更多的讀者訪問到。
而搜索引擎如百度和微軟Bing搜索,Google搜索等通過什么方式才能收錄我們的個人網(wǎng)站呢?
答案是搜索引擎的網(wǎng)絡(luò)爬蟲。 網(wǎng)絡(luò)爬蟲是一個很形象的名詞,是屬于搜索引擎的工具,只有被這些網(wǎng)絡(luò)爬蟲“爬過”的內(nèi)容才有機會出現(xiàn)在對應(yīng)搜索引擎的搜索結(jié)果中。
個人站長對網(wǎng)絡(luò)爬蟲是又愛又恨。一方面,網(wǎng)絡(luò)爬蟲可以讓我們的個人網(wǎng)站出現(xiàn)在搜索結(jié)果里,對我們的個人網(wǎng)站進行擴散。另一方面,假如網(wǎng)絡(luò)爬蟲太多太頻繁地訪問個人網(wǎng)站,會肯定程度上影響正常使用戶的請求解決。
于是就有了文章開頭我提到的百度搜不到淘寶產(chǎn)品信息的文章。
在瀏覽器里輸入https://www.taobao.com/robots...,
能看到淘寶網(wǎng)的一個文件robots.txt:
隨意選一段解釋:這個robots.txt的意思是,淘寶網(wǎng)做出了規(guī)定,假如網(wǎng)絡(luò)請求來自百度爬蟲(Baiduspider), 那么只允許(allow)百度爬蟲讀取article, oshtml和/ershou, 不允許讀取的是product。
User-agent: Baiduspider
Allow: /article
Allow: /oshtml
Allow: /ershou
Disallow: /product/
Disallow: /
那么淘寶網(wǎng)怎樣知道一個請求是來自百度爬蟲,還是來自真正的使用戶訪問呢?答案就是HTTP請求的User-agent字段。
下圖是我使用Chrome訪問淘寶網(wǎng)的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。假如有大量來自網(wǎng)絡(luò)爬蟲的讀取請求,Web服務(wù)器需要為每一個請求創(chuàng)立一個session。當Session數(shù)量變得巨大時,消耗的服務(wù)器內(nèi)存和資源也是巨大的。
因而,Tomcat對于來自網(wǎng)絡(luò)爬蟲的請求,用同一個session來解決。
我們打開Tomcat的源代碼來學習。
Tomcat的源代碼可以到其官網(wǎng)去下載:
https://tomcat.apache.org/dow...
點這個鏈接:
我下載的是7.0.90版本,只有7MB大。
這里需要注意,即便Spider顯式的傳了一個 sessionId過來,也會棄使用,而是根據(jù)client Ip 來進行判斷,即對于 相同的 Spider 只提供一個Session。
在下載好的源代碼文件夾里,找到這個子文件夾:apache-tomcat-7.0.90-srcjavaorgapachecatalinavalves
打開CrawlerSessionManagerValve.java:
可以看到從第192行代碼開始都是Tomcat使用來檢測進來的網(wǎng)絡(luò)請求能否是網(wǎng)絡(luò)爬蟲:
通過這個類里定義的正則表達式檢測HTTP請求的user-agent字段來判斷究竟該請求能否來自網(wǎng)絡(luò)爬蟲:
".[bB]ot.|.Yahoo! Slurp.|.Feedfetcher-Google."
一旦正則表達式在第205行匹配成功,將第206行的標志位設(shè)成true。
假如檢測到是網(wǎng)絡(luò)爬蟲,則使用clientIdSessionId.get這個API獲取Tomcat專門為網(wǎng)絡(luò)爬蟲預留的sessionId, 而后在第226行把該sessionId分配到進來的網(wǎng)絡(luò)爬蟲請求,這樣就避免了白費太多的資源申請session來服務(wù)海量的網(wǎng)絡(luò)爬蟲請求,節(jié)省了Web服務(wù)器的資源。
要獲取更多Jerry的原創(chuàng)技術(shù)文章,請關(guān)注公眾號"汪子熙"或者掃描下面二維碼:
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/11414.html
摘要:極簡爬蟲攻防戰(zhàn)紀要爬蟲是構(gòu)建搜索引擎的基礎(chǔ)負責抓取網(wǎng)頁信息并對網(wǎng)頁識別分類及過濾。爬蟲方終于鎖定了第一場戰(zhàn)役的勝局由于斷崖式技術(shù)的出現(xiàn),反爬方在瀏覽器識別戰(zhàn)役上望風披靡。經(jīng)過反爬方的精心運作,逐漸有效削弱了敵方的攻勢。 極簡爬蟲攻防戰(zhàn)紀要 ? ??爬蟲是構(gòu)建搜索引擎的基礎(chǔ), 負責抓取網(wǎng)頁信息并對網(wǎng)頁識別、分類及過濾。我們熟識的電商、搜索、新聞及各大門戶網(wǎng)站都有強大的爬蟲集群在每...
摘要:之前在學校曾經(jīng)用過的方法做過一些爬蟲腳本來玩,從正式轉(zhuǎn)前端之后,出于興趣,我對爬蟲和反爬蟲又做了一些了解,并且做了一些爬蟲攻防的實踐。爬蟲腳本通常會很頻繁的進行網(wǎng)絡(luò)請求,比如要爬取豆瓣排行榜的電影,就會連續(xù)發(fā)送個網(wǎng)絡(luò)請求。 之前在學校曾經(jīng)用過request+xpath的方法做過一些爬蟲腳本來玩,從ios正式轉(zhuǎn)前端之后,出于興趣,我對爬蟲和反爬蟲又做了一些了解,并且做了一些爬蟲攻防的實踐...
摘要:之前在學校曾經(jīng)用過的方法做過一些爬蟲腳本來玩,從正式轉(zhuǎn)前端之后,出于興趣,我對爬蟲和反爬蟲又做了一些了解,并且做了一些爬蟲攻防的實踐。爬蟲腳本通常會很頻繁的進行網(wǎng)絡(luò)請求,比如要爬取豆瓣排行榜的電影,就會連續(xù)發(fā)送個網(wǎng)絡(luò)請求。 之前在學校曾經(jīng)用過request+xpath的方法做過一些爬蟲腳本來玩,從ios正式轉(zhuǎn)前端之后,出于興趣,我對爬蟲和反爬蟲又做了一些了解,并且做了一些爬蟲攻防的實踐...
摘要:未授權(quán)的爬蟲抓取程序是危害原創(chuàng)內(nèi)容生態(tài)的一大元兇,因此要保護網(wǎng)站的內(nèi)容,首先就要考慮如何反爬蟲。反爬蟲的銀彈目前的反抓取機器人檢查手段,最可靠的還是驗證碼技術(shù)。機器人協(xié)議除此之外,在爬蟲抓取技術(shù)領(lǐng)域還有一個白道的手段,叫做協(xié)議。 本文首發(fā)于我的個人博客,同步發(fā)布于SegmentFault專欄,非商業(yè)轉(zhuǎn)載請注明出處,商業(yè)轉(zhuǎn)載請閱讀原文鏈接里的法律聲明。 web是一個開放的平臺,這也奠定了...
閱讀 844·2023-04-25 21:21
閱讀 3226·2021-11-24 09:39
閱讀 3067·2021-09-02 15:41
閱讀 1993·2021-08-26 14:13
閱讀 1827·2019-08-30 11:18
閱讀 2768·2019-08-29 16:25
閱讀 506·2019-08-28 18:27
閱讀 1580·2019-08-28 18:17