捲起袖子動手做 SEO Part’s 3 - 來自 Google 的動態渲染工具 Rendertron for SEO
先前提到
現今的動態網站,廣泛的應用到 Javascript 及 Ajax 相關技術,但這些技術對 Google 搜尋引擎的爬蟲並不是這麼的友善,從Google 官方文件指南得知,Google 爬蟲是非常了解 HTML 結構,但在爬取 Javascript 及 Ajax 時仍會有問題,如果要提昇對 Google 爬蟲的友善度,Google 還是建議將內容指向 Html。
那麼 Rendertron
Rendertron 是 Google Chrome 團隊 利用 node js 及 Puppeteer 所開發的專案,可以用來解決任何 搜尋引擎無法爬取的動態網站內容。
但進階的情境,虛擬列表及 Lazy load ,及更細部的瀏覽器操作,並不支援,但有開放源原始碼,且蠻好改的,可以自己擴充。
Rendertron 運作原理
網頁服務器,依據搜尋引擎BOT的 useragent,將請求轉向 自己架設的 rendertron server ,此時rendertron,有cache 就會使用 cache ,沒有 cache 就會去和啟動 Puppeteer 爬蟲去將網站爬回來。
模擬 google bot 訪問您的網站
https://render-tron.appspot.com/render/您的網站
https://render-tron.appspot.com/render/https://www.letgo.com.tw/
輸入欲渲染的網址
此時己將渲染完的網站回傳給用戶端
接著,我們來下載及啟動 rendertron 服務
// 下載原始碼
git clone https://github.com/GoogleChrome/rendertron.git
// 安裝相關模塊
npm install
// 編譯程式碼
npm run build
// 執行服務
npm run start
配置設定 ngix 設定,將常見搜尋引擎爬蟲的請求轉向 Rendertron 渲染主機
location / {
try_files $uri @prerender;
}
location @prerender {
set $prerender 0;
if ($http_user_agent ~* "googlebot|yahoo|bingbot|baiduspider|yandex|yeti|yodaobot|gigabot|ia_archiver|facebookexternalhit|twitterbot|developers\.google\.com") {
set $prerender 1;
}
if ($args ~ "_escaped_fragment_|prerender=1") {
set $prerender 1;
}
if ($http_user_agent ~ "Prerender") {
set $prerender 0;
}
if ($prerender = 1) {
rewrite .* /render/$scheme://$host$request_uri? break;
proxy_pass http://localhost:3000; #You can use our own hosted Rendertron
}
if ($prerender = 0) {
rewrite .* /index.html break;
}
}