rubyのスクレイピングツールmechanizeでhttps://test.comへ通信をしようとしたら以下のエラーが出ました。
1 2 3 4 5 6 7 8 9 10 11 12 |
$ ruby login-mechanize.rb C:/Ruby23-x64/lib/ruby/2.3.0/net/http.rb:933:in `connect_nonblock': SSL_connect returned=1 errno=0 state=error: certificate verify failed (OpenSSL::SSL::SSLError) from C:/Ruby23-x64/lib/ruby/2.3.0/net/http.rb:933:in `connect' from C:/Ruby23-x64/lib/ruby/2.3.0/net/http.rb:863:in `do_start' from C:/Ruby23-x64/lib/ruby/2.3.0/net/http.rb:858:in `start' from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/net-http-persistent-2.9.4/lib/net/http/persistent.rb:700:in `start' from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/net-http-persistent-2.9.4/lib/net/http/persistent.rb:631:in `connection_for' from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/net-http-persistent-2.9.4/lib/net/http/persistent.rb:994:in `request' from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/mechanize-2.7.5/lib/mechanize/http/agent.rb:274:in `fetch' from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/mechanize-2.7.5/lib/mechanize.rb:464:in `get' from login-8122-mechanize.rb:15:in `login' from login-8122-mechanize.rb:34:in `<main>' |
エラーとなったrubyのコードは以下↓
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
require 'mechanize' module Crawler class testtest def login agent = Mechanize.new # agent.verify_mode = OpenSSL::SSL::VERIFY_NONE agent.user_agent = 'Windows Mozilla' agent.get('https://test.com') do |page| # 何か処理をしようとした end end end end crawler = Crawler::testtest.new crawler.login |
windowsから動かしたのでwindowsにopensslを入れてみるやり方もやってみたが解消されず、他のやり方を探したところ以下のコードに変えたら出来ました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
require 'mechanize' module Crawler class testtest def login agent = Mechanize.new agent.verify_mode = OpenSSL::SSL::VERIFY_NONE # この行を追加 agent.user_agent = 'Windows Mozilla' agent.get('https://test.com') do |page| # 何か処理をしようとした end end end end crawler = Crawler::testtest.new crawler.login |
↑
verify_mode に OpenSSL::SSL::VERIFY_NONEを設定したら動いた。完