AI 爬蟲讀得到由 JavaScript 呈現的內容嗎?
往往讀不到。Googlebot 會在稍後的步驟中渲染 JavaScript,但多數 AI 爬蟲並未說明會這麼做,Google 自己也指出並非所有機器人都能執行 JavaScript。如果你的文字要等腳本執行後才出現,AI 爬蟲收到的可能是空白頁面。請用伺服器端渲染或靜態頁面,把主要內容放進初始 HTML。
單頁應用程式與用戶端框架隨處可見,在瀏覽器裡看起來也都正常。但只讀取伺服器所送 HTML 的爬蟲看到的卻是另一回事:一個 <div id="root"></div>、幾個 script 標籤,幾乎沒有文字。對 AI 答案來說,這樣的頁面沒有任何可引用的內容。
本頁內容
AI 爬蟲為什麼會漏掉 JavaScript 內容?
執行 JavaScript 的成本很高。爬蟲得下載腳本、在瀏覽器引擎中執行,還要等資料載入。Google 在 Search 中就是這麼做的:先爬取、將頁面排入渲染佇列,並在資源允許時以無頭 Chromium 渲染。即便如此,Google 仍建議使用伺服器端渲染或預先渲染,因為這對使用者與爬蟲都更快,並指出並非所有機器人都能執行 JavaScript。
OpenAI、Anthropic 與 Perplexity 在爬蟲文件中都沒有說明其代理程式會執行 JavaScript。Apple 表示 Applebot 可能在瀏覽器中渲染頁面。在沒有明確說明的情況下,對 AI 爬蟲的穩妥假設是:它們只讀取初始 HTML。
如何檢查爬蟲收到什麼?
請看原始 HTML,而不是渲染後的頁面。瀏覽器開發者工具顯示的是腳本執行後的 DOM,那不是爬蟲拿到的內容。請使用檢視原始碼,或在命令列儲存原始 HTML 後搜尋:
curl -s -o page.html \
-A "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; GPTBot/1.4; +https://openai.com/gptbot" \
https://example.com/page
# Is a sentence from your main text in the raw HTML?
grep -c "a sentence from your main content" page.html
結果為 0,代表該句子不在伺服器所送的 HTML 中,因此不執行腳本的爬蟲也找不到它。看一眼檔案就能知道其餘情況:伺服器端渲染的文章,全文都在裡面;用戶端的空殼則只有一個空的根元素和一串腳本。
哪些頁面風險最高?
- 以 React、Vue、Angular 或 Svelte 建構、全部在瀏覽器中渲染的單頁應用程式。
- 載入後才從 API 取得主要文字的頁面,例如產品詳情、價格或評論。
- 位於分頁、手風琴或「載入更多」區段中、點擊後才請求的內容。
- 位於登入、付費牆或同意牆之後、爬蟲無法通過的頁面。
- 只透過 JavaScript 設定
noindex或 canonical 網址的頁面。Google 警告,當它在原始 HTML 中看到noindex時,可能完全略過渲染。
如何修正只靠 JavaScript 呈現的內容?
解決辦法是在第一次回應就送出重要內容。請選擇你的技術堆疊所允許的最輕量方式:
- 伺服器端渲染(SSR):Next.js、Nuxt、SvelteKit 與 Angular SSR 等框架會在伺服器上渲染頁面,再於瀏覽器中 hydrate。
- 靜態生成或預先渲染:對文章、文件和登陸頁等很少變動的頁面,在部署時就建置好 HTML。
- 漸進式增強:把文字、標題、連結、價格與 JSON-LD 放進 HTML,只用 JavaScript 處理互動。
- 把重要內容直接寫入:如果分頁隱藏了內容,就把全部內容放進 HTML,再用 CSS 或腳本切換顯示,而不是點擊時才去擷取。
你不必一次轉換整個應用程式。先從你希望被引用的頁面開始:文章、文件、產品與價格頁面。帳號區與儀表板可以維持在用戶端,因為它們本來就在登入之後。
避免依 user agent 為爬蟲提供與使用者不同的頁面。對所有人渲染相同的 HTML,維護起來更簡單,也能避免任何偽裝(cloaking)的疑慮。
登入、同意與付費牆畫面也會擋住 AI 爬蟲嗎?
會。爬蟲不會登入、不會點擊 cookie 橫幅,也不會解決驗證挑戰。Anthropic 表示其機器人不會嘗試繞過 CAPTCHA。如果同意管理工具在 HTML 中以全螢幕覆蓋層取代頁面,或把首次造訪者重新導向到同意頁面,爬蟲拿到的就是那些,而不是你的內容。
請確保公開頁面無論同意狀態為何,都會在 HTML 中呈現其內容,橫幅只是覆蓋層,而不是取代頁面。想被引用的頁面請放在登入牆之外,並確認爬蟲沒有被重新導向到登入頁面。
AISeeWhy 如何偵測只靠 JavaScript 的頁面?
AISeeWhy 會讀取各爬蟲收到的初始 HTML,而且不執行腳本。當頁面幾乎沒有可見文字,只有框架的根元素和腳本時,它會回報 P1 發現,指出內容需要 JavaScript。它也會標出把爬蟲導向別處(而非瀏覽器所得頁面)的重新導向。
常見問題
Googlebot 會渲染 JavaScript 嗎?
會。Google 先爬取 HTML,將頁面排入渲染佇列,並在資源允許時以無頭 Chromium 渲染。Google 仍然建議使用伺服器端渲染或預先渲染。
ChatGPT、Claude 與 Perplexity 的爬蟲會執行 JavaScript 嗎?
這些廠商的爬蟲文件並未說明。在廠商另有說明之前,請假設爬蟲只讀取初始 HTML,並確保你的內容就在其中。
針對機器人的動態渲染是個好主意嗎?
它可作為權宜之計,但會多出一條需要維護的渲染路徑。伺服器端渲染或靜態 HTML 對所有人提供相同的內容,是更簡單的長期解法。
由 JavaScript 加入的 JSON-LD 算數嗎?
Google 在渲染後可以讀取,但不執行腳本的爬蟲看不到。請把 JSON-LD 放在初始 HTML 中。
資料來源
- Google 搜尋中心:JavaScript SEO 基礎
- Apple:關於 Applebot
- OpenAI:OpenAI 爬蟲總覽
- Anthropic:Anthropic 會從網路爬取資料嗎?網站經營者如何封鎖爬蟲?
- Perplexity:Perplexity 爬蟲