Mechanize 收到“Errno::ECONNRESET:连接由对等方重置 - SSL_connect”

2024-04-28

我无法让 Mechanize 加载曾经正常工作的页面——它确实失败了,并显示Errno: ECONNRESET: Connection reset by peer - SSL_connect信息。关于我应该尝试什么或我应该查看的细节有什么建议吗? (请参阅下面的“我尝试过的方法”...)

Update 1

从中得到暗示相关的 S.O.邮政 https://stackoverflow.com/questions/12443258/ssl-connect-error-when-accessing-shopify-api-with-rubygem,我尝试直接访问该网站Net::HTTP。当我设置http.ssl_version = :TLSv1,我得到一个重定向而不是一个错误(应该是这样)。所以我的问题变成:如何配置 Net::HTTP 的底层ssl_version内部参数Mechanize?

谢谢...

症状:

$ rails console
>> a = Mechanize.new
=> #<Mechanize:0x007fd26789b8e0 ...>
>> p = a.get("http://sce.com")
# (...after a long pause...)
Errno::ECONNRESET: Connection reset by peer - SSL_connect
from /sandbox/usr/lib/ruby/2.0.0/net/http.rb:918:in `connect'
from /sandbox/usr/lib/ruby/2.0.0/net/http.rb:918:in `block in connect'
from /sandbox/usr/lib/ruby/2.0.0/timeout.rb:52:in `timeout'
from /sandbox/usr/lib/ruby/2.0.0/net/http.rb:918:in `connect'
from /sandbox/usr/lib/ruby/2.0.0/net/http.rb:862:in `do_start'
from /sandbox/usr/lib/ruby/2.0.0/net/http.rb:857:in `start'
from /sandbox/usr/lib/ruby/gems/2.0.0/gems/net-http-persistent-2.9/lib/net/http/persistent.rb:691:in `start'
from /sandbox/usr/lib/ruby/gems/2.0.0/gems/net-http-persistent-2.9/lib/net/http/persistent.rb:631:in `connection_for'
    ...
from /sandbox/usr/lib/ruby/gems/2.0.0/gems/mechanize-2.7.2/lib/mechanize/http/agent.rb:257:in `fetch'
from /sandbox/usr/lib/ruby/gems/2.0.0/gems/mechanize-2.7.2/lib/mechanize/http/agent.rb:974:in `response_redirect'
from /sandbox/usr/lib/ruby/gems/2.0.0/gems/mechanize-2.7.2/lib/mechanize/http/agent.rb:298:in `fetch'
from /sandbox/usr/lib/ruby/gems/2.0.0/gems/mechanize-2.7.2/lib/mechanize.rb:432:in `get'
from (irb):3

环境:

$ rake about
About your application's environment
Ruby version              2.0.0 (x86_64-darwin12.4.0)
RubyGems version          2.1.9
Rack version              1.5
Rails version             4.0.0
JavaScript Runtime        JavaScriptCore
Active Record version     4.0.0
Action Pack version       4.0.0
Action Mailer version     4.0.0
Active Support version    4.0.0
Middleware                ActionDispatch::Static, Rack::Lock, #<ActiveSupport::Cache::Strategy::LocalCache::Middleware:0x007ffd423c50e0>, Rack::Runtime, Rack::MethodOverride, ActionDispatch::RequestId, Rails::Rack::Logger, ActionDispatch::ShowExceptions, ActionDispatch::DebugExceptions, ActionDispatch::RemoteIp, ActionDispatch::Reloader, ActionDispatch::Callbacks, ActiveRecord::Migration::CheckPending, ActiveRecord::ConnectionAdapters::ConnectionManagement, ActiveRecord::QueryCache, ActionDispatch::Cookies, ActionDispatch::Session::CookieStore, ActionDispatch::Flash, ActionDispatch::ParamsParser, Rack::Head, Rack::ConditionalGet, Rack::ETag
Application root          /Users/me/MyProject
Environment               development
Database adapter          postgresql
Database schema version   20131017201057

$ openssl version
OpenSSL 1.0.1e 11 Feb 2013

$ system_profiler -detailLevel mini SPSoftwareDataType

System Software Overview:

  System Version: OS X 10.8.5 (12F45)
  Kernel Version: Darwin 12.5.0
  Time since boot: 8 days 7:40

