谷歌SEO提醒:Robots.txt 无法阻止访问
谷歌的站长趋势分析师 Gary Illyes1 确认 robots.txt 无法保护网站免受未经授权的访问。
Google 的 Gary Illyes 证实了一个我们一直以来都默认的看法,就是 robots.txt 对爬虫的未经授权访问的控制力是有限的。Gary 随后讲述了所有 SEO 和网站所有者都应该知道的访问控制。
微软 Bing 的 Fabrice Canel2 在 Gary 的帖子下发表评论称,Bing遇到过一些网站尝试用 robots.txt 隐藏网站的一些敏感区域,但是很容易无意中将敏感 URL 暴露给了黑客,给了黑客可乘之机。
Canel 评论道:
原文:
“Indeed, we and other search engines frequently encounter issues with websites that directly expose private content and attempt to conceal the security problem using robots.txt.”
译文:
“确实,我们和其他搜索引擎经常遇到一些网站直接暴露私密内容,然后试图通过 robots.txt 来掩盖网站的一些安全问题。”
关于 Robots.txt 的一些争议
每次使用Robots.txt的时候,总会有人指出它无法阻止所有的爬虫程序,我就是其中一员。
在8月2号的时候,Gary本人同意这个观点:
原文:
“robots.txt can’t prevent unauthorized access to content”, a common argument popping up in discussions about robots.txt nowadays; yes, I paraphrased. This claim is true, however I don’t think anyone familiar with robots.txt has claimed otherwise.”
译文:
“robots.txt 无法阻止对内容的未经授权访问”,这是近年来在关于 robots.txt 的讨论中常见的论点;是的,我进行了转述。这个说法是对的,但我认为任何了解 robots.txt 的人都不会说它能阻止未经授权的访问。”
接下来,他深入解释了拦截爬虫的真正含义。他认为拦截爬虫的过程就是选择一种固有控制或让出控制权给网站的解决方案。他将其定义为访问请求(浏览器或爬虫)和服务器以多种方式响应。
他列举了控制的例子:
- robots.txt(由爬虫程序决定是否抓取)。
- 防火墙(WAF 又称 Web 应用程序防火墙 – 防火墙控制访问)
- 密码保护
如果你请求者需要访问权限,则需要某种方式来进行身份验证,防火墙可能基于 IP 进行身份验证,你的Web 服务器可能基于传递给其 SSL/TLS 客户端的证书进行身份验证,或者你的 CMS 可能基于用户名和密码,然后是 1P cookie3。但是robots.txt则是将访问资源的决定权交给请求者,其实并不安全,也不是我们大多数站长想要的。
使用合适的工具来保证网站安全
有很多方法可以阻止爬虫、黑客攻击程序、搜索爬虫、AI 用户代理和搜索爬虫的访问。除了阻止搜索爬虫之外,使用某种防火墙也是一个很好的解决方案,因为它们可以通过行为(如抓取频率)、IP 地址、用户代理和国家/地区等多种方式进行阻止。
典型的解决方案可以用服务器级别的 Fail2Ban、基于云的 Cloudflare WAF 或 WordPress 安全插件 Wordfence。
- Gary Illyes: 一名谷歌的站长趋势分析师(Webmaster Trends Analyst),专注于搜索引擎优化 (SEO) 和网站管理。他是谷歌团队的重要成员,经常出现在各类 SEO 和数字营销会议上,分享有关谷歌搜索算法和SEO实践的见解。Gary Illyes 的工作主要包括与站长进行交流,以帮助他们理解和遵循谷歌的搜索指南,从而提高网站的可见性和排名。 ↩︎
- Fabrice Canel:他是微软的搜索技术团队负责人,专注于 Bing 搜索引擎的技术和策略。他在搜索引擎优化(SEO)和网络爬虫技术方面具有深厚的专业背景,并且经常参与与搜索技术相关的讨论和演讲。他致力于提高搜索引擎的性能和准确性,并为网站管理员提供有关如何优化网站以提高搜索排名的建议。 ↩︎
- 1P cookie:第一方 cookie,是指由访问的网站(即第一方)设置的 cookie。通常用于存储用户的偏好设置、登录信息或其他与网站交互相关的数据。与第三方 cookie(由其他域设置的 cookie)不同,第一方 cookie 的使用和管理完全由网站本身控制。 ↩︎