AI 爬蟲會執行 JavaScript 嗎?
大多數不會。Vercel 在 2024-12 發表的研究《The rise of the AI crawler》分析了自家網路上的 AI 爬蟲流量,結論是:當時主要的 AI 爬蟲裡,OpenAI、Anthropic 和 Perplexity 的都不渲染 JavaScript,只有 Apple 和 Google 的會。
| 哪家 | 爬蟲 | 執行 JavaScript 嗎(Vercel,2024-12) |
|---|---|---|
| OpenAI | GPTBot, OAI-SearchBot, ChatGPT-User | 不執行 |
| Anthropic | ClaudeBot | 不執行 |
| Perplexity | PerplexityBot | 不執行 |
| Common Crawl | CCBot | 不執行 |
| Apple | Applebot | 執行(用瀏覽器式爬蟲渲染,和 Googlebot 類似) |
| Gemini(经 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 字數 | 渲染後字數 | 倍數 |
|---|---|---|---|---|
| GammaSlide | gammaslide.com/ | 314 | 18,630 | 59.3× |
| GammaSlide | gammaslide.com/ja/ | 200 | 11,146 | 55.7× |
| GammaSlide | gammaslide.com/zh-hans/ | 155 | 7,381 | 47.6× |
| MochiStamp | mochistamp.com/ | 8,790 | 9,625 | 1.1× |
| MochiStamp | mochistamp.com/en/ | 16,912 | 18,487 | 1.1× |
| MochiStamp | mochistamp.com/zh-hant/ | 6,553 | 7,258 | 1.1× |
GammaSlide 首頁的原始 HTML 只有 314 字,渲染後有 18,630 字,一個不執行 JavaScript 的爬蟲能讀到的不到 2%。MochiStamp 的原始 HTML 本身就有 8,790 字,渲染後 9,625 字,差得不多:正文已經在 HTML 裡。
這只說明兩個網站交給不執行腳本的爬蟲的內容有多少,不說明哪個網站被 AI 推薦得多。想看完整的評測資料,見 GammaSlide 案例 和 MochiStamp 案例。
怎麼確認我的網站有沒有這個問題?
1. 用 curl 看原始 HTML
在終端機跑下面這行,把引號裡換成你首頁上的一句正文。輸出 0,就是這句話要等 JavaScript 才會出現:
curl -s https://your-site.com/ | grep -c "a sentence from your homepage"
把首頁、價格頁、功能頁、一篇文章頁都測一遍。價格和功能最容易被做成前端渲染。
2. 估一下原始 HTML 有多少字
下面這行把標籤去掉後數詞。結果和瀏覽器裡的頁面差幾十倍,就是有問題(這是粗略估計,腳本裡的文字也會被數進去):
curl -s https://your-site.com/ | sed -e 's/<[^>]*>/ /g' | wc -w
3. 在瀏覽器裡關掉 JavaScript
在 Chrome 開發人員工具裡按 Cmd+Shift+P(Windows 是 Ctrl+Shift+P),輸入 Disable JavaScript,按 Enter 後重新整理頁面。頁面變成空白或只剩載入提示,爬蟲讀到的就是這個樣子。測完記得再打開。
4. 對比「檢視網頁原始碼」和「檢查」
在頁面上按右鍵選「檢視網頁原始碼」,看到的是原始 HTML;「檢查」看到的是渲染後的頁面。正文只在後者裡,就是前端渲染。
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 在自己的網站上實測。
是不是整個網站都要改成伺服器端渲染?
不用。先改對外要被找到的頁面:首頁、價格、功能、產品頁和文章。登入後的後台之類不需要被爬蟲讀到,可以繼續用前端渲染。
出處
- Vercel · The rise of the AI crawler (2024-12 發表,2026-11-04 核對原文)
- Apple · About Applebot (查看於 2026-11-04)
- OpenAI · Overview of OpenAI Crawlers (查看於 2026-11-04)
- kagentx 評測:案例頁的資料,日期寫在每個例子裡。