rubyのスクレイピングツールmechanizeでhttps://test.comへ通信をしようとしたら以下のエラーが出ました。
$ 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のコードは以下↓
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を入れてみるやり方もやってみたが解消されず、他のやり方を探したところ以下のコードに変えたら出来ました。
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を設定したら動いた。完
