
PerplexityBot 三天抓了全站GPTBot 只來了一次AI 爬蟲日志行為差異排查記TL;DRPerplexityBot 兩周抓取 3,471 次GPTBot 僅 1 次差異源于訓(xùn)練數(shù)據(jù)采集型與實(shí)時檢索增強(qiáng)型引擎的抓取邏輯不同前者低頻全站廣度后者突發(fā)、按需、查詢驅(qū)動。robots.txt 放行 ≠ 會被引用它只是準(zhǔn)入門檻不是抓取排程抓取fetch和引用cite之間還隔著引擎?zhèn)鹊馁|(zhì)量評估。日志分析必須用源站全量日志或邊緣日志CDN 回源日志會因緩存命中丟失請求與 UA只能當(dāng)參考同時要做正向 DNS 反查別被偽造 UA 騙了。優(yōu)化重點(diǎn)是內(nèi)容可抓取性、結(jié)構(gòu)化信號與持續(xù)觀測服務(wù)端渲染、sitemap/lastmod、Schema.org 標(biāo)注、llms.txt加上每周跑一次的日志看板。適用讀者負(fù)責(zé)企業(yè)官網(wǎng)運(yùn)維與內(nèi)容運(yùn)營的工程師、正在做生成式引擎優(yōu)化Generative Engine Optimization, GEO的技術(shù)負(fù)責(zé)人以及所有想搞清楚「AI 搜索到底有沒有來抓我的站」的人。兩周日志同一個站點(diǎn)PerplexityBot 打了 3,471 次請求幾乎把全站翻了個底朝天GPTBot 只來了 1 次抓完 robots.txt 就再沒露面。差距大到不像同一個互聯(lián)網(wǎng)上的爬蟲——而這背后是兩類 AI 引擎完全不同的抓取邏輯。這篇文章會帶你用可復(fù)現(xiàn)的日志分析方法一步步還原這次排查并給出能直接落地的優(yōu)化清單。一個來自本地連鎖企業(yè)的問題場景是這樣的一家本地連鎖服務(wù)企業(yè)門店分布在一個城市及周邊區(qū)縣官網(wǎng)內(nèi)容不算多兩百多個頁面。運(yùn)營在 Perplexity 上搜自家門店的服務(wù)詞發(fā)現(xiàn)回答里引用了官網(wǎng)換 ChatGPT 搜索問同樣的問題回答里卻完全沒有這個站。團(tuán)隊(duì)的第一反應(yīng)是「是不是被屏蔽了」第二反應(yīng)是來找我這個管運(yùn)維的朋友幫忙看。我們的判斷是與其猜不如直接看日志。Web 服務(wù)器日志里躺著一手證據(jù)——各家 AI 爬蟲到底來沒來、來了多少次、抓了什么、抓完走了沒有。這篇把這兩周的排查過程、觀測數(shù)據(jù)和踩過的坑整理出來操作部分全部可復(fù)現(xiàn)。核心背景AI 搜索引用一個網(wǎng)站的前提是它能抓到、且認(rèn)為值得抓日志是驗(yàn)證這件事最可靠的一手入口。準(zhǔn)備工作先把日志按 AI 爬蟲 UA 拆開User-AgentUA是 HTTP 請求頭里聲明客戶端身份的字段Nginx 的 combined 日志格式會把它記在雙引號包裹的字段里。主流 AI 爬蟲都有可識別的 UA 標(biāo)識OpenAI 的 GPTBot、Anthropic 的 ClaudeBot、Perplexity 的 PerplexityBot、Google 的 Google-Extended控制 Gemini 訓(xùn)練數(shù)據(jù)來源的開關(guān)型 UA、字節(jié)跳動的 Bytespider。分析窗口取 2026-09-07 到 2026-09-20 兩周環(huán)境是單臺 Nginx 1.24日志默認(rèn) combined 格式。整個分析可以抽象成一條流水線先看全貌可信存疑Nginx 原始 access.log按時間窗切片UA 正則初篩 AI 爬蟲UA 可信?正向 DNS 驗(yàn)證標(biāo)記為偽造或掃描器統(tǒng)計請求數(shù)/路徑分布/狀態(tài)碼輸出行為畫像與優(yōu)化清單落地的統(tǒng)計命令如下可以直接抄走改路徑用# 前置條件Nginx 1.24combined 日志格式access.log 在 /var/log/nginx/ 下# 時間窗2026-09-07 至 2026-09-20按日期切好的日志文件合并為 access.log# 第一步統(tǒng)計各 AI 爬蟲 UA 的兩周請求數(shù)UA 在雙引號包裹的字段里grep-hEGPTBot|ClaudeBot|PerplexityBot|Google-Extended|Bytespideraccess.log\|awk-F{print $6}|sort|uniq-c|sort-rn# 第二步拆 PerplexityBot 的抓取路徑分布 Top 20看它到底在抓什么grepPerplexityBotaccess.log|awk{print $7}|sort|uniq-c|sort-rn|head-20# 第三步狀態(tài)碼分布404 占比過高說明 sitemap 或外鏈里存在死鏈grepGPTBotaccess.log|awk{print $9}|sort|uniq-c# 第四步按天統(tǒng)計抓取趨勢判斷是勻速爬還是突發(fā)式抓取awk/PerplexityBot/ {print $4}access.log|cut-d:-f1|sort|uniq-c跑完第一輪統(tǒng)計結(jié)論比預(yù)想刺激得多兩周里 PerplexityBot 打了三千多次幾乎把全站能抓的都抓了一遍GPTBot 只出現(xiàn)了 1 次抓的還是 robots.txt。差別大到不像同一個互聯(lián)網(wǎng)上的爬蟲。一手觀測數(shù)據(jù)單站兩周的 AI 爬蟲行為畫像先交代口徑以下數(shù)據(jù)來自單臺服務(wù)器、單一站點(diǎn)時間窗 2026-09-07 至 2026-09-20樣本量有限只代表這一類內(nèi)容結(jié)構(gòu)不復(fù)雜的本地服務(wù)站的情形不要直接外推到資訊站或電商站。爬蟲 UA兩周請求數(shù)最深抓取層級404 占比robots.txt 請求次數(shù)內(nèi)容更新后復(fù)抓延遲PerplexityBot3,4716 級詳情頁與參數(shù)頁2.1%224 小時內(nèi)Bytespider9,8609 級6.8%1無明顯規(guī)律ClaudeBot6044 級1.2%2約 3 天GPTBot11 級僅 robots.txt0%1一周內(nèi)未復(fù)抓Google-Extended0無無0無幾個數(shù)字值得展開說一下。PerplexityBot 的抓取路徑高度集中在「服務(wù)詳情頁」和「門店地址頁」兩類Top 20 路徑占了總請求的 61%。它的抓取有明顯節(jié)奏不是勻速而是每隔幾小時來一波突發(fā)一波幾十個請求集中打完。我們當(dāng)時猜背后是查詢驅(qū)動的按需抓取這個猜測和后面的原理分析能對上。把 PerplexityBot 兩周內(nèi)按天的請求量畫成柱狀圖脈沖式節(jié)奏一目了然PerplexityBot 兩周按天請求量2026-09-07 至 2026-09-2009-0709-0809-0909-1009-1109-1209-1309-1409-1509-1609-1709-1809-1909-209008007006005004003002001000請求數(shù)對比之下GPTBot 兩周只有 1 次請求柱狀圖里幾乎看不見。PerplexityBot 的流量不是均勻鋪開的而是集中在幾個高峰日——高峰日單日請求量能到 800 上下低谷日只有幾十。這種「平時安靜、用戶一問就爆發(fā)」的形態(tài)正是查詢驅(qū)動抓取的典型特征有相關(guān)查詢命中才觸發(fā)實(shí)時抓取問的人越多、抓得越猛。Bytespider 是另一種畫風(fēng)請求量巨大路徑廣度也大404 占比 6.8%明顯在掃一些被外鏈工具暴露過的舊參數(shù) URL。它的行為更像傳統(tǒng)搜索引擎的廣度抓取對站點(diǎn)結(jié)構(gòu)干凈程度的要求也高。ClaudeBot 溫和得多請求數(shù)不高路徑集中在核心欄目頁404 很少。GPTBot 那一次請求很有意思只抓了 robots.txt 就走了之后兩周再沒出現(xiàn)。結(jié)合 OpenAI 官方文檔的說法GPTBot 的抓取有自己的調(diào)度節(jié)奏低頻不等于異常但站點(diǎn)側(cè)確實(shí)無法從日志里觀察到它的索引意圖。為方便對照把兩類抓取目的的差異也整理成一張表對比項(xiàng)訓(xùn)練數(shù)據(jù)采集型GPTBot、ClaudeBot 等實(shí)時檢索增強(qiáng)型PerplexityBot 等抓取目的收集語料用于模型訓(xùn)練容忍延遲為回答當(dāng)前查詢獲取新鮮證據(jù)抓取節(jié)奏低頻、周期性、全站廣度突發(fā)、按需、查詢驅(qū)動對時效的敏感度低舊內(nèi)容也有訓(xùn)練價值高過期內(nèi)容直接降低引用概率復(fù)抓觸發(fā)調(diào)度器周期計劃用戶查詢命中且索引證據(jù)不足站點(diǎn)側(cè)可感知信號日志里長期低頻出現(xiàn)突發(fā)流量加回答中帶引用鏈接從日志到結(jié)論UA 反查別被偽造 UA 騙了統(tǒng)計到這一步還有一個隱患UA 是客戶端自己聲明的誰都能寫PerplexityBot。日志里就混著一個自稱 AI 爬蟲的可疑客戶端兩周打了四千多次。要把它揪出來得做正向 DNS 驗(yàn)證——官方爬蟲的來源 IP 反向解析出來的域名屬于引擎自己的域名段而且正向解析回去要能對上原 IP。驗(yàn)證代碼只用標(biāo)準(zhǔn)庫# 依賴僅 Python 標(biāo)準(zhǔn)庫socket3.8 可直接運(yùn)行# 場景從日志里提出 AI 爬蟲請求的來源 IP逐個做正向 DNS 驗(yàn)證importsocket# 各引擎官方公布的爬蟲域名后綴反解結(jié)果必須落在這些后綴里才算數(shù)TRUST_SUFFIX(openai.com,anthropic.com,perplexity.ai)defverify_bot_ip(ip:str)-bool:# 第一步把來源 IP 反向解析成主機(jī)名失敗即視為可疑try:host,_,_socket.gethostbyaddr(ip)except(socket.herror,socket.gaierror):returnFalse# 第二步把主機(jī)名正向解析回 IP要求原 IP 在解析結(jié)果集合里resolved{i[4][0]foriinsocket.getaddrinfo(host,None)}# 第三步域名后綴必須是官方網(wǎng)段兩個條件同時滿足才通過returnhost.endswith(TRUST_SUFFIX)andipinresolved各引擎官方文檔都寫明了自己的驗(yàn)證方法見文末參考建議把這套驗(yàn)證固化成腳本每次日志分析先跑一遍再進(jìn)統(tǒng)計。我們靠它排掉了兩個偽裝 UA其中一個反解出來是營銷數(shù)據(jù)公司的域名。踩坑復(fù)盤四個真實(shí)踩過的坑坑一CDN 回源日志里丟 UA這家企業(yè)官網(wǎng)前面掛了國內(nèi)某 CDN。排查第一版結(jié)論明顯不對——日志里 AI 爬蟲請求數(shù)少得離譜。對了一個小時才發(fā)現(xiàn)我們看的是 CDN 回源日志部分靜態(tài)資源請求在邊緣節(jié)點(diǎn)就命中了緩存回源日志里根本沒有這些請求自然也沒有 UA。結(jié)論做 AI 爬蟲分析必須看源站全量日志或者從 CDN 控制臺導(dǎo)出邊緣日志回源日志只能當(dāng)參考不能當(dāng)證據(jù)。這個問題在純靜態(tài)站上尤其隱蔽靜態(tài)資源占比高、回源率低日志缺的正是大頭。對比項(xiàng)源站全量日志CDN 回源日志是否包含邊緣緩存命中請求包含完整記錄每一次請求不包含緩存命中請求直接缺失UA 字段完整性完整所有請求都帶 UA不完整緩存命中部分連 UA 都沒有靜態(tài)資源占比高時的數(shù)據(jù)缺失程度無缺失全量可統(tǒng)計缺失嚴(yán)重靜態(tài)資源占比越高缺得越多適合作為證據(jù)的結(jié)論類型請求數(shù)、路徑分布、404 占比等全量統(tǒng)計結(jié)論僅適合觀察回源率、緩存命中率等邊緣側(cè)指標(biāo)一句話總結(jié)分析 AI 爬蟲必須用源站全量日志或邊緣日志回源日志僅可作參考??佣A 大小寫混用第一版 grep 用小寫匹配漏掉了一部分請求。抓回來的日志里真實(shí)出現(xiàn)過的寫法有PerplexityBot/1.0也有極個別全小寫的perplexitybot——后者后來驗(yàn)證是偽造。處理辦法識別環(huán)節(jié)統(tǒng)一用grep -i寬松匹配驗(yàn)證環(huán)節(jié)再用上一節(jié)的 DNS 反查嚴(yán)格把關(guān)兩個環(huán)節(jié)分開既不漏也不臟??尤褷I銷掃描器當(dāng) AI 爬蟲日志里有個 UA 形如Mozilla/5.0 (compatible; AIBotPro/2.0)的客戶端名字帶 AI兩周四千多次請求一開始被算進(jìn)了 AI 爬蟲統(tǒng)計。反向 DNS 一跑IP 歸屬是某個營銷數(shù)據(jù)公司跟任何 AI 引擎都對不上。類似的還有各種 SEO 工具箱爬蟲名字蹭 AI 關(guān)鍵詞的多半是掃描器不是真在做 AI 檢索的抓取。結(jié)論UA 聲明可以隨便寫IP 反向解析結(jié)果才相對可信。沒有官方網(wǎng)段背書的 UA一律先標(biāo)記、不進(jìn)統(tǒng)計??铀膔obots.txt 放行 ≠ 會被引用運(yùn)維改 robots.txt 放行 GPTBot 和 PerplexityBot 之后預(yù)期是「放行即引用」。兩周過去Perplexity 的抓取量上來了回答里也開始引用GPTBot 還是幾乎不來。這里的認(rèn)知偏差在于robots.txt 只是準(zhǔn)入門檻不是抓取排程。放行之后來不來、多久來由對方調(diào)度策略和站點(diǎn)內(nèi)容的相關(guān)性、質(zhì)量信號共同決定。對實(shí)時檢索型引擎還多一層抓了頁面也不代表會引用抓取fetch和引用cite之間隔著質(zhì)量評估。這一步發(fā)生在引擎?zhèn)日军c(diǎn)只能靠內(nèi)容質(zhì)量間接影響。這也是 GEO 實(shí)操里最容易想岔的一環(huán)——把抓取當(dāng)成引用的前置條件即可別當(dāng)成承諾。原理剖析為什么不同 AI 引擎的抓取策略差這么多底層原因在兩類引擎對「抓取」的定義不同。訓(xùn)練數(shù)據(jù)采集型的抓取服務(wù)于模型下一次訓(xùn)練。語料收集是批量、離線、低頻的一次全量抓取可能間隔數(shù)周甚至數(shù)月調(diào)度器關(guān)心覆蓋率而不是時效。這解釋了 GPTBot 單次訪問 robots.txt 后的長期沉默——它的抓取計劃由 OpenAI 側(cè)調(diào)度決定跟單個站點(diǎn)的內(nèi)容更新節(jié)奏關(guān)系不大。實(shí)時檢索增強(qiáng)Retrieval-Augmented Generation, RAG型的抓取服務(wù)于眼前這條正在拼裝的回答。用戶在 Perplexity 上問「附近哪家門店做 XX 服務(wù)」引擎先查自有索引證據(jù)不夠新或不夠準(zhǔn)才觸發(fā)爬蟲實(shí)時抓一批候選頁。所以 PerplexityBot 的流量是脈沖式的有用戶問到相關(guān)話題才有流量問的人越多抓得越勤。一個反直覺的推論是對實(shí)時檢索型引擎長尾站點(diǎn)反而可能拿到更多按需抓取的機(jī)會因?yàn)殚L尾查詢在索引里缺新鮮證據(jù)引擎更依賴即時抓取補(bǔ)位。把實(shí)時檢索型引擎從抓取到引用的完整鏈路畫出來有無或已過期是否用戶提出本地服務(wù)類問題引擎判定需要新鮮網(wǎng)頁證據(jù)自有索引是否有可用片段片段進(jìn)入回答并標(biāo)注引用來源調(diào)度爬蟲實(shí)時抓取候選頁頁面可抓取且質(zhì)量達(dá)標(biāo)?換下一候選頁 該頁本輪失去曝光引用帶來真實(shí)點(diǎn)擊 反哺質(zhì)量判斷 影響復(fù)抓頻率從這條鏈路能讀出站點(diǎn)側(cè)的三個杠桿內(nèi)容可抓取性決定頁面能否進(jìn)入候選池內(nèi)容質(zhì)量與新鮮度決定能否在質(zhì)量評估環(huán)節(jié)勝出引用之后帶來的真實(shí)點(diǎn)擊反哺引擎對站點(diǎn)質(zhì)量的判斷進(jìn)而影響復(fù)抓頻率。GEO 的全部技術(shù)動作本質(zhì)上都在撬這三個杠桿。優(yōu)化動作清單日志結(jié)論怎么落地基于兩周觀測我們給這家企業(yè)列了一份按優(yōu)先級排序的清單。三周后復(fù)查PerplexityBot 的抓取深度從 6 級漲到 8 級404 占比降到 0.9%回答中的引用次數(shù)也有增長。清單如下內(nèi)容可抓取性優(yōu)先級高核心服務(wù)頁改為服務(wù)端渲染或靜態(tài)化確認(rèn)瀏覽器禁用 JS 后正文仍完整可讀詳情頁標(biāo)題和首段寫清「服務(wù)類目 服務(wù)城市 門店名」給實(shí)時檢索型引擎的片段抽取留干凈的錨點(diǎn)修掉 6.8% 的 404 噪聲已下線頁面配 301 跳轉(zhuǎn)參數(shù) URL 在 robots.txt 里 disallow別讓抓取預(yù)算耗在死鏈上。sitemap 與結(jié)構(gòu)化信號sitemap.xml 拆成「服務(wù)」「門店」兩份內(nèi)容更新后及時更新 lastmodPerplexityBot 復(fù)抓延遲在 24 小時以內(nèi)說明它對 sitemap 變更是敏感的用 Schema.org 的 LocalBusiness 標(biāo)注門店名、地址、營業(yè)時間這一步不是給爬蟲看的是給引擎做實(shí)體對齊用的。llms.txt 與 robots 策略站點(diǎn)根目錄加 llms.txt把核心服務(wù)頁、門店頁鏈接和一句站點(diǎn)定位描述放進(jìn)去給愿意讀它的引擎一個導(dǎo)覽robots.txt 對主流 AI 爬蟲保持放行Bytespider 是否放行按內(nèi)容授權(quán)意愿自行決策——它抓取量最大、帶寬占用最實(shí)在值不值得放取決于你對訓(xùn)練數(shù)據(jù)授權(quán)的態(tài)度。持續(xù)觀測把前面的統(tǒng)計命令寫成每周跑一次的定時任務(wù)請求數(shù)、404 占比、路徑分布三項(xiàng)指標(biāo)進(jìn)內(nèi)部看板某 UA 突然歸零這類異常當(dāng)天就能發(fā)現(xiàn)。把 GEO 優(yōu)化動作和傳統(tǒng) SEO 動作放在一起對照兩套邏輯的差異會更直觀對比項(xiàng)GEO 優(yōu)化動作傳統(tǒng) SEO 動作目標(biāo)讓 AI 引擎在回答中引用你的內(nèi)容讓搜索引擎在結(jié)果頁里收錄并排名靠前核心指標(biāo)引用次數(shù)、抓取深度、復(fù)抓頻率、404 占比關(guān)鍵詞排名、收錄量、外鏈數(shù)量、點(diǎn)擊率主要手段內(nèi)容可抓取性、結(jié)構(gòu)化信號Schema.org、llms.txt、sitemap/lastmod關(guān)鍵詞布局、外鏈建設(shè)、內(nèi)鏈結(jié)構(gòu)、頁面標(biāo)題與 meta 描述見效周期以周計實(shí)時檢索型引擎對內(nèi)容更新敏感以月計收錄與排名爬坡通常更慢一句話總結(jié)GEO 吃內(nèi)容質(zhì)量與實(shí)體信息SEO 吃鏈接與關(guān)鍵詞布局兩套動作別混著考核。誤區(qū)澄清與收尾排查收尾時運(yùn)營問得最多的那句是「怎么讓 GPTBot 多來抓我們」。我的回答是這個問題問錯了對象。訓(xùn)練型爬蟲來不來站點(diǎn)側(cè)可控的部分很少真正可控、且被日志數(shù)據(jù)驗(yàn)證有效的是把內(nèi)容做實(shí)、把死鏈清掉、把結(jié)構(gòu)化信號補(bǔ)齊然后等實(shí)時檢索型引擎在用戶問到相關(guān)問題時選中你。AI 搜索引用與 SEO 收錄是兩套邏輯前者吃內(nèi)容質(zhì)量與實(shí)體信息后者吃鏈接與關(guān)鍵詞布局兩套動作別混著考核。趨勢上判斷AI 爬蟲的識別與驗(yàn)證會越來越重要UA 可偽造正向 DNS 驗(yàn)證目前是工程上可行的鑒別手段各家引擎官方文檔也都公布了驗(yàn)證方法值得把流程固化下來。日志是站點(diǎn)側(cè)少有的能直接看到「AI 是否在讀取我」的窗口把它變成例行監(jiān)控比每次出問題再排查省心得多。如果你們站上也做過類似的 AI 爬蟲日志分析歡迎在評論區(qū)交流觀測數(shù)據(jù)——不同行業(yè)、不同站型的抓取畫像差異本身就是很有信息量的東西。參考與延伸OpenAI 官方爬蟲文檔GPTBot 等全部 UA 說明與 IP 驗(yàn)證方法https://platform.openai.com/docs/botsAnthropic 官方爬蟲與日志治理選項(xiàng)說明ClaudeBot 行為與控制https://support.anthropic.com/en/articles/8894996-governance-and-logging-options-for-anthropic-crawlers-and-modelsPerplexity 官方爬蟲指南PerplexityBot 抓取行為說明https://docs.perplexity.ai/guides/botsrobots.txt 標(biāo)準(zhǔn)寫法與歷史官方站點(diǎn)https://www.robotstxt.org/robotstxt.htmlAI 爬蟲日志、GPTBot、PerplexityBot、UA 反查、robots.txt、GEO、AI優(yōu)化AIO指南PerplexityBot 抓取行為說明https://docs.perplexity.ai/guides/botsrobots.txt 標(biāo)準(zhǔn)寫法與歷史官方站點(diǎn)https://www.robotstxt.org/robotstxt.htmlAI 爬蟲日志、GPTBot、PerplexityBot、UA 反查、robots.txt、GEO、AI優(yōu)化AIO