近期,百度搜索資源平臺(tái)頻繁接收到開(kāi)發(fā)者關(guān)于“如何準(zhǔn)確識(shí)別百度搜索蜘蛛身份”的咨詢。隨著搜索引擎爬蟲(chóng)技術(shù)的迭代,準(zhǔn)確甄別官方爬蟲(chóng)對(duì)于保障網(wǎng)站數(shù)據(jù)安全、優(yōu)化爬蟲(chóng)訪問(wèn)策略、提升網(wǎng)站內(nèi)容收錄效率至關(guān)重要。本文將結(jié)合技術(shù)規(guī)范與實(shí)操場(chǎng)景,提供系統(tǒng)化的百度蜘蛛識(shí)別方法。
User-Agent(UA)是爬蟲(chóng)身份的核心標(biāo)識(shí),其字符串結(jié)構(gòu)具有明確的應(yīng)用場(chǎng)景特征。若UA中不包含“Baiduspider”標(biāo)識(shí)或其格式不符合百度官方規(guī)范,則可初步判定該爬蟲(chóng)非百度搜索官方爬蟲(chóng)。當(dāng)前百度蜘蛛U(xiǎn)A覆蓋移動(dòng)端、PC端及小程序三大場(chǎng)景,具體格式及特征如下:
移動(dòng)端蜘蛛U(xiǎn)A需適配不同操作系統(tǒng),典型示例如下:
1. Android端:`Mozilla/5.0 (Linux; U; Android 4.2.2; zh-cn;) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile Safari/10600.6.3 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)`,包含“Android”系統(tǒng)標(biāo)識(shí)及“Baiduspider/2.0”版本號(hào);
2. iOS端:`Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1 (compatible; Baiduspider-render/2.0; +http://www.baidu.com/search/spider.html)`,通過(guò)“iPhone”及“Baiduspider-render”標(biāo)識(shí)區(qū)分渲染型蜘蛛。
PC端蜘蛛U(xiǎn)A結(jié)構(gòu)相對(duì)簡(jiǎn)潔,核心為“Baiduspider”標(biāo)識(shí):
1. 基礎(chǔ)抓取型:`Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)`;
2. 渲染抓取型:`Mozilla/5.0 (compatible; Baiduspider-render/2.0; +http://www.baidu.com/search/spider.html)`,通過(guò)“render”標(biāo)識(shí)區(qū)分支持JavaScript渲染的蜘蛛。
小程序蜘蛛U(xiǎn)A需額外包含“Smartapp”標(biāo)識(shí),如:`Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1 (compatible; Baiduspider-render/2.0; Smartapp; +http://www.baidu.com/search/spider.html)`,用于區(qū)分小程序場(chǎng)景下的內(nèi)容抓取。
UA信息可能被偽造,需通過(guò)雙向DNS解析認(rèn)證進(jìn)行二次驗(yàn)證,確保IP來(lái)源的真實(shí)性。該流程包含反向DNS解析與正向DNS驗(yàn)證兩個(gè)關(guān)鍵步驟:
通過(guò)反向DNS查詢(PTR記錄),將訪問(wèn)服務(wù)器的IP地址映射為域名,判斷是否屬于百度官方域名范圍。百度蜘蛛的IP反向解析結(jié)果中,主機(jī)名(hostname)均以“.baidu.com”或“.baidu.jp”為后綴,非此后綴則可確認(rèn)為非官方爬蟲(chóng)。不同操作系統(tǒng)的執(zhí)行命令如下:
- Linux系統(tǒng):執(zhí)行`host xxx.xxx.xxx.xxx`(IP地址),若返回結(jié)果包含“.baidu.com”或“.baidu.jp”,則表明IP屬于百度蜘蛛;
- Windows/IBM OS/2系統(tǒng):打開(kāi)命令提示符,輸入`nslookup xxx.xxx.xxx.xxx`,解析結(jié)果中出現(xiàn)百度域名后綴則為有效;
- macOS系統(tǒng):使用`dig -x xxx.xxx.xxx.xxx`命令,通過(guò)返回的PTR記錄確認(rèn)域名歸屬。
對(duì)反向查詢得到的域名進(jìn)行正向DNS解析(A記錄),驗(yàn)證該域名對(duì)應(yīng)的IP地址是否與日志中原始訪問(wèn)IP完全一致。若IP地址匹配,則可最終確認(rèn)該爬蟲(chóng)為百度搜索官方蜘蛛;若不一致,則為偽造爬蟲(chóng)。
以IP 111.206.198.69為例:
1. 反向DNS解析:`host 111.206.198.69`,返回結(jié)果為`69.198.206.111.in-addr.arpa domain name pointer baiduspider-111-206-198-69.crawl.baidu.com.`,域名包含“baidu.com”;
2. 正向DNS驗(yàn)證:`host baiduspider-111-206-198-69.crawl.baidu.com`,返回`baiduspider-111-206-198-69.crawl.baidu.com has address 111.206.198.69`,IP與原始訪問(wèn)地址一致,確認(rèn)該蜘蛛為百度官方爬蟲(chóng)。
通過(guò)UA信息初步篩查與雙向DNS解析認(rèn)證的雙重驗(yàn)證,可有效精準(zhǔn)識(shí)別百度搜索蜘蛛。開(kāi)發(fā)者建議定期關(guān)注百度搜索資源平臺(tái)發(fā)布的《搜索引擎爬蟲(chóng)協(xié)議》,及時(shí)掌握UA格式與域名規(guī)則的更新,以應(yīng)對(duì)技術(shù)演進(jìn)帶來(lái)的識(shí)別需求變化。該方法不僅適用于常規(guī)網(wǎng)站,對(duì)移動(dòng)端、小程序等多元場(chǎng)景的爬蟲(chóng)識(shí)別同樣具備普適性,為網(wǎng)站安全與運(yùn)營(yíng)優(yōu)化提供堅(jiān)實(shí)的技術(shù)支撐。