指南 · JavaScript 渲染

AI 爬蟲會執行 JavaScript 嗎?

更新於 2026-11-04 · kagentx

簡答

大多數不會。Vercel 2024-12 的研究發現,OpenAI、Anthropic、Perplexity 的爬蟲不執行 JavaScript,只有 Apple 和 Google(Gemini)的會。正文靠腳本畫出來的網站,這些爬蟲讀到的幾乎是空頁面:kagentx 評測的 GammaSlide 首頁原始 HTML 只有 314 字,渲染後 18,630 字。用 curl 看原始 HTML,沒有正文就改成伺服器端渲染、建置時產生或預渲染。

AI 爬蟲會執行 JavaScript 嗎?

大多數不會。Vercel 在 2024-12 發表的研究《The rise of the AI crawler》分析了自家網路上的 AI 爬蟲流量,結論是:當時主要的 AI 爬蟲裡,OpenAI、Anthropic 和 Perplexity 的都不渲染 JavaScript,只有 Apple 和 Google 的會。

哪家爬蟲執行 JavaScript 嗎(Vercel,2024-12)
OpenAIGPTBot, OAI-SearchBot, ChatGPT-User不執行
AnthropicClaudeBot不執行
PerplexityPerplexityBot不執行
Common CrawlCCBot不執行
AppleApplebot執行(用瀏覽器式爬蟲渲染,和 Googlebot 類似)
GoogleGemini(经 Googlebot 的基础设施)執行(完整渲染)

Vercel 還發現一個細節:ChatGPT 和 Claude 的爬蟲會下載 JavaScript 檔案(分別占它們請求的 11.50% 和 23.84%),但不會執行。也就是說,它們看得到「有腳本」,看不到腳本畫出來的內容。

這份研究的限制要說清楚:資料來自 Vercel 的網路和 nextjs.org,時間是 2024 年底,之後各家可能改過。所以別只信這張表,用下面的方法在你自己的網站上測一遍。

這對我的網站意味著什麼?為什麼 ChatGPT 看不到我的 React 網站?

用 React、Vue 這類前端框架做的單頁應用,伺服器送出的 HTML 往往只是一個空殼,正文要等瀏覽器下載腳本、執行後才畫出來。不執行 JavaScript 的爬蟲只拿到那個空殼。你在瀏覽器裡看到完整的頁面,它讀到的卻幾乎沒有字。

使用者在 ChatGPT 裡請它開你的連結,或 ChatGPT 搜尋去讀你的頁面,讀到的都是這個空殼。正文和價格不在裡面,AI 就沒有東西可以引用。如果你的頁面是伺服器端渲染或建置時產生的,正文已經寫在 HTML 裡,這個問題就不存在。

真實網站的原始 HTML 和渲染後差多少?

kagentx 評測會取每個頁面的原始 HTML(不執行腳本)和瀏覽器渲染後的版本,比較各有多少字。下面是兩個真實評測的資料:GammaSlide 是 2026-10-26 評測的,MochiStamp 是 2026-10-22 評測的,是評測當天的樣子,不是改完以後。

網站頁面原始 HTML 字數渲染後字數倍數
GammaSlidegammaslide.com/31418,63059.3×
GammaSlidegammaslide.com/ja/20011,14655.7×
GammaSlidegammaslide.com/zh-hans/1557,38147.6×
MochiStampmochistamp.com/8,7909,6251.1×
MochiStampmochistamp.com/en/16,91218,4871.1×
MochiStampmochistamp.com/zh-hant/6,5537,2581.1×

GammaSlide 首頁的原始 HTML 只有 314 字,渲染後有 18,630 字,一個不執行 JavaScript 的爬蟲能讀到的不到 2%。MochiStamp 的原始 HTML 本身就有 8,790 字,渲染後 9,625 字,差得不多:正文已經在 HTML 裡。

這只說明兩個網站交給不執行腳本的爬蟲的內容有多少,不說明哪個網站被 AI 推薦得多。想看完整的評測資料,見 GammaSlide 案例 和 MochiStamp 案例。

