“robots.txt”文件作為搜索引擎爬蟲訪問網(wǎng)站時(shí)的協(xié)議指令文件,其內(nèi)容由一條或多條獨(dú)立記錄構(gòu)成,記錄之間以空行進(jìn)行明確分隔,結(jié)束符可為CR(回車符)、CR/NL(回車換行符)或NL(換行符)。每條記錄遵循嚴(yán)格的字段命名規(guī)范,其基本結(jié)構(gòu)為“字段名:可選空格值可選空格”,其中字段名與值之間通過冒號(hào)分隔,前后允許存在空格字符以提升格式靈活性。文件支持使用井號(hào)(#)進(jìn)行注釋,注釋行為從井號(hào)開始直至該行結(jié)束,注釋內(nèi)容不會(huì)被搜索引擎爬蟲解析執(zhí)行,其使用慣例與UNIX系統(tǒng)中的注釋規(guī)則保持一致,便于開發(fā)者對(duì)爬取規(guī)則進(jìn)行說明和標(biāo)注。
該文件的核心規(guī)則通常以一行或多行User-agent字段開始,后跟若干Disallow字段,必要時(shí)可搭配Allow字段共同作用。User-agent字段用于指定受robots.txt協(xié)議約束的搜索引擎爬蟲名稱,其值對(duì)應(yīng)具體的爬蟲標(biāo)識(shí)符(如Googlebot、Bingbot等)。當(dāng)文件中包含多條User-agent記錄時(shí),表明多個(gè)爬蟲將分別遵循對(duì)應(yīng)的訪問規(guī)則,每條User-agent記錄獨(dú)立作用于其指定的爬蟲。若將該字段的值設(shè)為星號(hào)(),則表示協(xié)議對(duì)所有搜索引擎爬蟲均生效,需特別注意的是,文件中“User-agent: ”記錄僅能存在一條,以確保規(guī)則的統(tǒng)一性。
Disallow字段是定義訪問限制的核心,其值用于指定禁止爬蟲訪問的URL路徑,既可以是完整路徑(如“/admin/”),也可以是路徑前綴(如“/help”)。爬蟲將嚴(yán)格禁止訪問所有以Disallow字段值開頭的URL,例如“Disallow:/help”將同時(shí)覆蓋/help.html、/help/index.html等以“/help”開頭的所有路徑;而“Disallow:/help/”則僅禁止/help/index.html等以“/help/”開頭的路徑,但不禁止/help.html。若某條Disallow記錄的值為空(即“Disallow:”),則表示該網(wǎng)站的所有路徑均允許被爬蟲訪問,robots.txt文件中必須至少包含一條Disallow記錄,以確保訪問規(guī)則的明確性;若文件完全為空,則等同于對(duì)所有爬蟲開放整個(gè)網(wǎng)站的訪問權(quán)限。
Allow字段用于定義允許爬蟲訪問的URL路徑,與Disallow類似,其值可為完整路徑或路徑前綴,所有以Allow字段值開頭的URL均被明確授權(quán)訪問。需知網(wǎng)站所有URL默認(rèn)處于允許訪問狀態(tài),因此Allow字段通常需與Disallow字段協(xié)同配置,通過“先禁止后允許”的策略實(shí)現(xiàn)精細(xì)化的訪問控制,例如通過“Disallow: /”禁止所有路徑,再通過“Allow: /public/”開放公共目錄。需特別強(qiáng)調(diào)的是,Disallow與Allow記錄的排列順序具有關(guān)鍵意義,爬蟲將按照文件中的記錄順序進(jìn)行匹配,一旦發(fā)現(xiàn)某條規(guī)則與目標(biāo)URL匹配(無論是Allow還是Disallow),即依據(jù)該規(guī)則決定是否訪問,后續(xù)規(guī)則不再生效。
為提升規(guī)則的靈活性,robots.txt協(xié)議支持使用通配符“”和“$”實(shí)現(xiàn)模糊匹配。其中,“”可匹配0個(gè)或任意數(shù)量的字符,如“Disallow:/.jpg”將禁止所有.jpg圖片路徑;“$”則用于匹配行結(jié)束符,如“Disallow:/$”將禁止所有以“/”結(jié)尾的路徑。通配符的使用能幫助開發(fā)者更高效地定義復(fù)雜的訪問控制策略,避免冗余的規(guī)則列舉。