2012-08-07 186 views
14

我試圖做到以下幾點:紅寶石機械化HTTPS錯誤

page = Mechanize.new.get "https://sis-app.sph.harvard.edu:9030/prod/bwckschd.p_disp_dyn_sched" 

但我只得到此異常:

OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv2/v3 read server hello A: sslv3 alert illegal parameter 
    from /Users/amosng/.rvm/gems/ruby-1.9.3-p194/gems/net-http-persistent-2.7/lib/net/http/persistent/ssl_reuse.rb:70:in `connect' 
    from /Users/amosng/.rvm/gems/ruby-1.9.3-p194/gems/net-http-persistent-2.7/lib/net/http/persistent/ssl_reuse.rb:70:in `block in connect' 
    from /Users/amosng/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/timeout.rb:54:in `timeout' 
    from /Users/amosng/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/timeout.rb:99:in `timeout' 
    from /Users/amosng/.rvm/gems/ruby-1.9.3-p194/gems/net-http-persistent-2.7/lib/net/http/persistent/ssl_reuse.rb:70:in `connect' 
    from /Users/amosng/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/net/http.rb:755:in `do_start' 
    from /Users/amosng/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/net/http.rb:750:in `start' 
    from /Users/amosng/.rvm/gems/ruby-1.9.3-p194/gems/net-http-persistent-2.7/lib/net/http/persistent.rb:511:in `connection_for' 
    from /Users/amosng/.rvm/gems/ruby-1.9.3-p194/gems/net-http-persistent-2.7/lib/net/http/persistent.rb:806:in `request' 
    from /Users/amosng/.rvm/gems/ruby-1.9.3-p194/gems/mechanize-2.5.1/lib/mechanize/http/agent.rb:258:in `fetch' 
    from /Users/amosng/.rvm/gems/ruby-1.9.3-p194/gems/mechanize-2.5.1/lib/mechanize.rb:407:in `get' 
    from (irb):549 
    from /Users/amosng/.rvm/rubies/ruby-1.9.3-p194/bin/irb:16:in `<main>' 

我怎樣才能獲得網頁在機械化加載?

回答

27

有時你需要告訴機械化使用SSLV3:

page = Mechanize.new{|a| a.ssl_version, a.verify_mode = 'SSLv3', OpenSSL::SSL::VERIFY_NONE}.get "https://sis-app.sph.harvard.edu:9030/prod/bwckschd.p_disp_dyn_sched" 

請注意,我使用OpenSSL :: SSL :: VERIFY_NONE。這意味着你在理論上容易受到中間人攻擊,但這並不是我通常在抓取網站時擔心的事情。

+0

你能給我的文檔鏈接,你從哪裏得到這個? – 2013-01-21 18:49:14

+1

它可能不在那裏,我想我在檢查Mechanize#方法時注意到了它 – pguardiario 2013-01-22 00:04:34

+1

我收到的一個類似的錯誤具有相同的解決方案:'〜/ .rvm/gems/ruby​​-1.9.3-p374/gems/net- http-persistent-2.8/lib/net/http/persistent/ssl_reuse.rb:70:在'connect'中:SSL_connect返回= 1 errno = 0 state = SSLv2/v3讀取服務器hello A:(null)(OpenSSL :: SSL :: SSLError)' – miknight 2013-01-28 12:21:48