2012-04-04 16 views
11

Używam Hpricot i OpenURI do analizowania stron internetowych i wyciągania z nich adresów URL.open-uri nie rediruje http: https

Kiedy otrzymuję link taki jak "http: rapidshare.com", nie przekierowuje on na https. Jest to błąd mam:

/home/leonidus/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/open-uri.rb:216:in 
`open_loop': redirection forbidden: http:.................=>  
https:......................... 
. 
. 

Próbowałem użyć obsługi wyjątku OPENURI::HTTPREDIRECT ale potem znowu jestem coraz ten sam błąd. Próbowałem wszystkich blogów, ale nie zostało to również rozstrzygnięte.

+3

https://github.com/jaimeiniesta/open_uri_redirections. łatka zapakowana jako klejnot. –

+0

Gem 'open_uri_redirections' pracował dla mnie. Gracias Jaime! –

Odpowiedz

13

Zapoznaj się z informacjami na temat tego, dlaczego ten problem występuje w artykule this Ruby bug report. Zobacz this gist dla łatki małpy na OpenURI, aby umożliwić "niebezpieczne" przekierowania.

+0

Błąd w klejnocie spinacza. Masz jakiś pomysł, czy został on naprawiony w dowolnej wersji? –

+0

"Zaktualizowany przez Yusuke Endoh ponad rok temu - Tracker zmienił się z Bug na Feature" – ZirconCode

+0

To stara odpowiedź, ale warto powiedzieć: powodem, dla którego jest to niebezpieczne, jest to, że wszystkie żądania za pośrednictwem HTTP mają mało prawdopodobną cynfolię, ale nadal technicznie możliwe szansa na modyfikację podczas lotu. Poprawianie kodu w celu umożliwienia niebezpiecznego przekierowania wprowadza problem bezpieczeństwa, gdy właściwy kurs ma używać https: // zawsze w każdej niezaufanej sieci i patrzeć na http: // z podejrzeniami i skutkami zubażającymi prywatność. – Barry

Powiązane problemy