Google 表示可通过 robots.txt 阻止部分 JavaScript 资源
Google Says It’s Okay To Block Some JavaScript Resources With Robots.txt via @sejournal, @martinibuster
Google 的 John Mueller 表示,网站可使用 robots.txt 阻止 Googlebot 抓取并渲染访客必须看到的年龄验证弹窗。若弹窗来自外部域名,可在该域名的 robots.txt 中禁止抓取;若由网站自身特定 JavaScript 文件加载,也可单独屏蔽该文件。网站需确保被屏蔽资源未被抓取时页面仍能正常加载。
Google 的 John Mueller 回答了一个问题:网站访客必须看到年龄验证弹窗,那么阻止 Googlebot 将其编入索引是否可以。他的回答澄清了是否可以有意对 Googlebot 隐藏某些类型的内容,并解释了网站所有者可以如何操作。
关于隐藏年龄验证弹窗的问题
Google 要求发布者允许 Googlebot 抓取用户可能看到的所有内容,但过去并非一直如此。在 SEO 早期,曾有一段时间,SEO 从业者会阻止 Google 下载 JavaScript 和 CSS 文件,以优化抓取预算并促进更好的网站索引。
但后来 Google 开始渲染网页,随后要求网站所有者允许 Googlebot 下载用户能够看到的所有资源。一些继续阻止 Google 下载关键资源的网站,其排名曾暂时下降。
因此,关于是否可以阻止 Google 将弹窗编入索引的问题是合理的。
这位 SEO 从业者在 Reddit 上询问,是否可以使用 robots.txt 阻止 Googlebot 将网站依法必须向访客显示的年龄验证弹窗编入索引。
此人描述了一个假设网站:该网站通过 API 从单独的域名加载年龄验证弹窗。问题是,阻止 Googlebot 抓取这个外部域名是否会阻止弹窗被渲染。
他们问道:
“假设我有一个网站 websiteA.com——出于法律原因,它有一个位于单独域名上的年龄验证弹窗,并通过 API 插入页面。我们称这个域名为 verificationpopup.com
假设我想阻止 Google 看到它——如果我在 verificationpopup.com/robots.txt 中添加 disallow,这是否会阻止 Google 渲染这个弹窗?
(这完全是假设的情况,很抱歉这个问题很愚蠢,我对技术不太了解)”
Mueller 表示,阻止这个特定弹窗是可以的
Mueller 确认,使用 robots.txt 阻止 Googlebot 渲染年龄验证弹窗通常是可行的。他还建议了另一种方法,即阻止负责加载弹窗的 JavaScript 文件。
他回答道:
“通常可以。如果你使用一个特定的 JS 脚本文件来实现这一点,也可以通过 robots.txt 禁止抓取这个特定的 javascript 文件。(如果你只有一个 JS 文件负责执行许多操作,我不会这么做”
Mueller 的回应表明,至少对于这种年龄验证弹窗,Google 的算法可能不像过去那么严格。他的回答确认,网站所有者可以使用 robots.txt 阻止 Googlebot 渲染年龄验证弹窗,即使该弹窗会显示给网站访客。
几小时后,他回来进一步详细说明了实现这一目标的两种方法,并分别讨论了弹窗的两种加载方式,以及网站所有者可以控制哪些资源。
阻止 Googlebot 渲染弹窗的两种方法
Mueller 解释说,第一种方法是阻止 Googlebot 抓取提供年龄验证弹窗的外部域名。
在某个外部域是需要阻止的资源来源时,该外部域的 robots.txt 可以禁止抓取,Googlebot 将不会获取这些资源,因此也无法使用它们来渲染弹窗。Mueller 表示,这种情况在与广告相关的资源中很常见,例如负责展示广告的 JavaScript 文件被 robots.txt 阻止。
Mueller 解释道:
“具体说明这两个选项:
嵌入网站的内容被 robots.txt 阻止。如果你的网站嵌入了来自 verificationpopup-com 的内容(例如通过 iframe,或调用 verificationpopup-com 上的脚本等),而 verificationpopup-com 禁止所有抓取,那么遵循 robots.txt 的爬虫(例如 Googlebot)就不会获取该内容,也不会在渲染时使用它。
许多广告服务就是这样运作的。Googlebot 不会像抓取独立页面那样抓取这些 URL,但会在渲染过程中尝试获取它们;如果 robots.txt 阻止了访问,它就不会获取这些内容,也无法使用它们。你需要确保即使这些 URL 未被获取,你的页面仍能正常加载,但对于这种情况而言,通常不会有问题。
你的网站使用特定的 JS 文件来加载该内容,并且由你自己阻止了这个文件。例如,你可能使用一个名为“load-verification-popup.js”的文件来实现这一点。如果你在自己网站的 robots.txt 中阻止该页面,那么渲染期间就不会加载该脚本(被 robots.txt 阻止)。
根据我的经验,这种情况不太常见,但它是一种可行选项。如果你无法影响 verificationpopup-com 上的 robots.txt,而又希望阻止该内容在渲染期间显示或被使用,就需要采用这种方式。”
总而言之,第二种方法涉及阻止用于加载弹窗的 JavaScript 文件;该弹窗位于另一个域上,而在这个域上使用 robots.txt 并不是可行选项。
要点
Mueller 回答中有趣的一点是,他确认了一种可有意阻止 Googlebot 渲染年龄验证弹窗的方法,尽管人类访客必须看到该弹窗。
他还解释说,当 Googlebot 无法获取被阻止的资源时,网站仍必须继续正常加载。对于问题中所描述的年龄验证弹窗,他表示这通常不会造成问题。
总体而言,即使人类访客必须看到年龄验证弹窗,也可以使用 robots.txt 阻止 Googlebot 下载和渲染该弹窗。Mueller 的回答表明,网站所有者可以在一定程度上控制 Googlebot 在渲染期间使用哪些资源,包括访客体验中的组成部分。
特色图片:Shutterstock/TierneyMJ
来源:Search Engine Journal · searchenginejournal.com