同事在检查Apache日志的时候发现这种情况:名为“Chrome Privacy Preserving Prefetch Proxy”的爬虫最近总是来访问https://example.com/.well-known/traffic-advice 这个路径,返回404或者403状态码,我去网上搜了一下,找到一些资料:
- Chrome Developer Blog: Private prefetch proxy in Chrome
- GitHub - Private Prefetch Proxy Explained: Traffic Advice
- Traffic Advice - A Collection of Interesting Ideas
- Traffic Advice: How to Configure Apache or Nginx for Chrome Privacy Preserving Prefetch Proxy
- What is .well-known/traffic-advice directory?
原来这是新版本Chrome浏览器的网站内容预取功能,在Google搜索或者其它网站中告诉浏览器即将可能去到的链接,Chrome浏览器就去提前抓取链接的内容,当用户真的去访问的时候,就可以马上打开了,不需要等待,可以大幅提升LCP和用户体验。
下图摘录自谷歌开发者博客官网,说明了Google搜索结果页排名靠前的网站预取的过程:
作为网站管理员,可以在自己的网站中放置一个/.well-known/traffic-advice 文件来告诉Chrome浏览器是否支持预取,这对我们这种以匿名用户浏览为主的网站来说,应该是允许的,并且为了用户体验以及SEO效果,也应该欢迎和支持这种预取的做法。
如果不设置这个文件,Chrome浏览器就按照它自己的规定去做,至于它自己如何规定我们也不是非常了解,那就干脆也设置一个这种文件吧,明确告诉Chrome浏览器或者Google预取爬虫我们是支持的。
设置的办法还比较简单,在网站的根目录下的.well-known子目录下放置一个traffic-advice文件,其内容如下:
[ { "user_agent": "prefetch-proxy", "google_prefetch_proxy_eap": { "fraction": 1 } } ]
要注意的是,这个文件的MIME类型需要是application/trafficadvice+json,以免混淆,可以在Apache配置文件中设置:
RewriteRule "^/.well-known/traffic-advice$" - [T=application/trafficadvice+json,END]
我们有的Web服务器还在用Apache 2.3,这样设置没有生效,摸索了一番,后来这样设置成功的:
<IfModule rewrite_module> RewriteRule "^/\.well-known/traffic-advice.*$" - [L] </IfModule> <Location /.well-known/traffic-advice> ForceType application/trafficadvice+json </Location>
如果是Nginx参考上面链接中的用法。
评论