我想要构建一个脚本的某种类型,可以判断一个网站是否使用https。
以编程方式确定这一点的方法是什么?我尝试访问我自己的一个域,我知道它没有https,但是服务器仍然给了我200段代码(至少根据我使用的Chrome扩展)。
是否有某种错误,我可以捕捉,或其他一些信息,将是一致的网站?
发布于 2015-03-06 17:26:59
从理论上讲,应该由您预先知道是否应该使用HTTPS。我的意思是,用户对某些站点使用HTTPS有一定的判断。在现实世界中,当你走进你的银行和走进一家咖啡店时,你通常会有不同的安全期望。一般情况下,你不会像给你的银行家那样,向酒吧后面的人提供同样的细节。在网络上也是如此。
也就是说,您确实可以测试是否可以建立到某个网站的HTTPS连接。问题是,无法建立这种联系可能意味着以下几点:
许多站点将尝试通过重定向将您从HTTP升级到HTTPS,以使用户意识到HTTPS是可用的,并希望在下次访问该站点时让他们期待它。有些站点甚至会使用HTTP严格传输安全(HSTS)来迫使您下次访问该站点时记住升级。这是一个合理的妥协,如果你可以假设你的第一个连接是没有缓和的。
以编程方式确定这一点的方法是什么?我尝试访问我自己的一个域,我知道其中一个域没有https,但是服务器仍然给了我200个代码。
如果您的域没有有效的证书,那么证书验证就会失败,并且您应该无法获得任何HTTP状态代码作为响应。
我猜想您所使用的脚本没有进行任何证书验证,而且可能这些域指向共享主机环境,其中具有相同IP地址的其他服务都启用了HTTPS。
您至少应该确保脚本正确地验证证书:
并非所有SSL/TLS库都默认启用了此功能(特别是第二点)。
我不确定您在脚本中使用了什么,或者您提到的扩展名是做什么的。例如,如果您使用的是curl
,请确保您没有使用-k
或--insecure
,并且您使用的是wget
,请确保您没有使用--no-check-certificate
。如果您使用的是libcurl
,您应该确保自己是适当地。如果您使用的不是其他实现,请在其他实现中寻找类似的选项,并且不要忽略浏览器警告。
发布于 2015-03-06 15:45:20
在Windows上,您可以使用免费基础版HttpWatch及其自动化接口编写访问要测试的站点的程序。
误差性质 on Entry类允许您检测HTTP失败的情况。
https://stackoverflow.com/questions/28909015
复制相似问题