如何準(zhǔn)確判斷請求是搜索引擎爬蟲(蜘蛛)發(fā)出的請求
網(wǎng)站經(jīng)常會被各種爬蟲光顧,有的是搜索引擎爬蟲,有的不是,通常情況下這些爬蟲都有UserAgent,而我們知道UserAgent是可以偽裝的,UserAgent的本質(zhì)是Http請求頭中的一個(gè)選項(xiàng)設(shè)置,通過編程的方式可以給請求設(shè)置任意的UserAgent。
所以通過UserAgent判斷請求的發(fā)起者是否是搜索引擎爬蟲(蜘蛛)的方式是不靠譜的,更靠譜的方法是通過請求者的ip對應(yīng)的host主機(jī)名是否是搜索引擎自己家的host的方式來判斷。
要獲得ip的host,在windows下可以通過nslookup命令,在linux下可以通過host命令來獲得,例如:

這里我在windows下執(zhí)行了nslookup ip 的命令,從上圖可以看到這個(gè)ip的主機(jī)名是crawl-66-249-64-119.googlebot.com。 這說明這個(gè)ip是一個(gè)google爬蟲,google爬蟲的域名都是 xxx.googlebot.com.
我們也可以通過python程序的方式來獲得ip的host信息,代碼如下:
import socket def getHost(ip): try: result=socket.gethostbyaddr(ip) if result: return result[0], None except socket.herror,e: return None, e.message
上述代碼使用了socket模塊的gethostbyaddr的方法獲得ip地址的主機(jī)名。
常用蜘蛛的域名都和搜索引擎官網(wǎng)的域名相關(guān),例如:
百度的蜘蛛通常是baidu.com或者baidu.jp的子域名
google爬蟲通常是googlebot.com的子域名
微軟bing搜索引擎爬蟲是search.msn.com的子域名
搜狗蜘蛛是crawl.sogou.com的子域名
基于以上原理,我寫了一個(gè)工具頁面提供判斷ip是否是真實(shí)搜索引擎的工具頁面,該頁面上提供了網(wǎng)頁判斷的工具和常見的google和bing的搜索引擎爬蟲的ip地址。
附帶常見搜索引擎蜘蛛的IP段:
| 蜘蛛名稱 | IP地址 |
|---|---|
| Baiduspider |
202.108.11.* 220.181.32.* 58.51.95.* 60.28.22.* 61.135.162.* 61.135.163.* 61.135.168.* |
| YodaoBot |
202.108.7.215 202.108.7.220 202.108.7.221 |
| Sogou web spider |
219.234.81.* 220.181.61.* |
| Googlebot |
203.208.60.* |
| Yahoo! Slurp |
202.160.181.* 72.30.215.* 74.6.17.* 74.6.22.* |
| Yahoo ContentMatch Crawler |
119.42.226.* 119.42.230.* |
| Sogou-Test-Spider |
220.181.19.103 220.181.26.122 |
| Twiceler |
38.99.44.104 64.34.251.9 |
| Yahoo! Slurp China |
202.160.178.* |
| Sosospider | 124.115.0.* |
| CollapsarWEB qihoobot |
221.194.136.18 |
| NaverBot |
202.179.180.45 |
| Sogou Orion spider |
220.181.19.106 220.181.19.74 |
| Sogou head spider |
220.181.19.107 |
| SurveyBot |
216.145.5.42 64.246.165.160 |
| Yanga WorldSearch Bot v |
77.91.224.19 91.205.124.19 |
| baiduspider-mobile-gate |
220.181.5.34 61.135.166.31 |
| discobot |
208.96.54.70 |
| ia_archiver | 209.234.171.42 |
| msnbot |
65.55.104.209 65.55.209.86 65.55.209.96 |
| sogou in spider |
220.181.19.216 |
ps:https協(xié)議網(wǎng)頁能夠被搜索引擎收錄嗎
百度現(xiàn)在只能收錄少部分的https,大部分的https網(wǎng)頁無法收錄。
不過我查詢了google資料,Google能夠比較好地收錄https協(xié)議的網(wǎng)站。
所以如果你的網(wǎng)站是中文的,而且比較關(guān)注搜索引擎自然排名流量這塊,建議盡量不要將所有內(nèi)容都放到https中去加密去。
可考慮的方式是:
1、對于需要加密傳遞的數(shù)據(jù),使用https,比如用戶登錄以及用戶登錄后的信息;
2、對于普通的新聞、圖片,建議使用http協(xié)議來傳輸;
3、網(wǎng)站首頁建議使用http協(xié)議的形式。
相關(guān)文章
python實(shí)現(xiàn)微信自動回復(fù)功能
這篇文章主要為大家詳細(xì)介紹了使用python實(shí)現(xiàn)微信自動回復(fù)功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04
Python裝飾器實(shí)現(xiàn)方法及應(yīng)用場景詳解
這篇文章主要介紹了Python裝飾器實(shí)現(xiàn)方法及應(yīng)用場景詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03
Python數(shù)據(jù)可視化編程通過Matplotlib創(chuàng)建散點(diǎn)圖代碼示例
這篇文章主要介紹了Python數(shù)據(jù)可視化編程通過Matplotlib創(chuàng)建散點(diǎn)圖實(shí)例,具有一定借鑒價(jià)值,需要的朋友可以參考下。2017-12-12
Python統(tǒng)計(jì)python文件中代碼,注釋及空白對應(yīng)的行數(shù)示例【測試可用】
這篇文章主要介紹了Python統(tǒng)計(jì)python文件中代碼,注釋及空白對應(yīng)的行數(shù),涉及Python針對py文件的讀取、遍歷、判斷、統(tǒng)計(jì)等相關(guān)操作技巧,需要的朋友可以參考下2018-07-07
Python?matplotlib?繪制散點(diǎn)圖詳解建議收藏
在數(shù)據(jù)統(tǒng)計(jì)圖表中,有一種圖表是散列點(diǎn)分布在坐標(biāo)中,反應(yīng)數(shù)據(jù)隨著自變量變化的趨勢。這篇文章主要介紹了如何通過matplotlib繪制散點(diǎn)圖,需要的朋友可以參考一下2021-12-12
Python 函數(shù)編編程的三大法寶map+filter+reduce分享
這篇文章主要介紹了Python 函數(shù)編編程的三大法寶map,filter,reduce的分享,python利用 map 在一個(gè)可迭代對象的各項(xiàng)上調(diào)用函數(shù)的工具;利用 filter 來過濾項(xiàng);利用 reduce 把函數(shù)作用在成對的項(xiàng)上來運(yùn)行結(jié)果的工具,下面我們就來對這三者進(jìn)行詳細(xì)的介紹,需要的朋友可以參考下2022-03-03

