有没有办法检测远程网站是否支持SPDY以及它的版本?
我需要一个可以在命令行中使用的类似于bash脚本的东西。
尝试使用curl发送自定义User-Agent标头,但是无法获取任何有助于我的响应标头。
我的想法是能够获取任何域的SPDY:true/false Version:3.1/3.0 ...。
openssl s_client -connect google.com:443 -nextprotoneg ''
CONNECTED(00000003)
Protocols advertised by server: spdy/3.1, spdy/3, http/1.1
NPN和ALPN扩展都将协议列表作为字符串发送,例如http/1.1
或spdy/3
。
一旦选择协议,TLS握手将继续,然后双方将立即开始使用他们选择的协议进行通信。
因此,唯一了解协议协商的方法是使用TLS,并拥有公开协议协商扩展的客户端。每个客户端以特定方式执行此操作,但据我所知,暂不支持bash脚本。
例如,HAProxy支持NPN和ALPN(http://cbonte.github.io/haproxy-dconv/configuration-1.5.html),Jetty 9.2也支持NPN和ALPN(用于客户端和服务器)Jetty。
其他服务器(如Nginx或Apache)使用补丁支持NPN和ALPN(因为HTTP 2.0将需要这些)。
NPN最终将会消失;Google的Adam Langley已经声明,NPN将被ALPN取代。