过滤函数在“元数据”和“数据”阶段运行,以根据函数及其属性指定的具体条件来允许或拒绝资源。在 filter.conf 文件的“枚举”和“生成”过滤器中均可使用这些函数。
每个 filter-by 函数执行一次比较,然后允许或拒绝资源。允许资源表示继续进行下一过滤步骤。拒绝资源则表示应停止处理过程,因为资源不符合进行进一步枚举或生成的条件。
如果 allow/deny 字符串与信息源完全匹配,则 filter-by-exact 函数将允许或拒绝资源。关键字 all 表示与任意字符串匹配。
信息源
包含字符串
以下示例将过滤出 content-type 为 text/plain 的所有资源。它允许其他所有资源继续进行以后的处理:
Data fn=filter-by-exact src=type deny=text/plain
如果指定信息源的值小于或等于给定值,则 filter-by-max 函数将允许该资源。如果信息源的值大于指定值,则会拒绝该资源。
每个过滤器只能调用一次此函数。
filter-by-max 函数列出与 filter-by-max 函数一起使用的属性。
信息源:主机、对象或深度
指定用于比较的值
本示例允许 content-length 小于 1024 KB 的资源:
MetaData fn-filter-by-max src=content-length value=1024
filter-by-md5 函数只允许第一个含有给定的 MD5 校验和值的资源。如果此 robot 在较早的资源中看到当前资源的 MD5,则拒绝当前资源。该功能可防止相同资源或有多个 URL 的单个资源发生重复。
只能在“数据”阶段或之后调用此函数。每个过滤器只能调用一次此函数。过滤器必须调用 generate-md5 函数来生成 MD5 校验和,然后才能调用 filter-by-md5。
无
以下示例显示处理 MD5 校验和的典型方法,即首先生成校验和,然后根据它进行过滤:
Data fn=generate-md5
Data fn=filter-by-md5
如果提供的信息源以指定的字符串前缀开始,则 filter-by-prefix 函数将允许或拒绝资源。资源无须完全匹配。关键字 all 表示与任意字符串匹配。
信息源
包含用于进行前缀比较的字符串
以下示例允许 content-type 为任何文本类型(包括 text/html 和 text/plain)的资源:
MetaData fn=filter-by-prefix src=type allow=text
filter-by-regex 函数支持正则表达式模式匹配。它允许与给定正则表达式匹配的资源。支持的正则表达式语法由 POSIX.1 规范定义。正则表达式 \\\\* 表示匹配任意项目。
信息源
包含正则表达式字符串
以下示例拒绝来自 .gov 域站点的所有资源:
MetaData fn=filter-by-regex src=host deny=\\\\*.gov
filterrules-process 函数处理 filterrules.conf 文件中的站点定义和过滤器规则。
无
MetaData fn=filterrules-process