我一直在尝试让 Discourse 完全为 Googlebot 提供 JS 应用程序——进展非常顺利。
在 @pfaffman 的帮助下,通过在 rails 控制台中执行以下代码,我能够在使用 Chrome 并将用户代理伪装成 Googlebot 或 Googlebot 智能手机时显示 JS 应用程序。
SiteSetting.non_crawler_user_agents="trident|webkit|gecko|chrome|safari|msie|opera|goanna|discourse" + 'rss|bot|spider|crawler|facebook|archive|wayback|ping|monitor|lighthouse'
但是,当我在Google 移动友好测试工具(或 Google 搜索控制台中的网址检查)中进行测试时,它会显示一个空白屏幕截图,其中包含以下 HTML:
必应也类似,但必应会显示内容。我认为必应显示内容是因为它的爬虫不是“移动”的。相关帖子在此,由 @sam 发布。
根据 @david 和这篇帖子的说法,“功能检测”似乎是罪魁祸首。
我谨慎乐观地认为有一个简单的解决方法。在使用该工具的 10-20 次尝试中,Googlebot 会正确渲染应用程序。
我的理论是,由于 Googlebot 以不下载页面上的所有资源而闻名,因此该特定的 JS(包含功能检测并导致回退)未被加载,因此页面看起来不错。
所以总而言之,如何禁用 Googlebot 的功能检测(或者如果更容易,禁用所有爬虫/机器人)?
编辑 只是以防万一我的术语有误,当 Meta 上提到“功能检测”时,它指的是浏览器检测吗?(也许使用像 browser-detect.js 这样的文件和其他依赖项)
或者“功能检测”是 Discourse 在尝试了解访问应用程序的技术时所做的行为的宽泛说法?








