ChatGPT 和 Claude 看得到我以 JavaScript 建置的網站嗎?
只看得到已經存在於伺服器傳回之 HTML 中的文字。Vercel 在 2024 年 12 月的一項網路數據研究發現,OpenAI、Anthropic 與 Perplexity 的爬蟲會下載 JavaScript 檔案,但不會執行它們。如果您的頁面是在瀏覽器中建置的(許多 React 與 AI 建置的網站都是如此),這些爬蟲看到的幾乎是一張空白頁面。
重點事實
- Vercel 於 2024 年 12 月 17 日表示,主要的 AI 爬蟲都不會執行 JavaScript,包括 GPTBot、OAI-SearchBot、ChatGPT-User、ClaudeBot 與 PerplexityBot。 (Vercel:AI 爬蟲的崛起(2024 年 12 月))
- 同一研究發現,使用 Googlebot 基礎架構的 Gemini,以及 AppleBot,都會執行 JavaScript。 (Vercel:AI 爬蟲的崛起(2024 年 12 月))
- 在 Vercel 網路上的一個月中,ChatGPT 的爬蟲有 11.50% 的請求抓取了 JavaScript 檔案,Claude 則為 23.84%,但兩者都沒有執行這些檔案。 (Vercel:AI 爬蟲的崛起(2024 年 12 月))
- OpenAI 表示,封鎖 OAI-SearchBot 的網站不會出現在 ChatGPT 搜尋的回答中,因此該爬蟲讀取的頁面,就是 ChatGPT 能引用的頁面。 (OpenAI: Overview of OpenAI crawlers)
- 在 Next.js App Router 中,版面配置與頁面預設為 Server Components,並會在伺服器上預先渲染為 HTML。 (Next.js 文件:Server 與 Client Components)
我如何測試 AI 爬蟲能否讀取我的網站?
以爬蟲的方式擷取頁面,不使用瀏覽器,並在結果中尋找頁面的主要文字。如果價格、標題或答案不在其中,AI 爬蟲也就看不到它們。
# What an AI crawler receives: the raw HTML, no JavaScript run curl -s -A "GPTBot" https://www.example.com/pricing | grep -i "your price or headline" # Nothing found? The text only exists after JavaScript runs.
哪些類型的網站有這個問題?
內容是在頁面載入後,由瀏覽器中的 JavaScript 產生的網站:
- 使用 React、Vue 或 Angular 搭配 Vite 建置、沒有伺服器渲染的單頁應用程式
- 由 AI 應用程式建置工具產生、交付客戶端渲染應用程式的網站
- 在首次繪製後才從 API 載入文字的頁面
- 選單與連結是由點擊處理函式組成,而不是真正的 <a href> 連結
每種架構的修正方法是什麼?
修正方法是在第一個 HTML 回應中,就送出已完成的文字。
| 架構 | 該請 AI 程式代理做什麼 |
|---|---|
| Next.js App Router | 讓頁面維持為 Server Components;只有互動部分以 "use client" 標記 |
| 使用 Vite 的 React 或 Vue | 在建置時把公開頁面預先渲染為靜態 HTML,或改用支援伺服器渲染的框架 |
| 從 API 載入的內容 | 在伺服器或建置時擷取,而不是在 useEffect 中擷取 |
| 任何框架 | 真正的 <a href> 連結、sitemap.xml,以及不需點擊即可見的文字 |
Google 也有同樣的問題嗎?
較少:Google 的爬蟲會執行 JavaScript,因此 Google 搜尋與 Gemini 能看到在瀏覽器中產生的文字,只是比純 HTML 晚一些。真正只讀取原始 HTML 的,是 ChatGPT、Claude 與 Perplexity。
easyIndex 如何檢查這一點?
easyIndex 會像 AI 爬蟲一樣,自行讀取每個已發布的頁面,不執行 JavaScript。您的 AI 程式代理建置的頁面,只有在線上網站的原始 HTML 中出現經過稽核的文字時,才算完成。
逐步操作
- 測試重點頁面. 對首頁、價格頁與主要服務頁執行 curl 測試,並搜尋各頁的主要文字。
- 找出文字在哪裡產生. 請您的 AI 程式代理列出哪些頁面在瀏覽器中呈現內容,以及原因。
- 把文字移到伺服器端. 請代理把這些頁面改為伺服器渲染或靜態預先渲染,只在必要處保留互動功能。
- 修正連結與 sitemap. 讓每個內部連結都是真正的 <a href>,並把每個公開頁面列入 sitemap.xml。
- 在線上網站重新測試. 部署後重複執行 curl 測試;文字必須出現在原始 HTML 中。
常見錯誤
- 在瀏覽器中檢查頁面(瀏覽器會執行 JavaScript),就以為爬蟲看到的也一樣。
- 首頁已在伺服器渲染,但價格與服務頁仍在瀏覽器渲染。
- 修正渲染時無意間在 robots.txt 或 CDN 中封鎖了 AI 爬蟲。
- 框架本來就已在伺服器渲染,卻還付費購買預先渲染的額外服務。
easyIndex 如何解決
您的 AI 程式代理透過 MCP 的引導,在您的程式碼儲存庫中修正渲染;easyIndex 則像 AI 爬蟲一樣,在不執行 JavaScript 的情況下即時讀取每個頁面,然後記錄哪些頁面真的被 AI 爬蟲讀取。每個網站每月 US$30,並提供 7 天免費試用。
常見問題
Next.js 網站預設就是安全的嗎?
大多是安全的:App Router 的頁面預設在伺服器渲染,但在 Client Component 中載入後才抓取的文字,對 AI 爬蟲來說仍然看不見。
llms.txt 檔案能解決 JavaScript 的問題嗎?
不能。它只是一個簡短的文字檔;頁面本身仍需要把文字放在 HTML 中,爬蟲才能讀取並引用。
AI 爬蟲以後會開始執行 JavaScript 嗎?
沒有人能確定。在 2024 年 12 月的研究中它們並未執行,而最安全的做法是把文字放在 HTML 中。
這會影響從 ChatGPT 來的訪客嗎?
不會。人們是用會執行 JavaScript 的一般瀏覽器開啟您的網站;問題只在於爬蟲在引用您之前讀到的內容。
延伸閱讀
- easyIndex 如何運作?我需要準備什麼?多久會有成效?
- easyIndex 費用多少?
- 有哪些 AI 檢索器?我要如何在 robots.txt 中允許它們?
- llms.txt 有效嗎?
- 要如何用 Claude Code 或 Codex 做 GEO?
- Cloudflare 是否擋住了我網站上的 ChatGPT 與其他 AI 爬蟲?
最後驗證日期 .