2012-08-07 3 views
14

Je suis en train de faire ce qui suit:Ruby Mécaniser https erreur

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

Mais je ne reçois que cette exception:

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>' 

Comment puis-je obtenir la page Web pour charger Mechanize?

Répondre

27

Parfois, vous devez dire mécaniser utiliser 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" 

Notez que j'utilise OpenSSL :: SSL :: VERIFY_NONE. Cela signifie que vous êtes théoriquement vulnérable à l'attaque de l'homme du milieu, mais ce n'est pas quelque chose dont je m'inquiète généralement quand je gratte un site Web.

+0

Pourriez-vous me donner le lien de doc, d'où vous avez ceci? –

+1

Il pourrait ne pas être là, je pense que je l'ai remarqué lors de l'inspection des méthodes Mechanize # – pguardiario

+1

Une erreur similaire que j'ai reçu qui avait la même solution était: '~/.rvm/gems/ruby-1.9.3-p374/gems/net- http-persistant-2.8/lib/net/http/persistant/ssl_reuse.rb: 70: in \ 'connect ': SSL_connect retourné = 1 errno = 0 état = serveur de lecture SSLv2/v3 bonjour A: (null) (OpenSSL :: SSL :: SSLError) ' – miknight

Questions connexes