解决Google Page Speed Insight重定向警告:排除爬虫触发JS重定向
解决爬虫/Google Bot触发语言重定向导致Page Speed警告的问题
你的脚本目前会根据浏览器语言自动重定向非印尼语用户,但爬虫(如Google Bot、PageSpeed Insight检测工具)访问时也会触发重定向,导致PageSpeed给出警告。以下是修改后的代码,添加了爬虫识别逻辑,确保脚本仅对真实用户执行:
// 检测是否为爬虫/机器人 function isBot() { const userAgent = navigator.userAgent.toLowerCase(); // 匹配常见爬虫的User Agent特征 const botKeywords = [ 'googlebot', 'bingbot', 'slurp', 'duckduckbot', 'baiduspider', 'yandexbot', 'sogou', 'exabot', 'facebot', 'ia_archiver', 'pagespeed', 'chrome-lighthouse' ]; return botKeywords.some(keyword => userAgent.includes(keyword)); } // 如果是爬虫,直接终止脚本执行 if (isBot()) return; // Mendeteksi bahasa browser pengguna var userLanguage = navigator.language || navigator.userLanguage; // Mendapatkan preferensi bahasa pengguna dari localStorage var preferredLanguage = localStorage.getItem('preferredLanguage'); // Mendapatkan timestamp terakhir dari redirect var lastRedirectTime = localStorage.getItem('lastRedirectTime'); var currentTime = new Date().getTime(); var oneDay = 24 * 60 * 60 * 1000; // Waktu dalam milidetik untuk 24 jam // Fungsi untuk melakukan redirect dengan pengecekan waktu function redirectIfNeeded(url) { if (!lastRedirectTime || currentTime - lastRedirectTime > oneDay) { localStorage.setItem('lastRedirectTime', currentTime); window.location.href = url; } } // Jika tidak ada preferensi bahasa yang disimpan di localStorage if (!preferredLanguage) { // Jika bahasa pengguna bukan bahasa Indonesia ('id') if (userLanguage !== 'id') { // Redirect ke halaman bahasa Inggris dengan pengecekan waktu redirectIfNeeded("https://www.my-website.com/en"); } } else { // Jika preferensi bahasa adalah bahasa Indonesia ('id') if (preferredLanguage === 'id') { // Redirect ke halaman bahasa Indonesia window.location.href = "https://www.my-website.com"; } } // Fungsi untuk mengubah bahasa ke bahasa Indonesia dan menyimpan preferensi di localStorage function changeToIndonesian() { localStorage.setItem('preferredLanguage', 'id'); window.location.href = "https://www.my-website.com"; } // Fungsi untuk mengubah bahasa ke bahasa Inggris dan menyimpan preferensi di localStorage function changeToEnglish() { localStorage.setItem('preferredLanguage', 'en'); window.location.href = "https://www.my-website/en"; }
关键说明:
- 爬虫识别函数
isBot():通过检查浏览器的userAgent字段,匹配常见爬虫的特征关键词,覆盖Google Bot、PageSpeed Insight、各大搜索引擎爬虫等场景。 - 前置判断逻辑:脚本开头先执行
isBot()检测,若判定为爬虫则直接终止后续代码,避免触发重定向。 - 原有功能保留:真实用户访问时,脚本仍按原有逻辑执行语言检测和重定向,不影响用户体验。
内容的提问来源于stack exchange,提问作者Yohanes Christian
相关产品推荐
相关产品推荐