我尝试过的:

  • 我已经在 Firefox Web 浏览器中尝试了相同的 URL。有用。
  • 我已经明确设置了机械化request_headers完全模仿 Firefox 浏览器。不用找了。
  • 我已经更新了我的ssl/cert.pem文件(第二次),如中所述这个S.O帖子 https://stackoverflow.com/questions/19150017/ssl-error-when-installing-rubygems-unable-to-pull-data-from-https-rubygems-o。不用找了。
  • 我尝试过不同的网站:www.pge.com and www.sdge.com。两者都有效。有一些不一样的地方www.sce.com site.

Net::HTTP 成功

这是 Net::HTTP 工作的示例:

$ irb
>> require 'net/https'
=> true
>> require 'uri'
=> false
>> uri = URI.parse("https://www.sce.com/")
=> #<URI::HTTPS:0x007facab8f6ba0 URL:https://www.sce.com/>
>> http = Net::HTTP.new(uri.host, uri.port)
=> #<Net::HTTP www.sce.com:443 open=false>
>> http.use_ssl = true
=> true
>> http.ssl_version = :TLSv1     # <= this line makes all the difference
=> :TLSv1
>> r = http.start { |agent| p agent.get(uri.path) }
=> #<Net::HTTPFound 302 Found readbody=true>
>> r.to_hash
=> {"content-language"=>["en-US"], "date"=>["Fri, 18 Oct 2013 01:00:07 GMT"], "location"=>["https://www.sce.com/wps/portal/home/!ut/p/b1/04_Sj9CPykssy0xPLMnMz0vMAfGjzOIt3Q1cPbz8DTzdQwKNDTyNAw38gh0djQ0MzIAKIoEKDHAARwNC-sP1o8BK8Jjg55Gfm6pfkBthoOuoqAgAgIrzaA!!/dl4/d5/L2dBISEvZ0FBIS9nQSEh/"], "p3p"=>["CP=\"NON CUR OTPi OUR NOR UNI\""], "server"=>["IBM_HTTP_Server"], "transfer-encoding"=>["chunked"], "x-powered-by"=>["Servlet/3.0"], "set-cookie"=>["PD_STATEFUL_d55ece64-8d9a-11e2-84a1-0050560010d6=%2Fwps; Path=/", "session_www=740796608.47873.0000; path=/"]}

Mechanize 邮件列表中的人们友好地提供了答案:

