最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

谷歌正式开源内部解析器与代码库,旨在推进形成 robots.txt 解析标准

  • 2019-07-02
  • 本文字数:834 字

    阅读完需:约 3 分钟

谷歌正式开源内部解析器与代码库,旨在推进形成robots.txt解析标准

机器人排除协议(REP)是一种标准,使网站所有者能够通过具有特定语法的简单文本文件来控制自动客户端(即爬虫)可以访问哪些 URL。它是我们所知道的互联网基本构建模块之一,也是搜索引擎运行的基础。


25 年来,机器人排除协议(REP)几乎成为了一种约定俗成的标准,但这有时会带来一些负面的影响,不同的开发者实现 robots.txt 的解析总是略有不同,很容易导致混乱。


一方面,对于网站管理员来说,这意味着在某些特殊情况下的不确定性,比如当他们的文本编辑器在 robots.txt 文件中包含 BOM 字符时。另一方面,对于爬虫和工具开发人员来说,也带来了不确定性,例如,它们应该如何处理几百兆字节的 robots.txt 文件?


今天,谷歌宣布:将通过发布一款 Google 内部使用的解析器和一套 C++库来解决这个问题。


开源项目地址:https://github.com/google/robotstxt


据称,这个库已经有 20 年的历史了,它包含了一些九十年代编写的代码,也包含了很多关于网站管理员如何编写 robots.txt 文件和必须处理的案例的知识。


该 C++库只对产品代码做了轻微修改(即一些内部 header 和等同的符号),Googlebot(Google 的抓取工具)使用它来根据 robots.txt 文件中网站管理员提供的规则确定可以访问的网址,可帮助开发人员构建更好地反映 Google robots.txt 解析和匹配的工具。


库中包含了一个二进制文件,用于针对用户代理和 URL 测试本地 robots.txt。运行包含的二进制文件需要:


  • 兼容的平台(例如 Windows,Mac OS X,Linux 等)。大多数平台都完全支持。

  • 兼容的 C ++编译器,至少支持 C ++ 11。大多数主要编译器都受到支持。

  • Git用于与源代码存储库交互。如要安装 Git,请参阅GitHub上的 Set Up Git指南 。

  • 虽然用户可以自由使用自己的构建系统,但本指南中的大多数文档都假设用户使用的是 Bazel。要下载和安装 Bazel(及其任何依赖项),请参阅 Bazel安装指南


此外,谷歌还在开源包中添加了一个测试工具,以帮助开发者测试一些规则。使用非常简单:


robots_main <robots.txt content> <user_agent> <url>
复制代码


2019-07-02 18:347785
用户头像
陈思 InfoQ编辑

发布了 576 篇内容, 共 262.6 次阅读, 收获喜欢 1293 次。

关注

评论

发布
暂无评论
发现更多内容

三点微服务标准化要素

阿泽🧸

微服务 6月月更

读《Software Systems Architecture》(15)—— Introduction to the Viewpoint Catalog

术子米德

架构师成长笔记

读《Software Systems Architecture》(22)—— The Operational Viewpoint

术子米德

架构师成长笔记

数仓开发人员的价值体现

奔向架构师

数据仓库 数据模型 6月月更

读《Software Systems Architecture》(17)—— The Functional Viewpoint

术子米德

架构师成长笔记

读《Software Systems Architecture》(21)—— The Deployment Viewpoint

术子米德

架构师成长笔记

读《Software Systems Architecture》(24)—— Introduction to the Perspective Catalog

术子米德

架构师成长笔记

读《Software Systems Architecture》(26)—— The Performance and Scalability Perspective

术子米德

架构师成长笔记

数据库每日一题---第13天:寻找病患

知心宝贝

数据库 云计算 前端 后端 6月月更

计算机网络之IP协议与以太网

未见花闻

6月月更

看板方法的定义、原则和实践

PingCode

读《Software Systems Architecture》(11)—— Using Styles and Patterns

术子米德

架构师成长笔记

在线JSON转TSV工具

入门小站

工具

读《Software Systems Architecture》(25)—— The Security Perspective

术子米德

架构师成长笔记

uni-app深入学习之模板运用【day4】

恒山其若陋兮

6月月更

读《Software Systems Architecture》(18)—— The Information Viewpoint

术子米德

架构师成长笔记

读《Software Systems Architecture》(20)—— The Development Viewpoint

术子米德

架构师成长笔记

在线文本保留中文提取过滤工具

入门小站

工具

接口测试使用Python装饰器

伤心的辣条

Python 程序人生 软件测试 自动化测试 接口测试

js中的变量提升和函数提升

北洋

android 6月月更

读《Software Systems Architecture》(12)—— Producing Architectural Models

术子米德

架构师成长笔记

读《Software Systems Architecture》(13)—— Creating the Architectural Description

术子米德

架构师成长笔记

GetX 状态管理从入门到入迷

岛上码农

flutter ios 前端 安卓 6月月更

linux之我常用的20条命令(之二)

入门小站

Linux

读《Software Systems Architecture》(19)—— The Concurrency Viewpoint

术子米德

架构师成长笔记

盘点攻防演练中红队的主要工具(下)

穿过生命散发芬芳

6月月更 攻防演练

GoLang简单易用的json value读取工具!还并发安全

Krysta

Go json 简单清楚 方便

读《Software Systems Architecture》(16)—— The Context Viewpoint

术子米德

架构师成长笔记

Java中检查字符串是否是有效日期

okokabcd

Java

读《Software Systems Architecture》(23)—— Archiving Consistency Across Views

术子米德

架构师成长笔记

读《Software Systems Architecture》(14)—— Evaluating the Architecture

术子米德

架构师成长笔记

谷歌正式开源内部解析器与代码库,旨在推进形成robots.txt解析标准_开源_陈思_InfoQ精选文章