怎麼確認我的網站有沒有這個問題?

  1. 1. 用 curl 看原始 HTML

    在終端機跑下面這行,把引號裡換成你首頁上的一句正文。輸出 0,就是這句話要等 JavaScript 才會出現:

    curl -s https://your-site.com/ | grep -c "a sentence from your homepage"

    把首頁、價格頁、功能頁、一篇文章頁都測一遍。價格和功能最容易被做成前端渲染。

  2. 2. 估一下原始 HTML 有多少字

    下面這行把標籤去掉後數詞。結果和瀏覽器裡的頁面差幾十倍,就是有問題(這是粗略估計,腳本裡的文字也會被數進去):

    curl -s https://your-site.com/ | sed -e 's/<[^>]*>/ /g' | wc -w
  3. 3. 在瀏覽器裡關掉 JavaScript

    在 Chrome 開發人員工具裡按 Cmd+Shift+P(Windows 是 Ctrl+Shift+P),輸入 Disable JavaScript,按 Enter 後重新整理頁面。頁面變成空白或只剩載入提示,爬蟲讀到的就是這個樣子。測完記得再打開。

  4. 4. 對比「檢視網頁原始碼」和「檢查」

    在頁面上按右鍵選「檢視網頁原始碼」,看到的是原始 HTML;「檢查」看到的是渲染後的頁面。正文只在後者裡,就是前端渲染。

  5. 5. 確認爬蟲沒有被擋

    正文直出還不夠,爬蟲還得進得來。用 AI 爬蟲檢查 看 robots.txt 對各個 AI 爬蟲是放行還是擋住,怎麼改見 AI 爬蟲的 robots.txt 怎麼寫。

怎麼修?

目標只有一個:讓爬蟲拿到的第一份 HTML 裡就有正文和價格。常見做法依改動從小到大排列:

做法是什麼適合
建置時產生(SSG)建置時就把每個頁面渲染成 HTML 檔案,部署的是現成的 HTML。內容不常變的頁面:首頁、價格、功能、部落格、文件。
伺服器端渲染(SSR)每次請求時伺服器先渲染好 HTML 再送出,瀏覽器拿到後再接手互動。內容隨使用者或資料即時變化的頁面。
預渲染現有的單頁應用不換框架,在建置時用無頭瀏覽器把關鍵路由渲染成靜態 HTML。已有大量前端程式碼、暫時換不了框架的專案。

Next.js、Nuxt、Astro、SvelteKit 這類框架都內建了前兩種做法。就算不是全站,先把對外要被找到的幾頁(首頁、價格、功能、每個產品頁)改掉,就已經解決大部分問題。

改完要留意兩點。第一,只在 HTML 裡放骨架、正文仍靠 API 在瀏覽器裡填進去,爬蟲看到的依然是空的。第二,別在 robots.txt 裡擋 JavaScript 和 CSS 檔案:Apple 的文件說,這兩類檔案被擋時,Applebot 可能無法正常渲染頁面。改完回到第一步的 curl 再測一遍。

頁面直出之後,下一步是讓 AI 引用你。見 為什麼 ChatGPT 不推薦我的產品,或者照 AI 能見度稽核清單 逐項自查。有開發者文件的網站也可以考慮 llms.txt 是什麼。

常見問題

ChatGPT 看不到我的 React 網站,是真的嗎?

Vercel 2024-12 的研究裡,OpenAI 的 GPTBot、OAI-SearchBot、ChatGPT-User 都不渲染 JavaScript。如果你的正文要等腳本才出現,它們讀到的就是空殼。你的網站有沒有這個問題,用 curl 看原始 HTML 一測就知道。

Google 能抓到我的頁面,AI 爬蟲就能嗎?

不一定。Googlebot 會渲染 JavaScript,Gemini 用它的基礎設施,所以 Google 那邊看得到;但 OpenAI、Anthropic、Perplexity 的爬蟲在 Vercel 的研究裡不渲染。Google 收錄了你,不代表 ChatGPT 也讀得到。

加個「載入中」的骨架畫面夠不夠?

不夠。骨架畫面是 HTML 裡的佔位,不是正文。爬蟲要的是文字:產品是什麼、給誰用、多少錢。這些要在第一份 HTML 裡就有。

這項研究現在還準嗎?

Vercel 的資料是 2024 年底的,來自它自己的網路。各家爬蟲之後可能改過,我們沒有更新的同類研究可引用。所以要用 curl 和關掉 JavaScript 在自己的網站上實測。

是不是整個網站都要改成伺服器端渲染?

不用。先改對外要被找到的頁面:首頁、價格、功能、產品頁和文章。登入後的後台之類不需要被爬蟲讀到,可以繼續用前端渲染。

出處

kagentx

爬蟲讀到的,
和你想的一樣嗎?

評測會取你頁面的原始 HTML 和渲染後的版本做對比,再把買家的問題拿去問 ChatGPT、Perplexity、Claude(開聯網搜尋),記下推薦了誰、引用了哪些網頁。基礎版 $1,一般 2–3 分鐘出結果。