agent = Mechanize.new do |a|
  a.ssl_version = :TLSv1
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mechanize 收到“Errno::ECONNRESET:连接由对等方重置 - SSL_connect” 的相关文章

  • .NET 中非常奇怪的 SSL 错误:仅针对特定 URL 无法解密指定数据

    我正在使用 NET 从 URL 下载数据 对于大多数 URL 它都没有问题 但对于一个特定的 URL 当我尝试建立连接时 我收到一个非常奇怪的错误 此外 该错误仅在第二次 及后续 尝试发出请求时发生 第一次似乎总是有效 这是一些演示该问题的
  • OpenSSL 真的需要 openssl.conf 的路径吗?

    我想在 PHP 5 x 中创建自签名证书 使用我自己的 替代 openssl 配置 该配置应该由我的 PHP 代码定义 PHP 脚本将在不同的环境 共享托管网络服务器 上运行 官方PHP手册 http php net manual en f
  • 无法访问 GitLab:SSL 证书已过期

    在 Visual Studio 中 我尝试从 GitLab 上的存储库中提取一些更改 但它给了我一个错误 Git 因致命错误而失败 无法访问https gitlab git SSL证书问题 证书已过期 如何生成新证书并将其添加到 VS 中
  • 使用 AAACertificateServices 证书的域示例

    如何找到根证书为的域AAA证书服务 https support sectigo com Com KnowledgeDetailPage Id kA03l00000117cL 请注意 这是 Comodo 证书 为了准备一个其证书即将更改的依赖
  • Rails 4 带有 link_to 和带有强参数的方法 post

    我陷入了一个不可能那么复杂的问题 但我只是没有把事情做好 假设我有两个模型 class Notification lt ActiveRecord Base belongs to device validates number presenc
  • 如何显示证书的主题备用名称?

    我发现的最接近的答案是使用 grep gt openssl x509 text noout in cert pem grep DNS 有更好的方法吗 我只喜欢命令行 Thanks 较新版本的 openssl 有一个 ext 选项 允许您仅打
  • 什么是 boost::asio::ssl::context::load_verify_file 以及如何使用它?

    有一个谨慎的小量 boost asio ssl http en wikipedia org wiki Transport Layer Security小型 C 在线教育代码库 甚至更少boost asio ssl context load
  • Ember:error.messages 在保存时不显示服务器错误

    当尝试创建新记录时 errors messages不渲染为文档中描述 http emberjs com api data classes DS Errors html 也就是说 控制台确实呈现了错误Error The backend rej
  • Rails has_many 通过带有附加属性的表单

    我正在尝试创建一个表单 允许用户向活动添加 编辑 删除位置 我目前找到的所有例子要么是HABTM表单 不允许编辑存在于表单中的附加属性 has many through配置 或仅列出现有关系 下面的图片显示了我想要完成的任务 该列表将显示每
  • Nitrous.IO 上的 HTTPS (TLS/SSL) 服务器

    请问如何在 Nitrous IO Boxes 上创建 TLS 服务器 我认为我至少必须获得 cert pem 和 key pem 或类似的东西 根据您所在的区域 您可以自动获得 SSL 身份验证 这样就够了吗 http help nitro
  • 没有 ssl 的 Web 加密 API

    我编写了一个用于安全消息传输的小网络应用程序 以了解有关加密的更多信息 并想向我的朋友展示它并让他们玩一下 所以我将它托管在我的小服务器上 并惊讶地发现 Web Crypto API 我竭尽全力开始工作 因为它的错误消息不是很具体 需要 S
  • 如何在 IIS 中将 WCF 与 basichttpbinding only、SSL 和基本身份验证结合使用?

    是否可以仅使用 IIS 中的 SSL 和基本身份验证来设置 WCF 服务BasicHttpBinding binding 我无法使用wsHttpBinding binding 该站点托管在 IIS 7 上 并设置了以下身份验证 匿名访问 O
  • OpenSSL 未签名证书静默

    遇到了麻烦 还有其他一些相关的帖子 但没有那么具体 我正在尝试为开发机器默默地生成证书 这些是我最初运行的命令 但被要求输入密码 openssl genrsa des3 out server key 1024 openssl req new
  • “未知 ca”,具有自行生成的 CA、证书和客户端/服务器

    我正在编写一个自定义客户端和服务器 我想通过公共互联网安全地进行通信 因此我想使用 OpenSSL 并让两端进行对等验证 以确保我的客户端不会被 MITM 误导 同样未经授权的客户端无法连接到服务器 这是在 SSL connect SSL
  • SMTP:无法连接套接字:无法找到套接字传输“ssl”

    我一直在尝试在 WAMP 上使用 Pear 发送电子邮件通过 GMail 花了几个小时将其全部设置并找出我遇到的所有错误后 我以为我已经很接近了 直到我开始收到此错误 Failed to connect to ssl smtp gmail
  • 解密 TLS 1.2 AES-GCM 数据包

    我正在开发一个 Java 程序来解密TLS 1 2正在使用的会话TLS RSA WITH AES 128 GCM SHA256密码 我使用wireshark 录制了一个测试会话 这大师秘密是已知的 No Time Protocol Leng
  • 如何为数据源指定特定区域的ACM证书?

    我已经为两个区域 ap northeast 1 和 us east 1 的同一域颁发了 2 个证书 因为我的主服务器位于 ap northeast 1 而 CloudFront 需要 us east 1 中的证书 我想在 us east 1
  • Java 密钥库 - 以编程方式从密钥库文件中选择要使用的证书

    我有一个 java 密钥库文件 其中包含多个客户端证书 我希望在 Java 应用程序中仅选择其中一个证书来连接到服务 有没有一种简单的方法可以做到这一点 到目前为止 我找到解决方案的唯一方法是使用原始密钥库文件中的客户端证书详细信息 通过其
  • Golang:如何在HTTP客户端的TLS配置中指定证书

    我有一个证书文件 该位置是 usr abc my crt我想将该证书用于我的 tls 配置 以便我的 http 客户端在与其他服务器通信时使用该证书 我当前的代码如下 mTLSConfig tls Config CipherSuites u
  • 在 Rails 中,我可以通过委托方法订购查询吗?

    我在通过委托方法订购查询时遇到困难 我的任务是帮助将一个相当大的 Rails 3 应用程序升级到 Rails 4 我在索引操作中遇到了这个查询 我知道这些对象的命名是可怕且令人困惑的 measurements controller rb d

随机推荐