机械化主机名匹配

时间:2016-07-17 23:03:30

标签: ruby ssl mechanize sni

我正在使用Mechanize来抓取网站,并且收到与主机名不匹配相关的错误。我发现问题的根源是在网站上使用的SNI我正在抓取,我想指定主机名以确保使用正确的证书。

这是我当前的设置:

agent = Mechanize.new
agent.user_agent = custom_user_agent
agent.verify_mode = OpenSSL::SSL::VERIFY_PEER

page = agent.get "website.com"

以下是我认为我需要添加的内容(或其他内容),以确保使用正确的证书:

OpenSSL::SSL::SSLSocket.hostname = "website.com"

在Mechanize中可以做到这一点,还是我需要弄清楚如何手动指定要使用的证书?

对于上下文,我了解VERIFY_NONE解决方案,但考虑到它引入的漏洞,我宁愿避免使用它。

1 个答案:

答案 0 :(得分:1)

您不需要指定主机名或使用Mechanize检查主机名。

Ruby的Net :: HTTP为你处理它:

https://github.com/ruby/ruby/blob/trunk/lib/net/http.rb#L928

如果主机名不匹配,将引发OpenSSL :: SSL :: SSLError异常。