在 Squid 中匹配 User-Agent
针对已声明的客户端标识使用 req_header ACL,并把访问规则放在更宽泛的放行之前。
User-Agent ACL 匹配客户端在 HTTP 请求中携带的标识。在 Squid 7 配置中,可以用 req_header 对测试客户端进行分类:
acl legacy_probe req_header User-Agent -i ^LegacyProbe/
http_access deny legacy_probe
该示例匹配以 LegacyProbe/ 开头的标头,且不区分大小写。请把该模式替换为预期的客户端标识。这个表达式是正则表达式,而不是查询浏览器产品名。
把拒绝规则放在任何本已放行该请求的更宽访问规则之前。保留代理现有的客户端和目标控制,并围绕这条定向规则生效。
像 Mozilla 这样的宽泛前缀会匹配许多不同浏览器。决定兼容性或测试策略应当多窄时,请使用客户端实际发送的标头。
该标头由客户端控制,它可以更改或省略。这条规则只是对声称的标识进行分类,并不是强应用身份。它也只作用于 Squid 能检查的 HTTP 报文,而不作用于普通 CONNECT 隧道内加密的网站标头。