花生WIFI天猫百度图片加载失败问题技术
在上海挤地铁上班的人应该会经常连接花生WIFI,也许会发现一个问题,有些网站的图片加载不了,比如天猫,百度,一点资讯什么的。这个问题我一开始也觉得很奇怪,时间一长,就想了解到底是什么原因。
我开始求证,在电脑上调试天猫移动站点的图片,发现百度和天猫的图片在移动 UA 下使用的是 webp 后缀文件名,天猫的图片文件名里面含有感叹号逗号等一些非常规字符。webp 是谷歌研发的有损图片压缩格式,率先在 chrome 下得以支持,以 chrome 百分之十的市场份额以及谷歌的影响力,webp 算是在移动设备下都支持了,PC 下目前 Firefox 是不支持的。
想到几点可能性,其一,文件名不符合规范导致,但百度的图片路径一直中规中矩,怎么不能加载呢?而后面的结论也证明了不是这个问题;其二,花生 WIFI 的代理服务器不支持 webp 图片格式?这个倒是有点可能性;其三,被花生 WIFI 屏蔽了。
为了证明以上结论我下载了天猫加载失败的图片放到自己服务器上,保留原文件名和重命名后的新文件名分别测试。在花生地铁 WIFI 访问,能正常展示。webp 文件 http 响应头在我的 Apache 服务器上甚至没有被识别出 content type,一样能被展示,使用小米自带浏览器和欧朋 opera 浏览器分别测试正常。HTTP 响应头如下:
Accept-Ranges:bytes Content-Length:26620 Date:Fri, 18 Nov 2016 06:40:29 GMT ETag:"67fc-5418d65789943" Last-Modified:Fri, 18 Nov 2016 06:27:12 GMT Proxy-Connection:Keep-alive Server:Apache/2.4.7 (Ubuntu)
这之后我被弄晕了,到底什么原因?过了几天后,我突然想到用 VPN 测试下,看看是不是被屏蔽了。结果证明是花生 WIFI 屏蔽了百度和天猫的图片域名,在 VPN 下确实能够正常展示图片。有图为证。
上图是未连接 VPN 时的截图,下图是连接 VPN 后的截图。
被屏蔽的域名有 ss0.baidu.com img.alicdn.com 等。
其实花生 WIFI 这么做是好的,地铁人口密集,流量需求大,屏蔽一些常用网站的图片可以让更多的人上网。而对于爱上网的人来说,花点钱多买几个代理还是值得的。